Julia ModelingToolkit - 是否应该声明为参数或变量?
Julia ModelingToolkit - should t be declared as a parameter or variable?
我有以下代码模拟了一个简单的射弹方程。该代码按预期工作但是,我不确定 t
应该声明为参数还是变量。我都试过了,它们都有效。我改编的 This example 将 t
声明为参数。
我希望得到一个答案,包括任何一个选择背后的理由。
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)
您链接的示例确实很旧,不久前已从教程站点中删除。实际上,它是变量还是参数并不重要,因为它被检测为自变量,因此它既不属于状态也不属于参数。
我有以下代码模拟了一个简单的射弹方程。该代码按预期工作但是,我不确定 t
应该声明为参数还是变量。我都试过了,它们都有效。我改编的 This example 将 t
声明为参数。
我希望得到一个答案,包括任何一个选择背后的理由。
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)
您链接的示例确实很旧,不久前已从教程站点中删除。实际上,它是变量还是参数并不重要,因为它被检测为自变量,因此它既不属于状态也不属于参数。