声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5270|回复: 38

[综合讨论] 龙格库塔ode45 解二阶微分方程组

[复制链接]
发表于 2015-9-25 16:08 | 显示全部楼层 |阅读模式

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

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

x
    大家好,我最近也在研究ode45解二阶微分方程组的,我的方程是67个,化成一阶后变成134个,请问一下,ODE45能够求解由这么多方程组成的方程组吗,不知有没有源程序,非常感谢
%B$T}XGJVFY92(_0C7VX7`B.png

回复
分享到:

使用道具 举报

发表于 2015-9-28 08:01 | 显示全部楼层
转化为一阶方程之后不是就可以直接调用ode系列命令求解了吗?
上一个帖子不是告诉你命令帮助中就有调用的格式和例子吗?
参照例子写就行了,只是你的维数高点,写起来麻烦些,算起来不容易收敛
回复 支持 1 反对 0

使用道具 举报

发表于 2015-9-28 10:51 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2015-9-28 16:54 | 显示全部楼层
犟牛 发表于 2015-9-28 10:51
参考http://forum.vibunion.com/thread-137753-1-1.html

非常感谢,我是matlab小白   能加你好友吗
 楼主| 发表于 2015-9-28 16:55 | 显示全部楼层
犟牛 发表于 2015-9-28 10:51
参考http://forum.vibunion.com/thread-137753-1-1.html

非常感谢,我是matlab小白   能加你好友吗

点评

不好意思,一般我只参与论坛讨论,不私下联系  详情 回复 发表于 2015-9-29 08:50
发表于 2015-9-29 08:50 | 显示全部楼层
oneonly 发表于 2015-9-28 16:55
非常感谢,我是matlab小白   能加你好友吗

不好意思,一般我只参与论坛讨论,不私下联系
 楼主| 发表于 2015-9-29 21:56 | 显示全部楼层
本帖最后由 oneonly 于 2015-9-29 21:57 编辑
happy 发表于 2015-9-28 08:01
转化为一阶方程之后不是就可以直接调用ode系列命令求解了吗?
上一个帖子不是告诉你命令帮助中就有调用的格 ...

你好,今天调用的ode命令,我的方程实际上是一个变系数矩阵的方程,由于变系数的实在是不知道怎么编程,现在就假设系数是定值  先用ode方法试试,于是就把求系数矩阵程序放在function下面(只是求得一个时间的系数矩阵,是定值), 随后就是令ylie=[y(1);y(2).......y(223);y(224)]这样一个列向量,然后dy(1)=y(113);dy(2)=y(114);...;dy(112)=y(224);dy(113)=求得矩阵Wi第一行*ylie+s(1)..................就像图片上那样,编好以后 问题来了,运行了差不多也有四个小时了,但一直是busy,一直在循环我的求系数程序,求大神指导 (1)我该怎么修改                   (2)我的原方程是个变系数的,这样化简正确吗?   谢谢谢谢
20150929212458.png 无标题.png



发表于 2015-9-30 09:04 | 显示全部楼层
oneonly 发表于 2015-9-29 21:56
你好,今天调用的ode命令,我的方程实际上是一个变系数矩阵的方程,由于变系数的实在是不知道怎么编程, ...

这个问题早就说过了,这么多的方程,一般情况下ode系列是不太适用
主要是很难收敛,所以程序就只能一致在运行,一直到设置的最高精度也无法得到需要的解的时候
程序才会跳出错误信息
 楼主| 发表于 2015-9-30 15:24 | 显示全部楼层
happy 发表于 2015-9-30 09:04
这个问题早就说过了,这么多的方程,一般情况下ode系列是不太适用
主要是很难收敛,所以程序就只能一致 ...

你好,你的意思是这样运行下去早晚要出错,请问下我的求系数矩阵的程序放在function下面合适吗?
如果是变系数的程序(随时间变化)应该放在什么地方?非常感谢。。。
发表于 2015-9-30 16:24 | 显示全部楼层
oneonly 发表于 2015-9-30 15:24
你好,你的意思是这样运行下去早晚要出错,请问下我的求系数矩阵的程序放在function下面合适吗?
如果是 ...

基本格式差不错,至于对错需要你自己仔细检查,毕竟任一个符号的错误都有可能导致整体问题

至于是否能够出结果,这个不好说,上面只是说了一种出错的可能,这种方法求解即便得到结果代价也会非常大

你可以在计算代码中设置过程输出,看看情况
 楼主| 发表于 2015-9-30 21:07 | 显示全部楼层
happy 发表于 2015-9-30 16:24
基本格式差不错,至于对错需要你自己仔细检查,毕竟任一个符号的错误都有可能导致整体问题

至于是否能够 ...

谢谢你啦,又运行了一晚上,这次是把系数矩阵用save保存起来,在function下用的load命令调用的,现在运行了八个小时了吧。。。。也没报错误,真是郁闷啊
发表于 2015-10-3 10:54 | 显示全部楼层
oneonly 发表于 2015-9-30 21:07
谢谢你啦,又运行了一晚上,这次是把系数矩阵用save保存起来,在function下用的load命令调用的,现在运行 ...

ode系列求解效率大型微分方程组的话,效率是非常低的
 楼主| 发表于 2015-10-3 11:23 | 显示全部楼层
happy 发表于 2015-10-3 10:54
ode系列求解效率大型微分方程组的话,效率是非常低的

我在程序中加了一句  xsudu=Y(:,107)   仍然是一点数据也没出来,只有个busy
难道是我的程序编的不对吗?
发表于 2015-10-4 17:27 | 显示全部楼层
oneonly 发表于 2015-10-3 11:23
我在程序中加了一句  xsudu=Y(:,107)   仍然是一点数据也没出来,只有个busy
难道是我的程序编的不对吗 ...

1. 程序有问题,出现了死循环等情况
2. 计算量过大,算不过来了

建议退出,然后分步看看是否有输出
 楼主| 发表于 2015-10-4 17:42 | 显示全部楼层
happy 发表于 2015-10-4 17:27
1. 程序有问题,出现了死循环等情况
2. 计算量过大,算不过来了

你好,我的时间t是[0,1]  有办法把这个时间分开吗,比如输出t=0.1时的Y(:,107)  谢谢谢谢。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-24 21:35 , Processed in 0.083725 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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