ODE45

조회 수: 4 (최근 30일)
kelly
kelly 2011년 4월 9일
Is it necessary to define the function in the function window or can I define it directly in the command window?
Also, I don't understand what the errors mean. My original funcion was 2y'''-6y''+4y'+y=sin(t) , y''(0)=0, y'(0)=0, y(0)=1. (I converted my ode to its canonical form)
>> y=-0.5*y1-2*y2+3*y3+0.5*y4; >> t0=0; >> tf=10; >> y1=1; >> y2=0; >> y3=0; >> y4=.5; >> y0=[y1,y2,y3,y4]; >> yprime=-.5*y1-2*y2+3*y3+.5*y4; >> [T,Y]=ode45('yprime',t0,tf,y0) Warning: Obsolete syntax. Use ode45(fun,tspan,y0,...) instead. > In funfun\private\odearguments at 42 In ode45 at 173 ??? Error using ==> feval Undefined function or method 'yprime' for input arguments of type 'double'.
Error in ==> odearguments at 110 f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173 [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

답변 (1개)

Matt Tearle
Matt Tearle 2011년 4월 9일
You do not have to write a function file, but you do have to define a function. You've defined y1 to y4 as numeric variables, then calculated yprime from them. Hence yprime is just a number, which is why ode45 reports that it can't find a function yprime.
Unless you want to mess with anonymous function handles, I suggest writing the equations in a function file.

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by