AJo*_*iri 1 sum function modelica
我有一个大小为 5 的向量,并想在变量 (summ) 的每个步骤中对它的每个元素求和,但我不知道在这种情况下如何使用 MultiSum 函数。
model add
import Modelica.Blocks.Math.MultiSum;
Real k[5]={1,2,3,4,5};
Real summ;
equation
for i in 1:4 loop
summ = MultiSum(???)
end for;
end add;
Run Code Online (Sandbox Code Playgroud)
如果您能提供帮助,我将不胜感激。
您正在尝试将块作为函数调用。这在 Modelica 中目前是不允许的。有一个提案(作为PDF)可以实现这一点,但仍在讨论中。因此,您需要调用一个function. 其中许多是定义的Modelica.Math或内置的(取决于您使用的工具)。
如果您真的想在模型中使用该块,则必须创建该块的实例。作为替代方案,重用块中的代码是有意义的。
仍然有一种更简单的方法来做你想做的事,使用内置函数sum,它在Modelica 语言规范的第 10.3.4 节“归约函数和运算符”中定义。
model add
Real k[5]={1,2,3,4,5};
Real summ;
equation
summ = sum(k);
end add;
Run Code Online (Sandbox Code Playgroud)
注意:在第 10.3.4 节“归约函数和运算符”中,您将找到如何for向sum函数添加语句以对其进行自定义。使用它来计算n元素的总和将是:
model addN
parameter Integer n(max=size(k,1)) = 3;
Real k[5]={1,2,3,4,5};
Real summ;
equation
summ = sum(k[i] for i in 1:n);
end addN;
Run Code Online (Sandbox Code Playgroud)