提问人:Marc Schneider 提问时间:12/30/2022 最后编辑:ShayanMarc Schneider 更新时间:12/30/2022 访问量:141
Julia “!” 中的感叹号在脚本中函数后
Exclamation mark in Julia "!" after function in scripts
问:
我正在尝试将我的 ODE 的多个解决方案保存在数组中。现在这是我得到的:
sols = []
for i in 1:numSim
if solver == "Rosenbrock23"
solution = solve(odeprob, Rosenbrock23())
append!(sols, solution)
end
end
正如你所看到的,如果使用某个 ode 求解器,我只想附加到这个 Array。但是,“append!” 语句会忽略此语句,并运行循环的每次迭代。我尝试预先分配数组 sol,使用这样的语句: 但是在这里,我正在努力解决数组 sol 的类型声明。sols[i] = solution
我试过了sols = zeros(length)
然后sols[i] = solution
但是,解决方案的类型为 ODESolution,不能转换为 Float64
答:
0赞
Shayan
12/30/2022
#1
请提供足够的信息以获得确切的答案。我无法重现您的问题,因为您没有提到 .既然你声明了,那么 of 应该是 ;因此,它应该能够包含任何元素。
但是,我可以复制官方文档中的代码(示例 1:求解标量方程 (ODE)),并将其与您的方法相结合:odeprob
numSim
sols = []
eltype
sols
Any
using DifferentialEquations
f(u,p,t) = 1.01*u
u0 = 1/2
tspan = (0.0,1.0)
odeprob = ODEProblem(f,u0,tspan)
sols = []
numSim = 2
solver = "Rosenbrock23"
for i in 1:numSim
if solver == "Rosenbrock23"
solution = solve(odeprob, Rosenbrock23())
append!(sols, solution)
end
end
然后,如果我调用变量:sols
julia> sols
22-element Vector{Any}:
0.5
0.5015852274675505
0.5177172276935554
0.5423763076371255
0.5852018498590001
0.6425679823795596
0.7275742030693312
0.835930076418226
0.9846257728490266
1.1713401410831334
1.3738764155543854
0.5
0.5015852274675505
0.5177172276935554
0.5423763076371255
0.5852018498590001
0.6425679823795596
0.7275742030693312
0.835930076418226
0.9846257728490266
1.1713401410831334
1.3738764155543854
评论