Ode45 extra parameters
조회 수: 1 (최근 30일)
이전 댓글 표시
I would like to solve some equations with ode45.
The function is this:
function [ y_punto ] = bicicletta(t,y,a,b,u,delta,Ca,Cp,Iz,Fd)
v = y(1);
r = y(2);
alfaa = atan((v+a*r)/u)-delta;
alfap = atan((v-b*r)/u);
Fya = -Ca*alfaa;
Fyp = -Cp*alfap;
if (t>=tdon && t<=tdoff)
Fyad=Fd;
else
Fyad=0;
end
v_punto = 1/m*(Fya*cos(delta)+Fyp+Fyad)-ru;
r_punto = 1/Iz*(Fya*cos(delta)*a+Fyad*a-Fyp*b);
y_punto = [v_punto;r_punto];
end
Here is the script for starting simulation
clc
clear
a = 0.78;
b = 0.83;
Ca = 27537.5;
Cp = 27537.5;
Iz = 408.9;
u = 15*1000/3600;
delta = 5 * pi/180;
Fd = 100;
tf=5;
tspan = [0 tf];
y0 = [0;0];
[t,y] = ode45(bicicletta,tspan,y0);
The fact is that I need to pass extra parameters to the function. I don't know if I can define the function in this way
function [ y_punto ] = bicicletta(y)
and pass other parameters in another way for example declaring as global.
I did some search and I found this way of using ode45 but it gives me error
[t,y] = ode45(@(t,y)bicicletta(t,y,a,b,u,delta,Ca,Cp,Iz),tspan,y0);
댓글 수: 2
Stephen23
2016년 3월 19일
편집: Stephen23
2016년 3월 19일
Your last line of code, where you create an anonymous function:
ode45(@(t,y)bicicletta(t,y,a,b,u,delta,Ca,Cp,Iz),tspan,y0);
is the correct approach to passing extra arguments. Please show us the complete error message (this means all of the red text).
Do not use globals: this is a slow and buggy way to write code.
Stephen23
2016년 3월 21일
편집: Stephen23
2016년 3월 21일
Here his the error
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in simulazione (line 18)
[t,y] = ode45(@(t,y)bicicletta(t,y,a,b,u,delta,Ca,Cp,Iz),tspan,y0);
I attached also the scripts
채택된 답변
Star Strider
2016년 3월 19일
You have to define ‘tdon’ and ‘tdoff’ in your ‘bicicletta’ ODE function. I have no idea what you want to do, so I cannot correct that for you.
댓글 수: 6
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!