公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
1.7k 浏览

我再MMA网站上下载的四阶Runge-Kutta算法程序如下

RKStep[f_, y_, y0_, dt_] :=
	Module[{ k1, k2, k3, k4 },
		k1 = dt N[ f /. Thread[y -> y0] ];
		k2 = dt N[ f /. Thread[y -> y0 + k1/2] ];
		k3 = dt N[ f /. Thread[y -> y0 + k2/2] ];
		k4 = dt N[ f /. Thread[y -> y0 + k3] ];
		y0 + (k1 + 2 k2 + 2 k3 + k4)/6
	]

但是,我在书中看到的介绍是这样的

问题:程序中计算k2,k3,k4时,利用规则替换时没有考虑到dt(或者h),这与书中(上图)介绍不一致,为什么会这样?

分类:程序包 | 用户: keanhy (361 分)

1个回答

0 投票
是一样的……你仔细看系数的位置……
用户: xzczd (2.1k 分)
比如,计算K2的时候,按照书中的介绍K2=f(xn+h/2, yn+K1*h/2)
而程序中利用替换规则应有f(xn+K1*h/2,  yn+K1*h/2),函数中两个变量都会含有K1项,我是这样理解的,不知道哪里有问题
……我知道你误解哪里了。这个程序是针对等步长情况的,也就是说RKStep里其实根本没有x坐标(也没有必要)。
我贴出来的也是等步长的,程序中的y和y0不都看成向量或者列表吗?
我的意思是,当只考虑等步长的情况时,我们根本不需要在程序里给x留位子。你若是还不理解,不妨实际编写一下。
...