ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

  • Q = trapz(Y)
  • Q = trapz(X,Y)
  • Q = trapz(___,dim)

説明

Q = trapz(Y) は、単位間隔での台形法を使って、Y の近似積分値を返します。以下のように、Y のサイズによって積分の次元が決まります。

  • Y がベクトルの場合、trapz(Y)Y の近似積分です。

  • Y が行列の場合、trapz(Y) は各列で積分し、積分値の行ベクトルを返します。

  • Y が多次元配列の場合、trapz(Y) は、サイズが 1 でない最初の次元に沿って積分します。この次元のサイズは 1 になりますが、他の次元のサイズは変わりません。

Q = trapz(X,Y) は、間隔のインクリメント XY を積分します。既定では、trapz は、サイズが 1 でない Y の最初の次元で演算を行います。length(X) は、この次元のサイズと同じでなければなりません。X がスカラーの場合、trapz(X,Y)X*trapz(Y) と等価です。

Q = trapz(___,dim) は、上記の構文のいずれかを使用して、次元 dim に沿って積分します。Y の指定は必須です。X はオプションで指定できます。X の長さが指定されている場合は、size(Y,dim) と同じでなければなりません。たとえば、Y が行列の場合、trapz(X,Y,2)Y の各行を積分します。

すべて折りたたむ

単位間隔のデータのベクトルの積分

データの数値ベクトルを作成します。

Y = [1 4 9 16 25];

Y には、次の関数からの等間隔の点が 5 つ含まれています: f(x)=x2

trapz を使用して、単位間隔のデータ点を積分します。

Q = trapz(Y)
Q =

    42

この近似積分では、値 42 が得られます。この場合、厳密な答えはわずかに小さい 4113 になります。関数 trapz は、積分値を過大評価しますが、これは f(x) が上に凹であるためです。

非単位間隔のデータのベクトルの積分

領域ベクトル X を作成します。

X = 0:pi/100:pi;

X の正弦を計算し、結果を Y に保存します。

Y = sin(X);

trapz を使用して、Y に含まれる関数値を積分します。

Q = trapz(X,Y)
Q =

    1.9998

点の間隔が一定で 1 ではない場合、間隔の値で乗算でき、この場合では pi/100*trapz(Y) になります。値を trapz(X,Y) で直接関数に渡しても答えは同じです。

非等間隔の行列の積分

時間値のベクトル X を作成します。X 内の不規則な間隔で評価される値を含む行列 Y も作成します。

X = [1 2.5 7 10]';
Y = [5.2 4.8 4.9 5.1; 7.7 7.0 6.5 6.8; 9.6 10.5 10.5 9.0; 13.2 14.5 13.8 15.2]
Y =

    5.2000    4.8000    4.9000    5.1000
    7.7000    7.0000    6.5000    6.8000
    9.6000   10.5000   10.5000    9.0000
   13.2000   14.5000   13.8000   15.2000

Y の列は、X に含まれるタイミングで複数回の別々の試行で取得される速度データを表します。

trapz を使用して各列を独立して積分し、各試行で合計移動距離を求めます。関数の値は一定間隔で評価されないため、X を指定してデータ点の間隔を示します。

Q = trapz(X,Y)
Q =

   82.8000   85.7250   83.2500   80.7750

結果は、Y の各列につき 1 つの積分値の行ベクトルです。既定では、trapz は、サイズが 1 でない Y の最初の次元で積分します。

または、dim = 2 を指定することで行列の行を積分することもできます。

この場合は、速度データの行を含む Y' について trapz を使用します。

dim = 2;
Q1 = trapz(X,Y',dim)
Q1 =

   82.8000
   85.7250
   83.2500
   80.7750

結果は、Y' の各行につき 1 つの積分値の列ベクトルです。

複数の数値積分

領域値のグリッドを作成します。

x = -3:.1:3; 
y = -5:.1:5; 
[X,Y] = meshgrid(x,y); 

グリッドで関数 f(x,y)=x2+y2 を計算します。

F = X.^2 + Y.^2;

trapz は関数式ではなく数値データを積分するため、一般的には式を知らなくてもデータの行列に trapz を使用することができます。

trapz を使用して、2 重積分を近似します。

I=5533(x2+y2)dxdy.

数値データの配列で 2 重または 3 重積分を計算するには、trapz の関数呼び出しを入れ子にします。

I = trapz(y,trapz(x,F,2))
I =

  680.2000

trapz は、x を最初に積分し、列ベクトルを生成します。次に、y を積分し、列ベクトルを単一のスカラーに減らします。trapz は、厳密な答えである 680 よりわずかに大きく推定しますが、これは f(x,y) が上に凹であるためです。

入力引数

すべて折りたたむ

Y — 数値データベクトル | 行列 | 多次元配列

ベクトル、行列または多次元配列として指定する数値データ。既定では、trapz は、サイズが 1 でない Y の最初の次元で積分します。

データ型: single | double
複素数のサポート: はい

X — 点の間隔1 (既定値) | 等間隔を表すスカラー | 非等間隔を表すベクトル

点の間隔。1 (既定)、等間隔を表すスカラーまたは非等間隔を表すベクトルとして指定します。X がベクトルの場合、length(X)Y の積分の次元と同じサイズでなければなりません。

データ型: single | double
複素数のサポート: はい

dim — 動作する対象の次元正の整数スカラー

動作する対象の次元。正の整数のスカラーとして指定します。値が指定されていない場合、既定値はサイズが 1 ではない最初の配列次元です。

2 次元の入力配列 Y について考えます。

  • trapz(Y,1) は、Y の列の連続する要素に対して有効で、積分値の行ベクトルを返します。

  • trapz(Y,2) は、Y の行の連続する要素に対して有効で、積分値の列ベクトルを返します。

dimndims(Y) よりも大きい場合、trapzY と同じサイズのゼロの配列を返します。

詳細

すべて折りたたむ

台形法

trapz は、台形法を使って数値を積分します。このメソッドでは、領域を台形に分割してより簡単に計算できるようにすることで、間隔の積分を近似します。

N+1 の等間隔の点での積分では、近似は次のようになります。

abf(x)dxba2Nn=1N(f(xn)+f(xn+1))=ba2N[f(x1)+2f(x2)+...+2f(xN)+f(xN+1)],

各点の間隔は、スカラー値 baN. と等しくなっています。

各点の間隔が一定ではない場合、式は次のように一般化されます。

abf(x)dx12n=1N(xn+1xn)[f(xn)+f(xn+1)],

ここで、(xn+1xn) は連続する点の各ペアの間隔です。

ヒント

  • trapz は、演算対象の次元のサイズを 1 に減らし、最後の積分値のみを返します。cumtrapz は途中の積分値も返し、演算対象の次元のサイズを維持します。

この情報は役に立ちましたか?