声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1785|回复: 4

[编程技巧] ODE迭代和循环

[复制链接]
发表于 2009-4-28 10:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求解下列方程,在matlab中用ode45求解时,总是报错,不知道怎么回事?

function dy=umodel(t,y,id,Y)
dy=zeros(2,1);
u=1.65; I=0.005; g=0.05; N=size(Y); N=N(1);
if id==1
    J=g*(Y(id+1,1,:)-Y(id,1,:));
elseif id==N
    J=g*(Y(id-1,1,:)-Y(id,1,:));
else
    J=g*(Y(id+1,1,:)+Y(id-1,1,:)-2*Y(id,1,:));
end

dy(1)=-y(2)-u*(y(1).^2).*(y(1)-3/2)+I+J;
dy(2)=-y(2)+u*(y(1).^2);


迭代时用的语句
N=30; tspan=0:0.02:200;
Y=zeros(N,2,length(tspan)); T=zeros(N,length(tspan));

for i=1:30
     [t,y] = ode45(@(t,y) umodel(t,y,i,Y),tspan,[0.5 0]);
     T(i), Y(i,:)=y;
end


[ 本帖最后由 ChaChing 于 2009-5-5 14:16 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2009-4-28 10:36 | 显示全部楼层

回复 楼主 chenwenjuan86 的帖子

matlab给的提示:
??? In an assignment  A(:) = B, the number of elements in A and B
must be the same.

Error in ==> umodel at 19
dy(1)=-y(2)-u*(y(1).^2).*(y(1)-3/2)+I+J;

Error in ==> run>@(t,y)umodel(t,y,i,Y)

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, ...

Error in ==> mymodel at 7
     [t,y] = ode45(@(t,y) umodel(t,y,i,Y),tspan,[0.5 0]);

Error in ==> run at 57
          evalin('caller', [s ';']);


[ 本帖最后由 ChaChing 于 2009-5-5 14:19 编辑 ]
 楼主| 发表于 2009-5-5 11:34 | 显示全部楼层

回复 沙发 chenwenjuan86 的帖子

:@( 有没有人帮忙看一下啊 1.jpg
2.jpg

[ 本帖最后由 chenwenjuan86 于 2009-5-5 11:42 编辑 ]
 楼主| 发表于 2009-5-5 19:09 | 显示全部楼层

回复 板凳 chenwenjuan86 的帖子

:@Q  还是没有高人指点一下吗?
发表于 2009-5-5 23:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 06:55 , Processed in 0.060304 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表