ranling 发表于 2011-3-15 11:33

请教:什么是变阶runge kutta方法?

求解duffing方程的Lyapunov指数的RHR计算方法中提到需要采用变阶runge kutta方法,请问高人什么是变阶runge kutta方法?
还有就是如下形式的方程,如何求解?

其中J11,J12,J21,J22不全是常数,有一个是变化的。
万分感谢~

hsfy919 发表于 2011-3-15 13:02

回复 1 # ranling 的帖子

龙格库塔法是求解常微分方程的一种常用数值解法,“变步长”就是指求解积分时步长是自适应的

gghhjj 发表于 2011-3-15 15:49

本帖最后由 gghhjj 于 2011-3-15 15:51 编辑

关于变阶Runge-Kutta法这个提法好像有点问题
要嘛应该是二楼所说的变步长Runge-Kutta法
要嘛应该是嵌入式Runge-Kutta法

变步长Runge-Kutta法我想大家应该很清楚
这里简单说说嵌入式Runge-Kutta法
这里涉及到Runge-Kutta发的阶次问题
关于Runge-Kutta法的阶次问题我想大家都应该比较清楚
如果不清楚的话可以找任意一本数值分析的书看一看

我们自己编程的时候往往采用四阶或二阶Runge-Kutta法,
而很多通用软件中往往采用嵌入式runge-kutta法
比如matlab中的ode45就是用4阶方法提供候选解,5阶方法控制误差
关于这种嵌入式runge-kutta法的具体原理可以参考下面的文章:
Dormand, J. R. and P. J. Prince, "A family of embedded Runge-Kutta formulae," J. Comp. Appl. Math., Vol. 6, 1980, pp 19-26.

之所以采用这种方式其主要目的是对局部截断误差进行估计,进而控制求解进程和误差
当然这往往是以牺牲计算效率为代价的

ranling 发表于 2011-3-15 16:22

回复 3 # gghhjj 的帖子

首先谢谢您的回答,我还想问一下:能否使用C语言实现你说的嵌入式runge kutta法?1楼的方程若J11,J12,J21,J22全是常数,可以用runge kutta法求解,但是现在有一个不是常数,你知不知道求解方法?再次感谢!

ranling 发表于 2011-3-15 16:23

回复 3 # gghhjj 的帖子

感谢您的回答,不知您对1楼的方程的求解有何见解?谢谢

gghhjj 发表于 2011-3-15 16:33

ranling 发表于 2011-3-15 16:22 static/image/common/back.gif
回复 3 # gghhjj 的帖子

首先谢谢您的回答,我还想问一下:能否使用C语言实现你说的嵌入式runge kutta法? ...

C语言实现是没有问题的,不过如果是自己编程可能就会比较麻烦
印象中IMSL库中就有这样的函数,你可以找找找!

常系数和变系数区别不大,matlab的话都可以才ode45实现
帮助文件中第三个例子就是针对变系数的情况

自己编程的话对这个问题应该也没有太大的难度,变系数问题主要是在函数间增加一个变量的传递

ranling 发表于 2011-3-15 18:41

回复 6 # gghhjj 的帖子

哦 真是十分感谢啊 我研究下 有问题再请教您啊{:{02}:}

ranling 发表于 2011-3-17 10:34

回复 6 # gghhjj 的帖子

您说的IMSL库下不到啊,老师,您现在有这个库吗?下载一直没速度。我的QQ是357809978。

meiyongyuandeze 发表于 2011-4-1 10:38

gghhjj 发表于 2011-3-15 15:49 static/image/common/back.gif
关于变阶Runge-Kutta法这个提法好像有点问题
要嘛应该是二楼所说的变步长Runge-Kutta法
要嘛应该是嵌入式 ...

呵呵,真是详细,顺便温习下吧!
页: [1]
查看完整版本: 请教:什么是变阶runge kutta方法?