Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia中的二阶赋给出了错误的结果_Julia_Differential Equations_Differentialequations.jl - Fatal编程技术网

Julia中的二阶赋给出了错误的结果

Julia中的二阶赋给出了错误的结果,julia,differential-equations,differentialequations.jl,Julia,Differential Equations,Differentialequations.jl,我试着使用julia提供的Differentialsequations.jl,它工作正常,直到我试着在二阶ODE上使用它。 例如,二阶ODE < /P> x'(t)=x'(t)+2*x(t),带初始条件 x'(0)=0,x(0)=1 其解析解为:x(t)=2/3exp(-t)+1/3exp(2t) 为了从数值上解决这个问题,我运行以下代码: using DifferentialEquations; function f_simple(ddu, du, u, p, t) ddu[1] =

我试着使用julia提供的Differentialsequations.jl,它工作正常,直到我试着在二阶ODE上使用它。 例如,二阶ODE < /P> x'(t)=x'(t)+2*x(t),带初始条件

x'(0)=0,x(0)=1

其解析解为:x(t)=2/3exp(-t)+1/3exp(2t)

为了从数值上解决这个问题,我运行以下代码:

using DifferentialEquations;

function f_simple(ddu, du, u, p, t)
    ddu[1] = du[1] + 2*u[1] 
end;

du0 = [0.]
u0 = [1.]
tspan = (0.0,5.0)
prob2 = SecondOrderODEProblem(f_simple, du0, u0, tspan)
sol = solve(prob2,reltol=1e-8, abstol=1e-8);

那么,

sol(3)[2] = 122.57014434362732
而解析解的结果是134.50945587649028,所以我在这里有点迷茫。

根据,
Vern7()
适用于非刚性方程的高精度解:

sol = solve(prob2, Vern7(), reltol=1e-8, abstol=1e-8)
julia> println(sol(3)[2])
134.5094558872943
在我的机器上,这与解析解非常吻合。我不确定使用的默认方法是什么:文档表明,
solve
有一些方法可以在未指定解算器时选择合适的解算器


有关
Vern7()
的详细信息,请查看。

如果指定标准积分器,如
solve(prob2,alg=Tsit5())
,则此功能有效。不过,用您的例子在github repo中打开一个问题可能会很好,因为这里的专业集成商似乎非常不精确。这个问题实际上是作者去年解决的,请参阅中的评论。请添加diffeq包的版本。请打开一个问题。我在GitHub上打开了一个问题。谢谢大家的帮助,这已经帮了我很多忙了!根据提供的
reltol
,未自动选择
Vern7
是否有问题?