这是使用runge-kutta45测试方程差分: f(x,y)=( - 5 * x - y / 5)^ 1/8 + 10
为什么数值结果不同?我用过:
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
答案 0 :(得分:1)
程序的默认设置略有不同,例如默认容差和步进/拒绝行为。因此,你不应该指望它们“完全”相同。
要添加到此,ODE.jl不使用步长稳定(任何优化的库,如DifferentialEquations.jl,ODEInterface.jl或MATLAB的库使用),所以我希望它会更糟糕逐步选择(根据Hairer的书,踩踏行为只会降低2x-4x的效率)。因此,即使使用相同的容差,ODE.jl也会产生不同的结果,因为它没有使用标准的优化算法。