声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2971|回复: 11

[分形与混沌] 仿真一个系统,帮我看看哪里有错啊,ode23不会用啊

[复制链接]
发表于 2007-4-22 21:11 | 显示全部楼层 |阅读模式

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

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

x
function xdot=mechsys(t,x)
F=25;
M=1;
B=5;
K=25;
xdot=[x(2);1/M*(F-B*x(2)-K*x(1)+sqrt(x))];
t0=0;
tfinal=3;
x0=[0,0];
to1=0.001;
trace=0;
[t,x]=ode23('mechsys',t0,tfinal,x0,to1,trace);
subplot(2,1,1);
plot(t,x);
回复
分享到:

使用道具 举报

发表于 2007-4-22 21:53 | 显示全部楼层
Input argument "x" is undefined.

Error in ==> mechsys at 6
xdot=[x(2);1/M*(F-B*x(2)-K*x(1)+sqrt(x))];
不是ode23得错误吧
ode23只是仿真得一个计算方法吧
发表于 2007-4-23 07:32 | 显示全部楼层
这个程序写成这样,有点没话说

  1. function xdot=mechsys(t,x)
  2. F=25;
  3. M=1;
  4. B=5;
  5. K=25;
  6. xdot=[x(2);1/M*(F-B*x(2)-K*x(1)+sqrt(x(1)))];
复制代码


红色部分是我改的,不知道你的方程中应该是x(1)还是x(2)

  1. t0=0;
  2. tfinal=3;
  3. x0=[0,0];
  4. [t,x] = ode23('mechsys',[t0,tfinal],x0);
  5. subplot(2,1,1);
  6. plot(t,x);
复制代码

结果

结果

评分

1

查看全部评分

 楼主| 发表于 2007-4-23 15:20 | 显示全部楼层

回复 #3 gghhjj 的帖子

一直提示X没有定义啊,怎么 定义的啊?我才学这个,谢谢啦
发表于 2007-4-24 13:19 | 显示全部楼层
xdot=[x(2);1/M*(F-B*x(2)-K*x(1)+sqrt(x))];

应该是这里面的sqrt(x),没有定义
应该为x(1)或x(2)
 楼主| 发表于 2007-4-24 17:20 | 显示全部楼层

回复 #5 superstones 的帖子

改成x(1)还是提示X没有定义啊
发表于 2007-4-25 02:07 | 显示全部楼层
原帖由 xicheng_wu 于 2007-4-24 17:20 发表
改成x(1)还是提示X没有定义啊

三楼给你修改的程序已经没有问题了,不知道你是怎么运行的
建议看看matlab基础吧
发表于 2007-4-27 13:46 | 显示全部楼层

回复 #4 xicheng_wu 的帖子

楼主你是不是把m函数和主程序放在同一个程序下面了啊,m文件和主程序应该是分开的两个程序,就像gghhjj帖子里面写的那样,两个程序分开来保存计算就没问题。

[ 本帖最后由 咕噜噜 于 2007-4-27 13:47 编辑 ]
 楼主| 发表于 2007-4-27 21:55 | 显示全部楼层
原帖由 咕噜噜 于 2007-4-27 13:46 发表
楼主你是不是把m函数和主程序放在同一个程序下面了啊,m文件和主程序应该是分开的两个程序,就像gghhjj帖子里面写的那样,两个程序分开来保存计算就没问题。

原来这样啊,谢谢你啊
 楼主| 发表于 2007-4-28 10:05 | 显示全部楼层
顺便问一下,为什么不能合在一起写呢
发表于 2007-4-28 10:20 | 显示全部楼层

回复 #10 xicheng_wu 的帖子

^_^,写在一起那是一个程序,在一个程序中所有的变量都要赋值,要么是符号变量,要么是数值变量,你合在一起肯定会显示x没有定义,因为你确实没有定义x的变量类型。
再有m函数的调用问题,m函数文件他本身就等于一个完整的程序,用来实现一些特定的功能,调用m函数其实相当于你调用了一个程序的输出结果,主要是为了防止计算的反复等。当然m函数文件里面的任何参数都还保存在内存中,但是主程序中这些变量实际上你是找不到的,m函数文件里面的变量仅在函数运行期间有效,是局部变量,这个m函数程序是单独实现计算,和主程序并不是一起计算。
这算是matlab的一个类似的工具命令差不多,如果放在一起就失去了m函数文件的作用了。
这是我的理解,我也不知道说明白没有
发表于 2007-4-29 06:48 | 显示全部楼层
原帖由 xicheng_wu 于 2007-4-28 10:05 发表
顺便问一下,为什么不能合在一起写呢

完全是可以的,不过主程序要写成script file的形式,如下:

  1. function test
  2. t0=0;
  3. tfinal=3;
  4. x0=[0,0];
  5. [t,x] = ode23('mechsys',[t0,tfinal],x0);
  6. subplot(2,1,1);
  7. plot(t,x);

  8. function xdot=mechsys(t,x)
  9. F=25;
  10. M=1;
  11. B=5;
  12. K=25;
  13. xdot=[x(2);1/M*(F-B*x(2)-K*x(1)+sqrt(x(1)))];
复制代码


这些只不过是规定的格式问题,建议看看matlab
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-27 13:27 , Processed in 0.086442 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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