Help with ODE45
34 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
here is my function that i need to solve with ODE45
function fun1=y(x)
alfaf=-12;
alfap=-6;
pi=180;
Kte=23.76;
Kfe=32.23;
Kre=0;
Betaa=21.38;
c=0.075;
r=0.8;
Fic=31.3;
Tavs=320.76;
hteta=(r-sqrt(c*c+r*r-2*c*r*cosd(x-asind((c/r)*sind(pi-x)))));
Ktc=((Tavs/sind(Fic))*(cosd(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))-atand(tand(atand(tand(alfaf)*cosd(x)+tand(alfap)*sind(x)))*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))))+tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))*tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))*sind(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))))/sqrt(((cosd(Fic+atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))-atand(tand(atand(tand(alfaf)*cosd(x)+tand(alfap)*sind(x)))*cosd(1i)))^2)+((tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))^2)*((sind(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))))^2))));
hteta=(r-sqrt(c*c+r*r-2*c*r*cosd(x-asind((c/r)*sind(pi-x)))));
Ktc=((Tavs/sind(Fic))*(cosd(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))-atand(tand(atand(tand(alfaf)*cosd(x)+tand(alfap)*sind(x)))*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))))+tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))*tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x)))*sind(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))))/sqrt(((cosd(Fic+atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))-atand(tand(atand(tand(alfaf)*cosd(x)+tand(alfap)*sind(psir)))*cosd(1i)))^2)+((tand(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))^2)*((sind(atand(tand(Betaa)*cosd(atand(tand(alfap)*cosd(x)+tand(alfaf)*sind(x))))))^2))));
y=(Ktc*hteta+Kte)*r;
end
end my ODE code
clc
clear all
close all
c=0.075;
r=0.8;
x0=0;
xf=180-acosd(c/(2*r));
xspan=[x0 xf];
[y,x]=ode45('fun1',xspan,x0);
here the error i got
Error using fun1
Too many input arguments.
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 Untitled4 (line 9)
[y,x]=ode45('fun1',xspan,x0);
please help!!
0 Kommentare
Antworten (1)
Steven Lord
am 6 Nov. 2017
"The function dydt = odefun(t,y), for a scalar t and a column vector y, must return a column vector dydt of data type single or double that corresponds to f(t,y). odefun must accept both input arguments, t and y, even if one of the arguments is not used in the function."
Your function only accepts one input argument and so is not valid as the first input for ode45.
I also recommend you pass the function in as a function handle @fun1 rather than as the char vector 'fun1'.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!