Main Content

trapz

台形則による数値積分

説明

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

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

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

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

Q = trapz(X,Y) は、X で指定された座標またはスカラー間隔に対して Y を積分します。

  • X が座標のベクトルである場合、length(X)Y においてサイズが 1 に等しくない最初の次元のサイズに等しくなければなりません。

  • X がスカラー間隔の場合、trapz(X,Y)X*trapz(Y) と等価です。

Q = trapz(___,dim) は、前述の構文のいずれかを使用して、次元 dim に沿って積分します。Y の指定は必須です。X はオプションで指定できます。X を指定する場合、スカラーか、または size(Y,dim) と等しい長さをもつベクトルとすることができます。たとえば、Y が行列の場合、trapz(X,Y,2)Y の各行を積分します。

すべて折りたたむ

データ点の間隔が 1 であるベクトルの積分を計算します。

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

Y = [1 4 9 16 25];

Y は、定義域 [1, 5] における f(x)=x2 の関数値を含みます。

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

Q = trapz(Y)
Q = 42

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

データ点の間隔が等しいが 1 ではないベクトルの積分を計算します。

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

X = 0:pi/100:pi;

X の正弦を計算します。

Y = sin(X);

trapz を使用して Y を積分します。

Q = trapz(X,Y)
Q = 1.9998

点の間隔が一定であるが 1 と等しくはない場合、X のベクトルを作成する別の方法は、スカラー間隔値を指定することです。その場合、trapz(pi/100,Y)pi/100*trapz(Y) と同じになります。

非等間隔のデータがある行列の行を積分します。

x 座標のベクトルと、不規則な間隔で発生する観測値の行列を作成します。Y の行は、3 回の異なる試行で、X に含まれている時点において取得された速度データを表します。

X = [1 2.5 7 10];
Y = [5.2   7.7   9.6   13.2;
     4.8   7.0  10.5   14.5;
     4.9   6.5  10.2   13.8];

trapz を使用して各行を単独で積分し、各試行での合計移動距離を求めます。データは一定間隔で評価されないため、X を指定してデータ点の間隔を示します。データは Y の行内にあるため、dim = 2 を指定します。

Q1 = trapz(X,Y,2)
Q1 = 3×1

   82.8000
   85.7250
   82.1250

結果は、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 を使用することができます。関数式が既知の場合は、代わりに integralintegral2 または integral3 を使用できます。

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

I=-55-33(x2+y2)dxdy

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

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

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

入力引数

すべて折りたたむ

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

データ型: single | double
複素数のサポート: あり

点の間隔。1 (既定)、等間隔を表すスカラー、または座標のベクトルとして指定します。

  • X がスカラーの場合、データ点の等しい間隔を指定し、trapz(X,Y)X*trapz(Y) と等価です。

  • X がベクトルの場合、データ点の x 座標を指定し、length(X)Y の積分の次元と同じサイズでなければなりません。

データ型: single | double

演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。

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

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

    trapz(Y,1) column-wise computation

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

    trapz(Y,2) row-wise computation

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

詳細

すべて折りたたむ

台形法

trapz は、台形法を使って数値を積分します。このメソッドでは、領域を台形に分割してより簡単に計算できるようにすることで、間隔の積分を近似します。たとえば、以下は 8 つの等間隔な台形を使用した正弦関数の台形積分です。

The plot of one period of the sin(x) function with eight trapezoids underneath the curve to estimate its area

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

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

各点の間隔は、スカラー値 baN と等しくなっています。既定では、MATLAB® が使用する間隔は 1 です。

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

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

ここで、a=x1<x2<...<xN<xN+1=b であり、(xn+1xn) は連続する点の各ペアの間隔です。

ヒント

  • trapzcumtrapz を使用して、離散データ セットで数値積分を実行します。データに関数式を使用できる場合は、代わりに integralintegral2、または integral3 を使用します。

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

拡張機能

バージョン履歴

R2006a より前に導入