modelica - 如何查看modelica中solveOneNonlinearEquation函数的迭代次数?
问题描述
我在 Modelica 中使用 solveOneNonlinearEquation 求解器,它使用 Brent 方法找到非线性方程的根。但是,我需要知道 Brent 的方法进行了多少次迭代,以便将收敛速度与另一种方法(如定点迭代)进行比较。内置求解器没有输出“NumberOfIterations”的选项,因此我尝试编写自己的 Brent 方法函数并放置一个计数器。但是我必须向该函数输入一个函数并得到错误“类型前缀流,输入和输出仅适用于结构化组件,如果组件的任何元素都没有对应的相同类别的类型前缀。”
有人可以帮我吗?
解决方案
的代码Modelica.Math.Nonlinear.solveOneNonlinearEquation
未加密。只需复制它并创建您自己的solveOneNonlinearEquation
,其中包含迭代计数器,例如
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.solveNonlinearEquations1
。
推荐阅读
- php - 在加载数据的底部显示“11111111”为什么?
- java - 标准 API(规范 JPA)加入
- laravel - Laravel groupBy 有时返回对象,对于其他一些数据,它返回数组数组
- vba - 在excel单元格字符串中的某些字符之间读取
- c# - 使用 svcutil 从 WSDL 和 XSD 生成类时命名空间错误
- c++ - 如果`v`是一个类,`v + 1 - 1`可以被编译器优化为`v`吗?
- java - 使用 java swing 的新行 JLabel
- sql - 在 apex 中不断收到无效的标识符和不正确的数据类型
- python - 如何解决“DictReader”对象不可下标错误?
- kubernetes - 在 openshift/kubernetes 中打印当前命名空间的简单命令或环境变量