24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1610  |  回复: 7

glgjw

银虫 (小有名气)

[求助] MATLAB求解二阶常微分方程组出错已有1人参与

MATLAB求解一个二自由度振动微分方程组,主程序如下:
>> global m1 m2 k1 c1 c2 v0
>> m1=4080;m2=12.5e3;k1=7.35e6;c1=17.56e3;c2=0.225e3;v0=3.2/60
>> [t,y]=ode45(@doublemass,[0 10],[-0.0154;-0.0049;0;0])

其中的doublemass的函数M文件定义如下:
function dyy=doublemass(t,y)
global m1 m2 k1 c1 c2 v0
dyy=[y(3);(-4.48e6*v0*t/(6-y(5))-(k1+4.48e6/(6-y(5)))*y(5)-(c1+c2)*y(6)+c2*y(4)+4.48e6*y(6)/(6-y(5)))/m1;y(4);(4.48e6*v0*t/(6-y(5))-m2*10+c2*y(3)+4.48e6*y(5)/(6-y(5))-c2*y(4)-4.48e6*y(6)/(6-y(5)))/m2]

运行后出现如下错误:
??? Attempted to access y(5); index out of bounds because numel(y)=4.

Error in ==> doublemass at 3
dyy=[y(3);(-4.48e6*v0*t/(6-y(5))-(k1+4.48e6/(6-y(5)))*y(5)-(c1+c2)*y(6)+c2*y(4)+4.48e6*y(6)/(6-y(5)))/m1;y(4);(4.48e6*v0*t/(6-y(5))-m2*10+c2*y(3)+4.48e6*y(5)/(6-y(5))-c2*y(4)-4.48e6*y(6)/(6-y(5)))/m2
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, ...

请教各位大神,谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
glgjw: 金币+20, ★★★★★最佳答案 2016-02-24 16:47:31
初值的个数不对!
你的y有6个分量!

» 本帖已获得的红花(最新10朵)

善恶到头终有报,人间正道是沧桑.
2楼2016-02-23 18:20:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

glgjw

银虫 (小有名气)

引用回帖:
2楼: Originally posted by wurongjun at 2016-02-23 18:20:57
初值的个数不对!
你的y有6个分量!

但是我的y的编号是从3到6,y的数目是4个,不是6个啊。难道一定要写成y(1)到y(4)?

发自小木虫Android客户端
3楼2016-02-23 18:56:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

glgjw

银虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by wurongjun at 2016-02-23 18:20:57
初值的个数不对!
你的y有6个分量!

感谢wurongjun的回复,已算出结果。但结果似乎不太对,y(1)和y(2)我指定的初值是-0.0154和-0.0049,但计算出的结果显示是从0开始迭代计算的。如下:
y =

  1.0e+010 *

   -0.0000   -0.0000         0         0
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000   -0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0000   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0001   -0.0000   -0.0000
   -0.0000    0.0002   -0.0000   -0.0000
   -0.0000    0.0002   -0.0000   -0.0000
   -0.0000    0.0003   -0.0000   -0.0000
   -0.0000    0.0004   -0.0000   -0.0000
   -0.0000    0.0005   -0.0000   -0.0000
   -0.0000    0.0007   -0.0000   -0.0000
   -0.0000    0.0009   -0.0000   -0.0000
   -0.0000    0.0012   -0.0000   -0.0000
   -0.0000    0.0016   -0.0000   -0.0000
   -0.0000    0.0020   -0.0000   -0.0000
   -0.0000    0.0026   -0.0000   -0.0000
   -0.0000    0.0034   -0.0000   -0.0000
   -0.0000    0.0042   -0.0000   -0.0000
   -0.0000    0.0052   -0.0000   -0.0000
   -0.0000    0.0068   -0.0000   -0.0000
   -0.0000    0.0086   -0.0000   -0.0000
   -0.0000    0.0108   -0.0001   -0.0000
   -0.0000    0.0131   -0.0001   -0.0000
   -0.0001    0.0176   -0.0001   -0.0000
   -0.0001    0.0228   -0.0001   -0.0001
   -0.0001    0.0288   -0.0001   -0.0001
   -0.0001    0.0357   -0.0001   -0.0001
   -0.0001    0.0455   -0.0001   -0.0001
   -0.0002    0.0567   -0.0001   -0.0001
   -0.0002    0.0695   -0.0001   -0.0001
   -0.0002    0.0839   -0.0002   -0.0001
   -0.0003    0.1000   -0.0002   -0.0001
   -0.0003    0.1179   -0.0002   -0.0001
   -0.0004    0.1378   -0.0002   -0.0001
   -0.0004    0.1596   -0.0002   -0.0001
   -0.0005    0.1833   -0.0003   -0.0001
   -0.0006    0.2094   -0.0003   -0.0001
   -0.0006    0.2380   -0.0003   -0.0001
   -0.0007    0.2689   -0.0003   -0.0001
   -0.0008    0.2923   -0.0004   -0.0001
   -0.0008    0.3172   -0.0004   -0.0001
   -0.0009    0.3436   -0.0004   -0.0001
   -0.0010    0.3714   -0.0004   -0.0001
   -0.0011    0.4005   -0.0004   -0.0001
   -0.0011    0.4312   -0.0005   -0.0001
   -0.0012    0.4635   -0.0005   -0.0001
   -0.0013    0.4974   -0.0005   -0.0001
   -0.0014    0.5388   -0.0005   -0.0001
   -0.0015    0.5825   -0.0006   -0.0001
   -0.0016    0.6289   -0.0006   -0.0001
   -0.0018    0.6777   -0.0006   -0.0001
   -0.0019    0.7341   -0.0006   -0.0002
   -0.0021    0.7941   -0.0007   -0.0002
   -0.0022    0.8582   -0.0007   -0.0002
   -0.0024    0.9255   -0.0008   -0.0002
   -0.0026    0.9896   -0.0008   -0.0002
   -0.0027    1.0576   -0.0008   -0.0002
   -0.0029    1.1307   -0.0009   -0.0002
   -0.0031    1.2066   -0.0009   -0.0002
   -0.0032    1.2536   -0.0009   -0.0002
   -0.0034    1.3022   -0.0010   -0.0002
   -0.0035    1.3524   -0.0010   -0.0002
   -0.0036    1.4040   -0.0010   -0.0002
而且通过绘图命令如下
>> plot(t,y(:,1),t,y(:,2),t,y(:,3),t,y(:,4))
>> legend('1位移','1速度','2位移','2速度')
执行后,为何只出现y(2)和y(4)的图线?
请专家赐教。我会追加金币的。谢谢了!!
4楼2016-02-24 09:07:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

glgjw

银虫 (小有名气)

引用回帖:
2楼: Originally posted by wurongjun at 2016-02-23 18:20:57
初值的个数不对!
你的y有6个分量!

doublemass文件改后的内容是:
function dyy=doublemass(t,y)
global m1 m2 k1 c1 c2 v0
dyy=[y(3);(-4.48e6*v0*t/(6-y(1))-(k1+4.48e6/(6-y(1)))*y(1)-(c1+c2)*y(2)+c2*y(4)+4.48e6*y(2)/(6-y(1)))/m1;y(4);(4.48e6*v0*t/(6-y(1))-m2*10+c2*y(3)+4.48e6*y(1)/(6-y(1))-c2*y(4)-4.48e6*y(2)/(6-y(1)))/m2]
5楼2016-02-24 09:10:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

引用回帖:
4楼: Originally posted by glgjw at 2016-02-24 09:07:06
感谢wurongjun的回复,已算出结果。但结果似乎不太对,y(1)和y(2)我指定的初值是-0.0154和-0.0049,但计算出的结果显示是从0开始迭代计算的。如下:
y =

  1.0e+010 *

   -0.0000   -0.0000         0      ...

后面的覆盖了前面的!
你分开画四个图形就明白了!
善恶到头终有报,人间正道是沧桑.
6楼2016-02-24 17:40:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

山东赵子明

新虫 (小有名气)

您好在么,我有问题请教您

发自小木虫IOS客户端
7楼2016-11-29 17:53:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波波和倩倩

新虫 (小有名气)

你好,可以请教下您吗?关于二阶常微分方程组的问题

发自小木虫Android客户端
8楼2016-12-17 00:25:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 glgjw 的主题更新
信息提示
请填处理意见