Julia ModelingToolkit - 是否应该声明为参数或变量?

Julia ModelingToolkit - should t be declared as a parameter or variable?

我有以下代码模拟了一个简单的射弹方程。该代码按预期工作但是,我不确定 t 应该声明为参数还是变量。我都试过了,它们都有效。我改编的 This examplet 声明为参数。

我希望得到一个答案,包括任何一个选择背后的理由。

using ModelingToolkit
@parameters g vx
@variables t x(t) y(t) vy(t)
D = Differential(t)
eqs = [D(x) ~ vx,
       D(y) ~ vy,
       D(vy) ~ -g]

@named de = ODESystem(eqs, t, [x,y,vy], [g,vx])
ode_f = ODEFunction(de)

### Use in DifferentialEquations.jl

using OrdinaryDiffEq

α = π/2 / 90 * 45
vi = 10.0
vxi = vi * cos(α)
vyi = vi * sin(α)

u₀ = [0.0, 0.0, vyi]
tspan = (0.0, 3.0)
p = [9.81, vxi]
prob = ODEProblem(ode_f,u₀,tspan,p)
sol = solve(prob, Tsit5(), abstol = 1e-4, reltol = 1e-4, saveat=0.01)

x = [u[1] for u in sol.u]
y = [u[2] for u in sol.u]
using Plots
p = plot(x,y)
gui(p)
println("Press any key")
read(stdin, Char)

您链接的示例确实很旧,不久前已从教程站点中删除。实际上,它是变量还是参数并不重要,因为它被检测为自变量,因此它既不属于状态也不属于参数。