以下模型尝试将函数调用的向量返回值分配给标量向量。如果它在方程部分内,它会检查并工作,但在算法部分内会失败。这是我正在使用的 Modelica 工具中的错误,还是我做错了什么?而且,不引入中间变量x[2]怎么写呢?
model returnVector
Real x1;
Real x2;
Real x[2];
Real A[2,2] = [1,2;3,4];
Real b[2] = {8,7};
algorithm
x = Modelica.Math.Matrices.solve(A,b);
{x1, x2} = Modelica.Math.Matrices.solve(A,b);
end returnVector;
最佳答案
你做错了什么:-)
在等式中,左边是任何表达式;所以你甚至可以写 Modelica.Math.Matrices.solve(A,b)={x1,x2};
。
在算法中,左侧必须是组件引用(Modelica 3.4 中的第 11.2 节;https://modelica.org/documents/ModelicaSpec34.pdf),右侧会被评估,然后分配给左侧变量。
关于algorithm - Modelica:将数组返回值分配给标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492247/