问题标签 [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.
vb.net - 使用 Runge Kutta 解决阻尼摆的问题
我是一名高中生,正在从事一个“家庭项目”,通过使用 Runge Kutta 方法求解微分方程来为阻尼摆设置动画。
(方程式可以在这里看到:http: //www.maths.tcd.ie/~smurray/Pendulumwriteup.pdf)
我被告知在我的代码中,我的 RK4 实现不正确,老实说我有一直在努力理解它。该程序是用VB.net 2010编写的。我求解方程的代码如下:
我知道我每一步都乘以太多的 h - 我只是迷失了正在发生的事情。
我的完整代码:
我一直在尝试解决这个问题一段时间,而且我已经处于最后阶段,所以我求助于寻求帮助。感谢任何可以的人!
matlab - 如何使用 ODE45 函数求解这个三阶方程?
当我将三阶 ODE 转换为一阶 ODE 系统时,我得到了:
c++ - VC++ 中的龙格库塔方法
我正在开发一种使用 Runge Kutta 方法计算新数据点的算法。这是实现此方法的参考 - http://calculuslab.deltacollege.edu/ODE/7-C-3/7-C-3-h.html。这是我的代码:
问题是:y[i] 没有存储新的数据值并显示“0”或一些垃圾值。第二个问题是,在这种情况下,我不可能将浮点数的循环索引值(x 轴)增加为“h = 0.2”。我使用断点来查找问题,但我无法弄清楚,需要一些帮助或指导才能克服这个问题。我有一种感觉,这是由于我的逻辑和实现中的一些问题。请查看我的代码和有关如何修复它的建议,这将有很大帮助。提前致谢。
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 范围内
请指导我...
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 由每个代理求解,所以我不知道这是否是一种有效的方法。
我希望有人对这些方法的性能有所了解,并可以提供一些建议。如果没有,我会尝试分享我的发现。
python - 在 Python 中使用 RK4 实现伪谱方法
我正在使用伪光谱法来求解 KdV 方程u_t + u*u_x + u_xxx = 0
。通过傅里叶变换简化后,我得到了两个带有两个变量的方程:
uhat = vhat * exp(-i*k^3*t)
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 个想法来解决uhat
和vhat
:
将它们视为实现 RK4 的 ODE 系统。
将上式2作为待解ODE,用RK4解chat,
uhat = vhat * exp(-i*k^2*delta_t)
在每个时间步后计算delta_t
。
我在实现这两个想法时遇到了问题。这是上面第二个想法的代码。
RK4 部分来自@LutzL。
c++ - 初始化复合体大批
我正在尝试解决一个复杂的微分方程系统。我想用高斯值函数填充复数向量 xi[n]。但是,当我检查输出文件时,它给了我很多零。我使用 cin 函数给出了输入值,它起作用了……这段代码有什么问题????
matlab - Simulink 仿真的行为与使用 rk4 的相同仿真有很大不同
我很难在 simulink 中模拟由以下状态空间方程描述的对象:
状态空间方程的右手边由下面的函数描述。
简单可视化的对应 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)
问题是这并没有从上面给出正确的结果,而是下面的结果
有人知道我做错了什么吗?
编辑:@am304 评论后我决定添加以下信息。我将simulink求解器的设置更改为使用固定步长rk4求解器,以获得相同的结果。上述模型中的第二个积分器 3 已初始化为 pi/2。
Edit2:如果有人想自己检查 simulink 模型,请单击链接下载文件。
Edit3:正如您在下面的答案中所读到的,这个问题是微不足道的。您可以在此处下载正确的型号
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
到目前为止,这是我的代码,但未在图表上显示任何内容。一些帮助会很好。
javascript - JS 中的 Runge Kutta 问题
我正在尝试使用 Javascript 对弹簧上的质量进行 Runge-Kutta 实现,并使用 D3 将其可视化。目的是将其与 Forward Euler 进行比较并评论差异。我的 FE 工作正常,情节也很好,但 Runge-Kutta 正在向负面方向射击,并且从不环绕。
这是一个带有 vis 和代码的plunkr,但我也会添加 JS(仅适用于 ODE 求解器)。