Help with ODE45
26 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Steven Lord
il 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 Commenti
Vedere anche
Categorie
Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!