如何在modelica中查看SolveOnOnline方程函数的迭代次数?

如何在modelica中查看SolveOnOnline方程函数的迭代次数?,modelica,Modelica,我正在使用Modelica中的SolveOnOnline方程求解器,它使用Brent的方法来找到非线性方程的根。然而,我需要知道Brent的方法进行了多少次迭代,以便将收敛速度与另一种方法(如定点迭代)进行比较。内置解算器没有输出“NumberOfIterations”的选项,因此我尝试编写自己的Brent方法函数并放置计数器。 但是,我必须为此函数输入一个函数,并获得错误。如果组件的任何元素都没有相同类别的对应类型前缀,则类型前缀流、输入和输出只能应用于结构化组件 有人能帮我一下吗?Model

我正在使用Modelica中的SolveOnOnline方程求解器,它使用Brent的方法来找到非线性方程的根。然而,我需要知道Brent的方法进行了多少次迭代,以便将收敛速度与另一种方法(如定点迭代)进行比较。内置解算器没有输出“NumberOfIterations”的选项,因此我尝试编写自己的Brent方法函数并放置计数器。 但是,我必须为此函数输入一个函数,并获得错误。如果组件的任何元素都没有相同类别的对应类型前缀,则类型前缀流、输入和输出只能应用于结构化组件

有人能帮我一下吗?

Modelica.Math.nonline.solveOnOnline方程的代码没有加密。只需复制它并创建自己的SolveOnOnline方程,其中包含迭代的计数器,如

function solveOneNonlinearEquation
...
protected 
  Integer iterations = 0;
...
algorithm
...
  // Search loop
  while not found loop
    iterations := iterations + 1;
...
  end while;

  Modelica.Utilities.Streams.print("Iterations: " + String(iterations));
...
end solveOneNonlinearEquation;
有关以函数作为输入的函数的用法,请参见示例Modelica.Math.Nonlinear.Examples.solveNonlinerQuations1。

Modelica.Math.Nonlinear.solveOnOnlineareQuation的代码未加密。只需复制它并创建自己的SolveOnOnline方程,其中包含迭代的计数器,如

function solveOneNonlinearEquation
...
protected 
  Integer iterations = 0;
...
algorithm
...
  // Search loop
  while not found loop
    iterations := iterations + 1;
...
  end while;

  Modelica.Utilities.Streams.print("Iterations: " + String(iterations));
...
end solveOneNonlinearEquation;
有关使用函数作为输入的函数的用法,请参见示例Modelica.Math.Nonlinear.Examples.solveNonlinerQuations1