ドキュメンテーション

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

int

定積分および不定積分

説明

int(expr,var) では、シンボリックなスカラー変数 var について expr の不定積分を計算します。変数 var の指定はオプションです。変数を指定しない場合、intsymvar によって決定される既定の変数を使用します。expr が定数の場合、既定の変数は x です。

int(expr,var,a,b) では、vara から b までの expr の定積分を計算します。変数を指定しない場合、intsymvar によって決定される既定の変数を使用します。expr が定数の場合、既定の変数は x です。

関数 int(expr,var,[a b]) は、関数 int(expr,var,a,b) と等価です。

int(___,Name,Value) は、1 つ以上の Name,Value ペア引数を使用して追加のオプションを指定します。たとえば、'IgnoreAnalyticConstraints',true を指定すると、int は被積分関数に対して追加の単純化を適用します。

すべて折りたたむ

次の一変数式の不定積分を求めます。

syms x
f = -2*x/(1+x^2)^2;
int(f)
ans =
1/(x^2 + 1)

次の多変数式の不定積分を、変数 xz について求めます。

syms x z
f = x/(1+z^2);
int(f,x)
int(f,z)
ans =
x^2/(2*(z^2 + 1))
 
ans =
x*atan(z)

積分変数を指定しない場合、int では変数 symvar によって返される変数が使用されます。この式では、symvarx を返します。

symvar(f, 1)
ans =
x

式を 0 から 1 まで積分します。

syms x
f = x*log(1+x);
int(f,[0 1])
ans =
1/4

式を sin(t) から 1 まで積分します。

syms t
int(2*x, [sin(t) 1])
ans =
cos(t)^2

int で定積分を計算できない場合は、vpa を使用して積分を数値的に近似します。

syms x
f = cos(x)/sqrt(1 + x^2);
fInt = int(f,x,[0 10]);
fVpa = vpa(fInt)
fVpa =
0.37570628299079723478493405557162

積分を直接近似するには、vpa の代わりに vpaintegral を使用します。関数 vpaintegral はより高速で、積分の許容誤差を制御します。

fVpa = vpaintegral(f,x,[0 10])
fVpa =
0.375706

行列の要素として示された各式の不定積分を求めます。

syms a x t z
M = [exp(t) exp(a*t); sin(t) cos(t)];
int(M)
ans =
[  exp(t), exp(a*t)/a]
[ -cos(t),     sin(t)]

次の不定積分を計算します。既定の設定で、int では厳密な数学的ルールが使用されます。このルールによると、int では asin(sin(x))acos(cos(x))x として書き換えることができません。

syms x
f = acos(sin(x));
int(f,x)
ans =
x*acos(sin(x)) + x^2/(2*sign(cos(x)))

単純で実用的な解を求めるには、IgnoreAnalyticConstraints を使用してください。

int(f, x, 'IgnoreAnalyticConstraints', true)
ans =
-(x*(x - pi))/2

この積分を変数 x について計算します。既定の設定では、int によって積分が区分的オブジェクトとして返され、それぞれの分枝はシンボリック パラメーター t の特定値 (または値の範囲) に対応します。

syms x t
int(x^t, x)
ans =
piecewise(t == -1, log(x), t ~= -1, x^(t + 1)/(t + 1))

特定の場合のパラメーター値を無視するには、IgnoreSpecialCases を使用します。このオプションを使うと、int によって t=-1 という特定の場合が無視され、t<>–1 の分枝だけが返されます。

int(x^t, x, 'IgnoreSpecialCases', true)
ans =
x^(t + 1)/(t + 1)

被積分関数が積分区間内部に極をもっている場合の定積分を計算します。この積分は数学的に定義されていません。

syms x
f = 1/(x-1);
int(f,x,0,2)
ans =
NaN

ただし、コーシー主値積分は存在します。PrincipalValue を使用してコーシー主値積分を計算します。

int(f,x,0,2,'PrincipalValue',true)
ans =
0

