0
我有兩個數組「x」和「fy」。我必須做陣列「fy」w.r.t數組「x」的梯形整合。我無法在Modelica庫中找到一個函數。我在Building庫中找到了一個函數,但它對我完全沒有幫助。你能否建議,如果這種集成有其他功能。Modelica中的梯形數值積分
我有兩個數組「x」和「fy」。我必須做陣列「fy」w.r.t數組「x」的梯形整合。我無法在Modelica庫中找到一個函數。我在Building庫中找到了一個函數,但它對我完全沒有幫助。你能否建議,如果這種集成有其他功能。Modelica中的梯形數值積分
我認爲這是值得發佈一種替代方法來獲得依賴於Modelica做得好的輸入的積分。我發現這個很好的例子here使用時間和der()
。
我不確定是否在MSL中完成梯形法則積分,但是下面是實現梯形法則的簡單函數。 Here是一個很好的總結和例子的pdf。
未來,您可能需要編寫許多自己的功能/模型。 Modelica仍然需要很多功能,例如像SciPy或GNU標準庫這樣的更完整的經過驗證和驗證的數學函數集,這些函數將具有各種積分,插值等可能有用的內容。
function integral_TrapezoidalRule "Integral of array y(x) using the trapezoidal rule"
extends Modelica.Icons.Function;
input Integer n(min=2) "length of array";
input Real[n] x "dependent array";
input Real[n] y "independent array";
output Real integral "Resulting integral";
protected
Real[n-1] dx;
algorithm
integral := 0;
for i in 1:n-1 loop
dx[i] := x[i+1] - x[i];
integral := integral + 0.5*dx[i]*(y[i+1]+y[i]);
end for;
end integral_TrapezoidalRule;
使用從PDF的例子中,調用與所述功能:
n = 6;
x = {2.1,2.4,2.7,3.0,3.3,3.6};
y = {3.2,2.7,2.9,3.5,4.1,5.2};
收率:
integral = 5.22;