问题标签 [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.

0 投票
1 回答
706 浏览

vb.net - 使用 Runge Kutta 解决阻尼摆的问题

我是一名高中生,正在从事一个“家庭项目”,通过使用 Runge Kutta 方法求解微分方程来为阻尼摆设置动画。

(方程式可以在这里看到:http: //www.maths.tcd.ie/~smurray/Pendulumwriteup.pdf

我被告知在我的代码中,我的 RK4 实现不正确,老实说我有一直在努力理解它。该程序是用VB.net 2010编写的。我求解方程的代码如下:

我知道我每一步都乘以太多的 h - 我只是迷失了正在发生的事情。

我的完整代码:

我一直在尝试解决这个问题一段时间,而且我已经处于最后阶段,所以我求助于寻求帮助。感谢任何可以的人!

0 投票
1 回答
346 浏览

matlab - 如何使用 ODE45 函数求解这个三阶方程?

当我将三阶 ODE 转换为一阶 ODE 系统时,我得到了:

0 投票
2 回答
935 浏览

c++ - VC++ 中的龙格库塔方法

我正在开发一种使用 Runge Kutta 方法计算新数据点的算法。这是实现此方法的参考 - http://calculuslab.deltacollege.edu/ODE/7-C-3/7-C-3-h.html。这是我的代码:

问题是:y[i] 没有存储新的数据值并显示“0”或一些垃圾值。第二个问题是,在这种情况下,我不可能将浮点数的循环索引值(x 轴)增加为“h = 0.2”。我使用断点来查找问题,但我无法弄清楚,需要一些帮助或指导才能克服这个问题。我有一种感觉,这是由于我的逻辑和实现中的一些问题。请查看我的代码和有关如何修复它的建议,这将有很大帮助。提前致谢。

0 投票
0 回答
608 浏览

matlab - 如何使用 ode45 求解耦合的“非线性奇异”ODE 系统(MATLAB 错误)

我是 Matlab 编程和 Runge-Kutta 方法的初学者。

我正在尝试使用 4 阶 Runge-Kutta 方法为我的项目工作解决耦合非线性 ODE 系统。

这是我的问题...

v'(n) = k1 ; d'(n) =k2; p'(n)= k3;q'(n) = k4; w'(n)= k5;

v[1]= (1-b); d[1] = 1/b;p[1] =(1-b); q[1] = 0.01;w[1] = 0.02

在matlab代码中,我把v换成了x1,d换成了x2……

这里 ki, i=1-5 是 xi 和 n 的函数,在 Matlab 代码中作为“case1rk”的行向量给出

我的 MATLAB 代码是——

错误是

使用 odearguments 时出错(第 93 行)@(N,X)CASE1RK(N,X) 返回长度为 1 的向量,但初始条件向量的长度为 2。@(N,X)CASE1RK(N, X) 和初始条件向量必须具有相同数量的元素。

ode45 错误(第 114 行)[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...

n 的范围可以在 o 到 1 之间......我怎么知道上述系统的 n 解决方案的范围......

请告诉我用于绘制图形的命令...对于 v[[Eta]]/v[1]...即 x(1)[[Eta]]/x(1)[1]...在存在解的 n 范围内

请指导我...

0 投票
1 回答
318 浏览

netlogo - 在 NetLogo 中求解 ODE,Eulers vs RK vs R 求解器

在我的模型中,每个代理在每个滴答声中求解一个 ODE 系统。我采用了欧拉方法(类似于 NetLogo 中的系统动力学建模器)来求解这些一阶 ODE。但是,为了获得稳定的解决方案,我不得不使用非常小的时间步 (dt),这意味着使用这种方法进行的模拟非常缓慢。我很好奇是否有人对更快地解决 ODE 的方法有建议?我正在考虑像这里(http://academic.evergreen.edu/m/mcavityd/netlogo/Bouncing_Ball.html )那样实施Runge-Kutta(时间步长更大? )。我还会考虑使用 R 扩展并在 R 中使用 ODE 求解器。但同样,ODE 由每个代理求解,所以我不知道这是否是一种有效的方法。

我希望有人对这些方法的性能有所了解,并可以提供一些建议。如果没有,我会尝试分享我的发现。

0 投票
1 回答
1265 浏览

python - 在 Python 中使用 RK4 实现伪谱方法

我正在使用伪光谱法来求解 KdV 方程u_t + u*u_x + u_xxx = 0。通过傅里叶变换简化后,我得到了两个带有两个变量的方程:

  1. uhat = vhat * exp(-i*k^3*t)
  2. d(vhat)/dt =-0.5i * k * exp(-i*k^3*t)*F[u^2]

其中F代表傅里叶变换,uhat = F[u], vhat = F[v]

我想最终使用 RK4 来解决 è ifft(uhat)è 的问题。现在我有两个变量 uhat 和 vhat,我有 2 个想法来解决uhatvhat

  1. 将它们视为实现 RK4 的 ODE 系统。

  2. 将上式2作为待解ODE,用RK4解chat,uhat = vhat * exp(-i*k^2*delta_t)在每个时间步后计算delta_t

我在实现这两个想法时遇到了问题。这是上面第二个想法的代码。

RK4 部分来自@LutzL。

0 投票
1 回答
1354 浏览

c++ - 初始化复合体大批

我正在尝试解决一个复杂的微分方程系统。我想用高斯值函数填充复数向量 xi[n]。但是,当我检查输出文件时,它给了我很多零。我使用 cin 函数给出了输入值,它起作用了……这段代码有什么问题????

0 投票
1 回答
374 浏览

matlab - Simulink 仿真的行为与使用 rk4 的相同仿真有很大不同

我很难在 simulink 中模拟由以下状态空间方程描述的对象:

状态空间方程的右手边由下面的函数描述。

简单可视化的对应 rk4 函数如下图所示。

这为推车上的摆锤提供了逼真的外观效果。 rk4 的正确结果

现在来解决问题。我想在 simulink 中重新创建完全相同的方程。我认为这将像创建以下 simulink 模型一样简单。 模拟链接模型 我用 RHS 文件中的第二个和第四个方程填充 fcn 块。像这样。

(-(M+m)*c*u(2)-(M+m)*g*l*sin(u(1))-m^2*l^2*u(2)^2*sin(u(1))*cos(u(1))+m*l*b*u(3)*cos(u(1))-m*l*cos(u(1))*u(4))/(I*(m+M)+m*M*l^2+m^2*l^2*sin(u(1))^2)

(u(5) - b*u(4) + l*m*u(2)^2*sin(u(1)) + (l*m*cos(u(1))*(c*u(2)*(M + m) + g*l*sin(u(1))*(M + m) + u(5)*l*m*cos(u(1)) + l^2*m^2*u(2)^2*cos(u(1))*sin(u(1)) - b*l*m*u(4)*cos(u(1))))/(I*(M + m) + l^2*m^2*sin(u(1))^2 + M*l^2*m))/(M + m)

问题是这并没有从上面给出正确的结果,而是下面的结果 simulink 的结果不正确

有人知道我做错了什么吗?

编辑:@am304 评论后我决定添加以下信息。我将simulink求解器的设置更改为使用固定步长rk4求解器,以获得相同的结果。上述模型中的第二个积分器 3 已初始化为 pi/2。

Edit2:如果有人想自己检查 simulink 模型,请单击链接下载文件。

Edit3:正如您在下面的答案中所读到的,这个问题是微不足道的。您可以在此处下载正确的型号

0 投票
2 回答
5956 浏览

python - Lotka-Volterra 方程(捕食者猎物)在 Python 中使用 Runge-Kutta

我正在尝试使用 Lotka-Volterra 方程编写一个程序来进行捕食者与猎物的相互作用。使用 ODE 求解:

使用四阶龙格-库塔法

我需要绘制一个图表,显示 x 和 y 作为从 t = 0 到 t=30 的时间的函数。

a = alpha = 1
b = beta = 0.5
g = gamma = 0.5
s = sigma = 2
初始条件 x = y = 2

到目前为止,这是我的代码,但未在图表上显示任何内容。一些帮助会很好。

0 投票
1 回答
1799 浏览

javascript - JS 中的 Runge Kutta 问题

我正在尝试使用 Javascript 对弹簧上的质量进行 Runge-Kutta 实现,并使用 D3 将其可视化。目的是将其与 Forward Euler 进行比较并评论差异。我的 FE 工作正常,情节也很好,但 Runge-Kutta 正在向负面方向射击,并且从不环绕。

这是一个带有 vis 和代码的plunkr,但我也会添加 JS(仅适用于 ODE 求解器)。