我如何访问diff_sol的值在给定的例子(在终端上)?当我尝试时,它说diff_sol undefined


for j in 1:10
δ= y[j,:]
diff_prob = ODEProblem(Proteo_Deg, u0,t_span,δ)
diff_sol = solve(diff_prob)
end

for循环创建了一个局部作用域,因此在循环中引入的新变量只存在于该循环中。

一种常见的解决方法是在循环之前初始化变量。(在REPL之外,您通常希望避免使用全局变量,例如:如果这是在脚本文件中,则将初始化和循环都放在函数中。)需要考虑的一件事是循环的目标是什么。目前,您正在计算10个ODE解决方案,但随后将它们丢弃,因为它们都被分配给相同的变量diff_sol。也许你想把它们保存在一个数组中?
diff_solutions = Array{ODESolution}(undef, 10)
for j in 1:10 
δ = y[j,:]
diff_prob = ODEProblem(Proteo_Deg, u0,t_span,δ)
diff_solutions[j] = solve(diff_prob)
end

现在,diff_solutions包含了所有10个ODE解,并且也可以在循环外访问。如果这是在一个函数中,那么您可以在循环之后return diff_solutions

最新更新