问题标签 [runge-kutta]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - RK4 给出错误的结果
我正在尝试数值求解一个简单的二阶 DE x'' = -x。我使用了一个新变量 x'=v,所以我有两个方程。虽然看起来很简单,但它以某种方式产生的结果与正确结果相差甚远。
奇怪的是,如果我使用 RK45 系数,一切正常。知道什么可能是错的吗?
matlab - Runge-Kutta 方法中的索引超出矩阵尺寸误差:Matlab
我正在尝试使用 4 阶 Runge-Kutta 方法制作时间步进代码,但我遇到了正确索引我的值之一的问题。我的代码是:
目前,第一次迭代的值似乎很好,但后来我Index exceeds matrix dimension
在行计算中遇到了错误eta
。我了解我没有正确索引 eta 值,但不确定如何更正此问题。
我的目标是为每个 t 循环更新 eta 的值,然后将新的 eta 值用于其余计算。
我对编程还是很陌生,并且正在尝试理解索引,尤其是在 3 或 4 维矩阵中,并且非常感谢有关正确计算此值的任何建议。
提前感谢您的任何建议!
matlab - 使用runge kutta求解非线性一阶ODE系统
我完全被我的一组问题困住了。
我应该使用 Matlab 解决以下 ODE 系统:
我应该使用我以前没有尝试过的 Runge Kutta 方法。我已经做了很长一段时间了,但甚至不知道从哪里开始——这就是为什么我真的没有任何代码可以给你看。我一直在做很多谷歌搜索,但没有结果。
如果有人可以帮我一把,将不胜感激!
python - 为什么我会收到我乘以非 int 类型“float”的错误?
我的代码有问题,该代码是一种用于数值求解谐波振荡器的 Runge Kutta 算法。不幸的是,我收到一个错误,说我不能将序列乘以浮点类型的非整数。考虑到这段代码几乎是来自教育文本的逐字记录,我看不出错误在哪里。有人可以帮我吗?感谢您友好的邻居蜘蛛侠。
错误在第 33 行。
TypeError:不能将序列乘以“float”类型的非整数
python - 使用 Runge-Kutta 求解耦合微分方程
我有一个耦合方程组:流体静力平衡方程、质量连续性方程和理想气体的状态方程。这些是,在数学语法中,
\frac{dP}{dr}=- \rho*g
,
其中\rho
是密度,g
是重力加速度。
\frac{dM}{dr}=4*pi* r^2*\rho
和
p=\rho* k_B* T/(\mu *m_p)
,
其中k_B
是玻尔兹曼常数,\mu
是平均分子量,m_p
是质子质量。
我想使用 Runge-Kutta 数值技术解决这些耦合方程,我在这里展示了我为解决这个问题而设计的 python 代码:
对于压力、p_atm
半径、r_atm
和质量的初始条件m_atm
,我使用在 中显示的值h, r_atm, p_atm, m_atm = rk4_1(g,f, 6.991e7, 1e-6*1e5, 1.898e27, 2.0e7,10000000)
。请注意,我正在从高层大气(给定初始条件的地方)处理这个边界值问题,并在大气中向下进展(注意 h 是负数)。我的目的是评估这种从10^-1
帕斯卡到100000
帕斯卡的数值积分。我从运行这段代码得到的结果是压力~1e+123
在三个步骤中简单地爆炸,所以显然有一些非常错误的流媒体,但它会有助于有另一个眼睛或视角,因为这是我第一次表演Runga-Kutta 方法。
matlab - 使用 inline/subsref 的 MATLAB Runge Kutta 错误
有人可以帮助我使用功能A,为什么不运行?我无法理解错误,也许写得不好?因为在 B 中,图形没问题,请检查我的 Runge Kutta 2 Functions (f,g) 方法和 mathcad 的原始问题,抱歉我的英语不好
python - Python中的Runge-Kutta方法
我在python中写了一个关于runge-kutta方法的代码,但是每次程序实现任何微积分时,程序都需要微分方程。
这是我的代码:
使用方程 dx/dt=x, x(0)=1, xf=1, h=0.1 的示例:
我应该怎么做才能只输入一次微分方程来编程计算全部?
python - 在 Python 中使用 Runge-kutta 四阶的 ODE 系统
我正在编写一个 python 程序来解决给定两个初始条件的一阶微分方程的 2x2 系统。我的代码:
我知道我可以return (u, v)
,但我想以print "u ~ ", u
不同的方式v
在另一条线上,但似乎我只需要重复 trialu 来返回 v,有没有更好的方法?不重复def trialu()
?我还想分别为 j = 1, 2, ... 打印 k?
一个例子是通过使用和的步长来解决u' = -3*u + 2*v
和。v' = 3*u - 4*v
[0,0.4]
h = 0.1
u[0] = 0
v = 0.5
c++ - 用 Runge-Kutta 积分波动方程(二阶)
我尝试求解数值简单的方程 - 没有源的线性波动方程:u tt = v 2 u xx
其中 v - 波速。
我使用初始条件:
u(x, 0) = sin(x)
u x (x, 0) = -v * sin(x)
对应于沿 x 轴以速度 v 传播的初始波 sin(x)(sin(x-vt) 是该波动方程的解)。
因此,问题在于,在 2-3 次迭代期间,数值解与解析答案 (sin(x-vt)) 一致,但在第 3 次迭代后出现问题并且解增长得非常快(取值约为 128)。
我使用具有 2 阶导数的 4 阶近似的 Runge-Kutta 2nd oreder 方法(Euler 方法)。
这是关于 C++ 的代码:
所以,我不知道为什么会出错,原因是什么。
matlab - ODE Runge Kutta MATLAB 错误
所以我正在尝试创建一个 Runge Kutta 函数,这是我的代码:
其中 U 是 2 行和 n+1 列的矩阵,这是我尝试执行此函数时的问题,例如:
我收到错误not enough input arguments
消息,但是当我尝试将代码作为脚本执行并用 sin 替换 f 时,一切正常,我得到了 U 矩阵 有人能告诉我解决方案是什么吗?