24小时热门版块排行榜    

查看: 1297  |  回复: 1

linshaojie

新虫 (初入文坛)

[交流] 【求助】如何在matlab中用ode解这个微分方程组? 已有1人参与

我最近正在计算这个lic方程组
dy1/dx=y2*y3
dy2/dx=-y1*y3
dy3/dx=-0.5y1*y2
dy4/dx=4y2*y4
初始值是y1(0)=1;y2(0)=0.26;y3(0)=1e-9;y4(0)=1e-15;
考虑使用ode45函数,
tspan=linspace(x0,xf,45000);
[T,Y]=ode45('lic',tspan,[y1 y2 y3 y4]);
可是运行出来之后提示错误,
??? Error using ==> lic
Too many input arguments.
Error in ==> funfun\private\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, ...
Error in ==> figure1 at 25
    [T,Y]=ode45('lic',tspan,[y1 y2 y3 y4]);


我明白是因为输入初值过多。
可是我该怎么改,才能运行?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

photons

至尊木虫 (职业作家)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+3):谢谢参与应助! 2010-06-24 10:32:08
我给出了一些初始条件下的解,你可以自己修改初始条件。另外你方程中的x0.xf没有给定,系统如何知道呢!?

function ydot=DyDt(x,y)
ydot=[y(2)*y(3);-y(1)*y(3);-0.5*y(1)*y(2);4*y(2)*y(4)];


>> clear all
>> y0=[1;0.26;0;0];
>> tspan=[0,5];
>> [xx,yy]=ode45(@DyDt,tspan,y0);
>> plot(xx,yy(:,1),'b-',xx,yy(:,2),'r*',xx,yy(:,3),'ks',xx,yy(:,4),'g--')
>> legend('y_{1}','y_{2}','y_{3}','y_{4}')
>> grid on

希望多多认识些科研达人!
2楼2010-06-24 02:05:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 linshaojie 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见