gpt4 book ai didi

performance - Modelica 中非线性求解器的仿真速度

转载 作者:行者123 更新时间:2023-12-04 00:59:09 25 4
gpt4 key购买 nike

为什么 Modelica 的非线性求解器 Modelica.Math.Nonlinear.solveOneNonlinearEquation 求解非线性方程比传统的不动点迭代 (FPI) 方案花费更多时间?等式

y= arctan(1-x/1+x)-x 

solveOneNonlinearEquation 求解器(基本上使用布伦特方法)求解,在 6 次迭代中求解上述方程,而传统的迭代方法需要 111 次迭代。但是,迭代方案占用的 CPU 时间少于 solveOneNonlinearEquation 求解器占用的时间(见图)。

这是为什么?可能是由于迭代方案的计算效率,即迭代方案中较少的事件生成?

CPU Time of nonlinear equation solved by Brent's method (solveOneNonlinearEquation solver) and typical fixed point iterative (FPI) scheme

最佳答案

不同的求根方法具有不同的性质。收敛速度只是一个,可以用迭代次数来计算,也可以用CPU时间来计算。两者都将在很大程度上取决于函数的起始值、曲率和单调性、边界、评估函数的成本、解析导数的可用性等。其他有趣的属性可能是收敛的保证,或者是否需要导数。
维基百科关于寻根算法的文章很好地概述了不同方法的优缺点:

如果对于您的特殊情况,一种方法比其他方法效果更好,您应该实现并使用它!基准测试时要小心,很容易找到每种方法都可以发挥作用的例子。出于这个原因,您应该在各种函数上测试每个算法,可能有 10 个不同的函数,每个函数都有不同的间隔。对于相同的功能但更大的起始间隔,二分法的性能会更差。布伦特是一种良好且经过验证的方法,这就是它在 MSL 中使用的原因。您甚至可以考虑向 MSL 发送合并请求并添加替代方案。

关于performance - Modelica 中非线性求解器的仿真速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60260770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com