2

我正在尝试使用 Julia 中的 ModelingToolkit.jl 求解二阶微分方程:

using ModelingToolkit
using DifferentialEquations: solve
using Plots: plot

@variables s ρ(s) Dρ(s)
@parameters N,M,Λ
D = Differential(s)

ω = sqrt(N - 1)*N/(N*(4*N*s^2 - 4*N*s + N - 4*s^2 + 4*s))
eqn = D(D(ρ)) ~ -4*ω*ρ

@named eqnODE = ODESystem([eqn],s)

根据我是否跑步,我似乎得到了非常不同的答案

sol1 = solve(ODEProblem(eqnODE, [ρ => 0.5, D(ρ) => 0], (0.0,1.0), [N => 10000]))

或者

lowered_eqnODE = ode_order_lowering(eqnODE)
sol2 = solve(ODEProblem(lowered_eqnODE, [ρ => 0.5, D(ρ) => 0], (0.0,1.0), [N => 10000]))

这怎么可能?我的第一个想法是我搞砸了参数,但我想我在这里做的一样:https ://mtk.sciml.ai/dev/tutorials/higher_order/

这是两个图: sol1 sol1 的图 的图 sol2 的图(一阶系统) sol2 的图(一阶系统)

谢谢你的帮助!

4

0 回答 0