int で閉形式の積分を算出できない場合は、未解決の積分が返されます。

syms x
f = sin(sinh(x));
int(f,x)
ans =
int(sin(sinh(x)), x)

int で閉形式の不定積分を計算できない場合は、taylor を使用して、ある点の近傍で式の近似を行い、積分を計算してください。たとえば、式を x = 0 の近傍で近似します。

fApprox = taylor(f, x, 'ExpansionPoint', 0, 'Order', 10);
int(fApprox,x)
ans =
x^10/56700 - x^8/720 - x^6/90 + x^2/2

入力引数

すべて折りたたむ

被積分関数。シンボリック式またはシンボリック関数、定数、あるいはシンボリック式やシンボリック関数、定数のベクトルまたは行列として指定します。

積分変数。シンボリック変数として指定します。この変数を指定しない場合、int では symvar(expr,1) によって決定される既定の変数が使用されます。expr が定数の場合、既定の変数は x です。

下限。数値、シンボリック数、変数、式または関数 (無限大を含む式および関数を含む) で指定します。

上限。数値、シンボリック数、変数、式または関数 (無限大を含む式および関数を含む) で指定します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'IgnoreAnalyticConstraints',true を指定すると、int は被積分関数に対して純粋に代数的な単純化のみを適用します。

被積分関数に対して純粋に代数的な単純化を適用するかどうかのインジケーター。true または false で指定します。値が true である場合は、純粋に代数的な単純化が被積分関数に適用されます。このオプションを使用すると、この積分器を直接使用した場合に複雑な結果が返されるような式に対して、比較的単純な結果が返されます。場合によっては、他の方法では計算不可能な積分を int で計算できるようにもなります。

このオプションを使用すると、間違った結果や不完全な結果につながる可能性があります。

特殊なケースを無視するかどうかのインジケーター。true または false で指定します。これにより、1 つ以上のパラメーターが、固定値の有限集合や整数の集合など、比較的小さい集合の要素であることを必要とするケースは無視されます。

主値を返すかどうかのインジケーター。true または false で指定します。値が true である場合、コーシーの主値積分が計算されます。

ヒント

  • 微分とは対照的に、シンボリックな積分はより複雑な作業です。int によって式の積分が算出できない場合、次の理由をチェックしてください。

    • 不定積分が閉形式で存在しない。

    • 不定積分は存在するが、int によって見つけることができない。

    int で閉形式の積分を算出できない場合は、未解決の積分が返されます。

    このような積分は、以下のいずれかの方法を使用して近似してみてください。

    • 不定積分では級数展開を使用する。この方法を使用して、変数の特定値近傍で積分を近似します。

    • 定積分では数値近似を使用する。

  • int で返された結果には積分定数が含まれません。

  • 不定積分では、int は暗黙的に積分変数 var が実数であると仮定します。定積分では、int は積分変数 var を指定された積分区間に制限します。一方または両方の積分限界 ab が数値でない場合、明示的に指定しない限り、inta <= b と仮定します。

アルゴリズム

IgnoreAnalyticConstraints を使用する際は、int によって以下のルールが適用されます。

  • 任意の a および b について、log(a) + log(b) = log(a·b) が成り立つ。特に、a、b、c のすべての値に対して、次の等式が有効である。

      (a·b)c = ac·bc.

  • 任意の a および b について、log(ab) = b·log(a) が成り立つ。特に、a、b、c のすべての値に対して、次の等式が有効である。

      (ab)c = ab·c.

  • f および g が標準的な数学関数、かつ任意の微小な正数について f(g(x)) = x である場合、すべての複素数値 x に対して f(g(x)) = x が有効であるものとする。以下に例を示します。

    • log(ex) = x

    • asin(sin(x)) = x, acos(cos(x)) = x, atan(tan(x)) = x

    • asinh(sinh(x)) = x, acosh(cosh(x)) = x, atanh(tanh(x)) = x

    • lambertWk(x·ex) = x (k は任意の値)

R2006a より前に導入