2016-08-25 28 views
0

私は2つの配列 "x"と "fy"を持っています。私は配列 "fy" w.r.t配列 "x"の台形統合をしなければならない。私はModelicaライブラリで関数を見つけることができませんでした。私はBuildingsライブラリで関数を見つけましたが、それは私を正確に助けません。このような統合のための他の機能があれば、お勧めしますか?Modelicaの台形数値積分

答えて

6

私は、Modelicaがうまくいくかどうかに依存して、入力の積分を得る別の方法を投稿する価値があると考えました。私は時間とder()を使用するこの良い例hereを見つけました。

台形ルールの統合がMSLで行われているかどうかはわかりませんが、以下は台形ルールを実装する単純な関数です。 Hereは素敵なサマリーと例を掲載したpdfです。

今後、多くの独自の関数/モデルを記述する必要があります。 Modeliは、SciPyやGNU標準ライブラリのようなより完全な検証と検証を行った一連の機能を備えています。これらの関数は、あらゆる種類の積分、補間などが役に立つかもしれません。

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; 

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からの例を使用して

関連する問題