Matlab 版 (精华区)

发信人: hahn (有奇@选择遗忘的自由), 信区: Matlab
标  题: [合集] 请教-ode45能解二阶的微分方程组吗? 
发信站: 哈工大紫丁香 (Sat Aug  5 19:14:47 2006), 站内

────────────────────────────────────────
  migai (灯笼虫)                   于  (Thu May 11 20:34:29 2006)  说道:

我想求解一个二自由度的振动系统,想着可以用ode45解,解微分方程没问题,解方程组就
 
出错。谁用过,请教一下。
具体问题如下:
振动方程:
ode文件: 
function Yd=DYdt2(t,Y)%其中的Y=[x1;x2;dx1;dx2]的列向量
Yd(1)=Y(3);
Yd(2)=Y(4);
Yd(3)=0.4909*Y(2)-1.5708*Y(1)+1.3695*Y(4)-72.73*Y(3);%第一个质量点的振动方程
Yd(4)=-0.1964*Y(2)+0.4909*Y(1)-64.157*Y(4)+1.369*5Y(3);%第二个质量点的振动方程

参数和命令:
>> x1=0;x2=0;dx1=0;dx2=0;
>> Y0=[x1;x2;dx1;dx2];
>> [t,Y]=ode45('DYdt2',[0,10],Y0)
提示如下
??? Error: File: DYdt2.m Line: 5 Column: 51
Missing MATLAB operator.

Error in ==> funfun\private\odearguments at 80
    if (nargin(ode) == 2)           

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...


────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Thu May 11 20:37:15 2006)  说道:

问题如下,那里不是5Y吧
Yd(4)=-0.1964*Y(2)+0.4909*Y(1)-64.157*Y(4)+1.369*5Y(3);
                                                 ~~~~~~~
【 在 migai (灯笼虫) 的大作中提到: 】
: 我想求解一个二自由度的振动系统,想着可以用ode45解,解微分方程没问题,解方程组就
: 出错。谁用过,请教一下。
: 具体问题如下:
: ...................



────────────────────────────────────────
  migai (灯笼虫)                   于  (Thu May 11 21:15:50 2006)  说道:


【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 问题如下,那里不是5Y吧
: Yd(4)=-0.1964*Y(2)+0.4909*Y(1)-64.157*Y(4)+1.369*5Y(3);
:                                                  ~~~~~~~
谢谢,不过改了以后还是不对,
提示如下:
>> [t,Y]=ode45('DYdt2',[0,10],Y0)
??? Error using ==> funfun\private\odearguments
DYDT2 must return a column vector.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, ...




────────────────────────────────────────
  zjliu (秋天的萝卜)               于  (Thu May 11 21:17:28 2006)  说道:

在DYdt2.m文件最后面加上Yd=Yd';就行了
【 在 migai (灯笼虫) 的大作中提到: 】
: 谢谢,不过改了以后还是不对,
: 提示如下:
: ??? Error using ==> funfun\private\odearguments
: ...................



────────────────────────────────────────
  feifeifool (努力学习)            于  (Thu May 11 21:32:18 2006)  说道:

建议多使用状态空间形式(采用矩阵),当自由度多时比较方便,自由度过多用ode45时会增长运算时间,这时候建议对动力学问题采用数值积分法:Newmark、Wilson-theta法等。
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 在DYdt2.m文件最后面加上Yd=Yd';就行了




────────────────────────────────────────
  migai (灯笼虫)                   于  (Fri May 12 09:45:58 2006)  说道:


【 在 feifeifool (努力学习) 的大作中提到: 】
: 建议多使用状态空间形式(采用矩阵),当自由度多时比较方便,自由度过多用ode4..
谢谢各位大虾




────────────────────────────────────────
  migai (灯笼虫)                   于  (Fri May 12 14:07:53 2006)  说道:


【 在 migai (灯笼虫) 的大作中提到: 】
: 谢谢各位大虾


能在问一下,这个Yd=Yd'是什么意思吗?


────────────────────────────────────────
  feifeifool (努力学习)            于  (Fri May 12 14:11:35 2006)  说道:

 输出必须是列向量,所以要转置一下,把行变成列。
【 在 migai (灯笼虫) 的大作中提到: 】
: 能在问一下,这个Yd=Yd'是什么意思吗?




[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.384毫秒