oneonly 发表于 2015-9-25 16:08

龙格库塔ode45 解二阶微分方程组

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

happy 发表于 2015-9-28 08:01

转化为一阶方程之后不是就可以直接调用ode系列命令求解了吗?
上一个帖子不是告诉你命令帮助中就有调用的格式和例子吗?
参照例子写就行了,只是你的维数高点,写起来麻烦些,算起来不容易收敛

犟牛 发表于 2015-9-28 10:51

参考http://forum.vibunion.com/thread-137753-1-1.html

oneonly 发表于 2015-9-28 16:54

犟牛 发表于 2015-9-28 10:51
参考http://forum.vibunion.com/thread-137753-1-1.html

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

oneonly 发表于 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

oneonly 发表于 2015-9-28 16:55
非常感谢,我是matlab小白   能加你好友吗

不好意思,一般我只参与论坛讨论,不私下联系

oneonly 发表于 2015-9-29 21:56

本帖最后由 oneonly 于 2015-9-29 21:57 编辑

happy 发表于 2015-9-28 08:01
转化为一阶方程之后不是就可以直接调用ode系列命令求解了吗?
上一个帖子不是告诉你命令帮助中就有调用的格 ...
你好,今天调用的ode命令,我的方程实际上是一个变系数矩阵的方程,由于变系数的实在是不知道怎么编程,现在就假设系数是定值先用ode方法试试,于是就把求系数矩阵程序放在function下面(只是求得一个时间的系数矩阵,是定值), 随后就是令ylie=这样一个列向量,然后dy(1)=y(113);dy(2)=y(114);...;dy(112)=y(224);dy(113)=求得矩阵Wi第一行*ylie+s(1)..................就像图片上那样,编好以后 问题来了,运行了差不多也有四个小时了,但一直是busy,一直在循环我的求系数程序,求大神指导 (1)我该怎么修改                   (2)我的原方程是个变系数的,这样化简正确吗?   谢谢谢谢




happy 发表于 2015-9-30 09:04

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

这个问题早就说过了,这么多的方程,一般情况下ode系列是不太适用
主要是很难收敛,所以程序就只能一致在运行,一直到设置的最高精度也无法得到需要的解的时候
程序才会跳出错误信息

oneonly 发表于 2015-9-30 15:24

happy 发表于 2015-9-30 09:04
这个问题早就说过了,这么多的方程,一般情况下ode系列是不太适用
主要是很难收敛,所以程序就只能一致 ...

你好,你的意思是这样运行下去早晚要出错,请问下我的求系数矩阵的程序放在function下面合适吗?
如果是变系数的程序(随时间变化)应该放在什么地方?非常感谢。。。

happy 发表于 2015-9-30 16:24

oneonly 发表于 2015-9-30 15:24
你好,你的意思是这样运行下去早晚要出错,请问下我的求系数矩阵的程序放在function下面合适吗?
如果是 ...

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

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

你可以在计算代码中设置过程输出,看看情况

oneonly 发表于 2015-9-30 21:07

happy 发表于 2015-9-30 16:24
基本格式差不错,至于对错需要你自己仔细检查,毕竟任一个符号的错误都有可能导致整体问题

至于是否能够 ...

谢谢你啦,又运行了一晚上,这次是把系数矩阵用save保存起来,在function下用的load命令调用的,现在运行了八个小时了吧。。。。也没报错误,真是郁闷啊

happy 发表于 2015-10-3 10:54

oneonly 发表于 2015-9-30 21:07
谢谢你啦,又运行了一晚上,这次是把系数矩阵用save保存起来,在function下用的load命令调用的,现在运行 ...

ode系列求解效率大型微分方程组的话,效率是非常低的

oneonly 发表于 2015-10-3 11:23

happy 发表于 2015-10-3 10:54
ode系列求解效率大型微分方程组的话,效率是非常低的

我在程序中加了一句xsudu=Y(:,107)   仍然是一点数据也没出来,只有个busy
难道是我的程序编的不对吗?

happy 发表于 2015-10-4 17:27

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

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

建议退出,然后分步看看是否有输出

oneonly 发表于 2015-10-4 17:42

happy 发表于 2015-10-4 17:27
1. 程序有问题,出现了死循环等情况
2. 计算量过大,算不过来了



你好,我的时间t是有办法把这个时间分开吗,比如输出t=0.1时的Y(:,107)谢谢谢谢。
页: [1] 2 3
查看完整版本: 龙格库塔ode45 解二阶微分方程组