声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1228|回复: 4

[综合讨论] 微分方程的出错求助!看了半天也没看出来,新手

[复制链接]
发表于 2011-3-10 10:40 | 显示全部楼层 |阅读模式

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

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

x
%主程序
m=70;k=20;a1=1;a2=1;g=10;
y0=[-30;0];
%t0=0;tf=100;tol=1e-6;
tspan=[0 100];
[t,y]=ode45(@stu1,tspan,y0);
x1=50.-y(:,1);
plot(t,x1);grid
plot(t,y(:,1));grid
%函数
function dy=stu1(t,y)
m=70;k=20;a1=1;a2=1;g=10;y0=[-30;0];
x=y(1)
x_dot=y(2);
if x>0
       dy=[0,1;-k/m,-a1/m-(a2/m)*abs(x_dot)]*y+[0;g];
   else
       dy=[0,1;-a2/m-(a2/m)*abs(x_dot)]*y+[0;g]
   end

怎么老通过不了?新手求助错误!谢谢
回复
分享到:

使用道具 举报

发表于 2011-3-10 12:28 | 显示全部楼层
%函数 之后的 function 截下来应该另存一个文件.

开始不带 function的文件,后面不能有function
发表于 2011-3-10 12:29 | 显示全部楼层
有几个问题,
1.    这个应该建立一个函数,然后再运行,不能在脚本状态下运行;
2.    dy=[0,1;-a2/m-(a2/m)*abs(x_dot)]*y+[0;g] ;
   是有问题的,[0,1;-a2/m-(a2/m)*abs(x_dot)]不对应啊!你应该整错了吧!

function  odeFun( )

m = 70 ;
k = 20 ;
a1 = 1 ;
a2 = 1 ;
g = 10 ;
y0 = [-30 ; 0] ;
tspan = [0 100] ;
[t , y] = ode45(@stu1 , tspan , y0) ;
x1 = 50. - y(: , 1) ;
plot(t , x1) ;
grid
plot(t , y(: , 1)) ;
grid

%函数
function dy = stu1(t , y)
m = 70 ;
k = 20 ;
a1 = 1 ;
a2 = 1 ;
g = 10 ;
y0 = [-30 ; 0] ;
x = y(1) ;
x_dot = y(2) ;
if x > 0
       dy = [0 , 1 ; -k/m , -a1/m-(a2/m)*abs(x_dot)] * y + [0 ; g] ;
else
       dy = [0 , 1 ; -a2/m-(a2/m)*abs(x_dot)] * y + [0 ;g] ;
end
end
end

评分

1

查看全部评分

 楼主| 发表于 2011-3-10 17:02 | 显示全部楼层
多谢各位的意见,我漏了个矩阵元素结果不对称!初学者,见笑,见笑!

评分

1

查看全部评分

发表于 2011-3-10 17:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 12:02 , Processed in 0.068640 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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