声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1802|回复: 8

[编程技巧] dsolve的问题

[复制链接]
发表于 2007-6-24 18:49 | 显示全部楼层 |阅读模式

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

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

x
解微分方程组,程序咋不出解呢?望高手指点

[x,y,z,f]=dsolve('Dx+214*x+134.03*y+186.43*z-0.25925*f-24748=0',...
    'Dy+161.05*x+300.96*y+72.446*z+0.5185*f+49498=0',...
    'Dz+159.41*x+99.463*y+275.58*z-0.25925*f-24748=0',...
    'Df+12.962*x-25.925*y+12.962*z+3*f=0','x(0)=0,y(0)=0,z(0)=0,f(0)=0','t')
回复
分享到:

使用道具 举报

发表于 2007-6-24 19:02 | 显示全部楼层
不是不出结果,是算不过来,建议用ode45求解,我以前也遇到过这种情况
 楼主| 发表于 2007-6-24 19:09 | 显示全部楼层
出结果,但是x为空的符号向量,其余变量为一般变量,很奇怪!为什么性质还不一样?哪怕出个得零的解,我也认了
不到万不得已不想用数值解,呵呵
发表于 2007-6-24 19:19 | 显示全部楼层
你算了多长时间出结果,用你的程序,我怎么算不出来?

不知道你要得结果是这样的吗?
m文件:
function dy = rigid(t,y)
dy = zeros(4,1);    % a column vector
dy(1) =-(214*y(1)+134.03*y(2)+186.43*y(3)-0.25925*y(4)-24748);
dy(2) =-(161.05*y(1)+300.96*y(2)+72.446*y(3)+0.5185*y(4)+49498);
dy(3) =-(159.41*y(1)+99.463*y(2)+275.58*y(3)-0.25925*y(4)-24748);
dy(4) =-(12.962*y(1)-25.925*y(2)+12.962*y(3)+3*y(4));

窗口命令:
[t,Y] = ode45(@rigid,[0 1.2],[0 0 0 0]);
plot(t,Y(:,1),'-',t,Y(:,2),'-.',t,Y(:,3),'.',t,Y(:,4))

[ 本帖最后由 ChaChing 于 2010-6-14 00:24 编辑 ]
1.JPG

评分

1

查看全部评分

 楼主| 发表于 2007-6-24 21:28 | 显示全部楼层
能出结果,如下:

x =
[ empty sym ]
y =
     []
z =
     []
f =
     []     

双击打开y.z.f,显示  ‘the variable is empty’

[ 本帖最后由 ChaChing 于 2010-6-14 09:35 编辑 ]
发表于 2007-6-24 23:03 | 显示全部楼层
贴了你的程序可以算出来,不过很费时间,结果还很复杂。
:@L 太大了,放不上来

[ 本帖最后由 ChaChing 于 2010-6-14 00:26 编辑 ]
 楼主| 发表于 2007-6-27 18:56 | 显示全部楼层
这到底是为什么啊???有没有遇到过类似情况的?
发表于 2007-6-27 19:34 | 显示全部楼层
可能1、你的电脑内存不够大
      2、微分方程组维数过大
看情况是第一种
发表于 2007-6-28 10:47 | 显示全部楼层
用Mathematica试试.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-12 12:43 , Processed in 0.062753 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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