modelica无法申请的原因'Modelica.Math.Nonlinear.solveOneNonlinearEquation'

Reasons for modelica not being able to apply 'Modelica.Math.Nonlinear.solveOneNonlinearEquation'

我的 Modelica 模型的仿真一开始就中止了,原因如下:

The arguments u_min and u_max provided in the function call
    solveOneNonlinearEquation(f,u_min,u_max)
do not bracket the root of the single non-linear equation 0=f(u)

fa and fb must have opposite sign which is not the case

仿真开始时计算的fa和fb的值确实是同号的。我查找了 Modelica 试图调用的函数,但我不确定我是否理解 Modelica 引发此错误的原因。如果有人向我解释为什么这个函数 Modelica.Math.Nonlinear.solveOneNonlinearEquation 需要 fa 和 fb 的相反符号以及什么可能导致 fa 和 fb 具有相同的符号,我会非常高兴。你会帮助我更深入地了解 Modelica 的工作原理。

在此先感谢您的帮助, 保罗

要提供有关完全正确的评论的更多详细信息:
函数 Modelica.Math.Nonlinear.solveOneNonlinearEquation 查找函数 f 的输出越过值零的点。这一点被称为函数的“根”。一个函数可以有 none,一个或多个根。根的数量可以取决于搜索间隔。

当函数在区间的两个边界处符号相同时,可能函数中没有根,这就是为什么return出错的原因。有可能有偶数个根,但这并不能保证。尽管如此,在边界处有相反的符号并不能保证只有一个根。

例如:将间隔设置为 [-5, 5] 时,正弦曲线(可用作 Modelica.Math.Nonlinear.Examples.UtilityFunctions.fun4)将具有三个零交叉点:

寻找-55之间的根,因此有三个正确的解决方案,并且不清楚哪一个将是return值。呼叫:
Modelica.Math.Nonlinear.solveOneNonlinearEquation(function Modelica.Math.Nonlinear.Examples.UtilityFunctions.fun4(), -5,5);
将 return 0,但值也可以是 +pi-pi

相比之下,找到具有不同限制的根 [-5,-1]:
Modelica.Math.Nonlinear.solveOneNonlinearEquation(function Modelica.Math.Nonlinear.Examples.UtilityFunctions.fun4(), -5,-1);
将给出 -3.141592653589793,这是给定限制的唯一解决方案。

最后,对 [-4,2]
做同样的事情 Modelica.Math.Nonlinear.solveOneNonlinearEquation(function Modelica.Math.Nonlinear.Examples.UtilityFunctions.fun4(), -4, 2);
将触发您得到的错误:

The arguments u_min and u_max provided in the function call
    solveOneNonlinearEquation(f,u_min,u_max)
do not bracket the root of the single non-linear equation 0=f(u):
  u_min  = -4
  u_max  = 2
  fa = f(u_min) = 0.756802
  fb = f(u_max) = 0.909297
fa and fb must have opposite sign which is not the case

为了不触发错误,您需要确保在您的模拟中的所有点,极限值都具有相反的符号。