求解一个定值输入u的DAEproblem时,计算同一时刻的值需要迭代多次(方程数加1次)?

为什么在求解一个定值输入u的DAEproblem时,计算同一个时刻的值需要迭代多次(方程数加1次)?

例如对于一个包含48个方程的DAE方程,
我的方程是稳态(输入变量不变)的,事实上结果的采样点的间隔确实比较大,但是每一个采样时刻所耗费的时间巨大,我检测到:每计算一个时刻,程序进入DAEfunction(下面的f_dae1_中 @show t)的次数是49次。 导致我程序计算的效率大大降低,如图1。

但是当输入变量是动态时,不管DAE方程组包含多少个方程,每计算一个时刻就只进入DAEfunction一次,如图2。

我需要解方程组阶数比较大,如何能提高我用JuliaDAE求解的效率?

function f_dae1_(out,du,u,p,t)
    @show t
    A,F,Q,u = p
    out .= F*u + Q*u(t) - A_*du
end

prob2_ = DAEProblem(f_dae1_,du₀,u₀,tspan,differential_vars=differential_vars1,p)

图1 程序中@show t结果
image

图2 程序中@show t结果
image

京ICP备17009874号-2