我正在使用python中Julia的隐式求解器来解决DAE问题。当我在计算过程中检查不同的值时,我注意到求解器从t=0开始积分,并最终进入下一个时间点t1>0,但是在几次迭代之后跳回到t=0。过了一段时间,它跳到下一个时间点t2>t1,并继续这样下去,直到t成功到达指定的结束t=tend。
我使用的solver如下所示:
第一个月
有谁能告诉我为什么求解器总是跳回到t=0(是因为求解DAE问题的隐式方法),如果一些参数/变量依赖于t,它如何影响求解器计算的解?
我正在使用python中Julia的隐式求解器来解决DAE问题。当我在计算过程中检查不同的值时,我注意到求解器从t=0开始积分,并最终进入下一个时间点t1>0,但是在几次迭代之后跳回到t=0。过了一段时间,它跳到下一个时间点t2>t1,并继续这样下去,直到t成功到达指定的结束t=tend。
我使用的solver如下所示:
第一个月
有谁能告诉我为什么求解器总是跳回到t=0(是因为求解DAE问题的隐式方法),如果一些参数/变量依赖于t,它如何影响求解器计算的解?
1条答案
按热度按时间bf1o4zei1#
这是意料之中的。ODE/DAE求解器经常会在时间上跳来跳去(特别是如果你有回调,他们需要找到回调发生的时间)。具体来说,我相信你所观察到的是,隐式方法中发生的非线性求解通常必须在它试图采取的步骤的开始和结束时对函数进行多次求值。
最后,您可能不希望使用
DImplicitEuler
。对于隐式DAE,DFBDF
或IDA
(来自Sundials.jl
)可能会更快。此外,切换到质量矩阵公式将允许您使用Rosenbrock23
或FBDF
等求解器,thta可能会更快。