2016-08-25 78 views
0

我有兩個數組「x」和「fy」。我必須做陣列「fy」w​​.r.t數組「x」的梯形整合。我無法在Modelica庫中找到一個函數。我在Building庫中找到了一個函數,但它對我完全沒有幫助。你能否建議,如果這種集成有其他功能。Modelica中的梯形數值積分

回答

6

我認爲這是值得發佈一種替代方法來獲得依賴於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;