我需要一个明确的 Runge-Kutta 14 阶公式。如果您知道一些讨论Runge-Kutta至少10 阶(或更高,因为我正在寻找 14 阶)的参考资料,并且有关于整个公式的信息,例如
具有定义的系数并且可能是用 C 或 C++ 编写的代码。
我需要一个明确的 Runge-Kutta 14 阶公式。如果您知道一些讨论Runge-Kutta至少10 阶(或更高,因为我正在寻找 14 阶)的参考资料,并且有关于整个公式的信息,例如
具有定义的系数并且可能是用 C 或 C++ 编写的代码。
由于 Feagin 的 14 阶方法可以在DifferentialEquations.jl中找到。将它们与 128 位浮点运算一起使用的示例如下:
using OrdinaryDiffEq, DoubleFloats
function lorenz(du,u,p,t)
du[1] = 10.0(u[2]-u[1])
du[2] = u[1]*(28.0-u[3]) - u[2]
du[3] = u[1]*u[2] - (8/3)*u[3]
end
u0 = [1.0;0.0;0.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob,Feagin14(),abstol=1e-12.reltol=1e-12)
当然可以减少公差。实现相当简单,可以在这里找到:
使用此处定义的画面:
请注意,您可以使用内置的不确定性量化工具来查看该精度是否足够好,以至于混沌系统尚未偏离真实轨迹,因此这是 14 阶积分器的一个很好的应用。有关详细信息,请参阅ProbInts 文档。但是,使用它通常不是一个好主意,因为对于 64 位浮点数,它仅在小于机器 epsilon 的容差下才有效,因此您需要像这样一个非常奇怪的案例来证明使用它的合理性。