使用Julia的QuDiffEq求解微分方程遇数组长度要求错误,请求调试
调试QuDiffEq求解ODE时的错误
错误原因
QuDiffEq的QuLDE求解器要求初始状态数组的长度必须是大于1的2的幂次(比如2、4、8、16...),你的初始条件u0 = [1.1,1.1,1.1]长度为3,不满足这个要求,所以触发了错误提示。
修复后的代码
把初始数组长度改成2的幂次(比如4),同时调整微分方程函数的循环范围以匹配数组长度:
using QuDiffEq using OrdinaryDiffEq, Test function f(du,u,p,t) for i in 1:4 # 循环范围匹配u0的长度 du[i] = u[i] end end u0 = [1.1,1.1,1.1,1.1] # 长度改为4(2的2次幂) h = 0.01 k = 5 tspan = (0.0,10.0) prob = ODEProblem(f,u0,tspan) qsol = solve(prob,QuLDE(k),dt = h)
补充说明
- 如果实际问题需要3维状态,可以给
u0补一个占位元素(比如[1.1,1.1,1.1,0.0]),后续处理时忽略多余维度即可。 - 其他符合要求的数组长度还有2、8、16等,可根据需求选择。
内容的提问来源于stack exchange,提问作者Thành Trần
相关产品推荐
相关产品推荐

