为什么数值结果不同(RK45)?

时间:2016-06-11 02:22:47

标签: matlab julia differential-equations runge-kutta

这是使用runge-kutta45测试方程差分: f(x,y)=( - 5 * x - y / 5)^ 1/8 + 10

enter image description here

为什么数值结果不同?我用过:

function Rk_JL()
 f(x,y)= (-5*x - y/5)^1/8 + 10
 tspan = 0:0.001:n
 y0 = [0.0, 1.0]
 return ODE.ode45(f, y0,tspan);
end

function [X1,Y1] = RK_M()
 f = @(x,y) (-5*x - y/5)^1/8 + 10;
 tspan = 0:0.001:n;
 y0 = 1
 [X1,Y1]= ode45(f,tspan,1);
end

1 个答案:

答案 0 :(得分:1)

程序的默认设置略有不同,例如默认容差和步进/拒绝行为。因此,你不应该指望它们“完全”相同。

要添加到此,ODE.jl不使用步长稳定(任何优化的库,如DifferentialEquations.jlODEInterface.jl或MATLAB的库使用),所以我希望它会更糟糕逐步选择(根据Hairer的书,踩踏行为只会降低2x-4x的效率)。因此,即使使用相同的容差,ODE.jl也会产生不同的结果,因为它没有使用标准的优化算法。