声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1630|回复: 3

[编程技巧] 维数出错问题

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

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

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

x
第一个微分方程:x''+g/l*x=0
function xd=danbai(t,x,flag,g,l)
xd=[x(2);-g/l*x(1)];
第二个微分方程:x''+g/l*sinx=0
function xd=hundun(t,x,flag,g,l)
xd=[x(2);-g/l*sin(x(1))];

调用程序部分:
g=input('重力加速度g='); l=input('摆长l= ');
theta1=input('小角度振动初位置的摆角theta1=');
theta2=input('大角度振动初位置的摆角theta2=');
t_final=10;  %定义仿真终止时间
[t,x1]=ode45('danbai',[0,t_final],[theta1;0],[],g,l);  %求解出小角度振动的时间向量t及与t对应的状态向量x1
[t,x2]=ode45('hundun',[0,t_final],[theta2;0],[],g,l);  %求解出大角度振动的时间向量t及与t对应的状态向量x2
subplot(221);plot(t,x1(:,1));  %在图像窗口分配绘图区域并绘制小角度振动的摆角与时间的曲线
subplot(222);plot(x1(:,1),x1(:,2));  %在图像窗口分配绘图区域并绘制小角度振动的相图(摆角与角速度之间的曲线)
subplot(223);plot(t,x2(:,1));  %在图像窗口分配绘图区域并绘制大角度振动的摆角与时间的曲线
subplot(224);plot(x2(:,1),x2(:,2));  %在图像窗口分配绘图区域并绘制大角度振动的相图(摆角与角速度之间的曲线)

输入初始数据(g=9.8,l=1不变),但小的角度和大的角度,加入输入0.04和0.4,0.05和0.5,0.06和0.6这些组合可以,假如是0.07和0.7,0.08和0.8,0.02和0.6就会出错,出错的提示都一样:
??? Error using ==> plot
Vectors must be the same lengths.

Error in ==> danbai_hundun at 8
subplot(221);plot(t,x1(:,1));  %在图像窗口分配绘图区域并绘制小角度振动的摆角与时间的曲线

[ 本帖最后由 ChaChing 于 2010-6-14 09:48 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-5-30 22:17 | 显示全部楼层
这类问题建议自己调试一下

[ 本帖最后由 ChaChing 于 2010-6-14 09:45 编辑 ]
 楼主| 发表于 2007-5-30 22:25 | 显示全部楼层
关键是我自己都不知道问题出在哪里,有的运行可以,有的却出错??:@L

已经找出问题,呵呵~~

[ 本帖最后由 ChaChing 于 2010-6-14 09:46 编辑 ]
发表于 2007-5-30 23:45 | 显示全部楼层
恩,把正确和错误的两种情况都分别调试一下,相信结果就出来了

[ 本帖最后由 ChaChing 于 2010-6-14 09:46 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 10:59 , Processed in 0.055817 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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