Main Content

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

int

定積分および不定積分

説明

F = int(expr)expr の不定積分を計算します。int は、symvar(expr,1) により決定される既定の積分変数を使用します。expr が定数の場合、既定の積分変数は x です。

F = int(expr,var) は、シンボリック スカラー変数 var について expr の不定積分を計算します。

F = int(expr,a,b)a から b までの expr の定積分を計算します。int は、symvar(expr,1) により決定される既定の積分変数を使用します。expr が定数の場合、既定の積分変数は x です。

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

F = int(expr,var,a,b) では、シンボリックなスカラー変数 var について a から b までの expr の定積分を計算します。

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

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

すべて折りたたむ

一変数の式を定義します。

syms x
expr = -2*x/(1+x^2)^2;

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

F = int(expr)
F = 

1x2+11/(x^2 + 1)

変数 x および z をもつ多変数関数を定義します。

syms x z
f(x,z) = x/(1+z^2);

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

Fx = int(f,x)
Fx(x, z) = 

x22z2+1x^2/(2*(z^2 + 1))

Fz = int(f,z)
Fz(x, z) = xatan(z)x*atan(z)

積分変数を指定しない場合、int は変数 symvar によって返される最初の変数を積分変数として使用します。

var = symvar(f,1)
var = xx
F = int(f)
F(x, z) = 

x22z2+1x^2/(2*(z^2 + 1))

シンボリック式を 0 から 1 まで積分します。

syms x
expr = x*log(1+x);
F = int(expr,[0 1])
F = 

14sym(1/4)

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

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

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

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

010cos(x)x2+1dxint(cos(x)/sqrt(x^2 + 1), x, 0, 10)

Fvpa = vpa(Fint)
Fvpa = 0.37570628299079723478493405557162vpa('0.37570628299079723478493405557162')

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

Fvpaint = vpaintegral(f,x,[0 10])
Fvpaint = 0.375706vpa('0.375706')

4 つの式を要素として含むシンボリック行列を定義します。

syms a x t z
M = [exp(t) exp(a*t); sin(t) cos(t)]
M = 

(eteatsin(t)cos(t))[exp(t), exp(a*t); sin(t), cos(t)]

要素ごとに行列の不定積分を求めます。

F = int(M,t)
F = 

(eteata-cos(t)sin(t))[exp(t), exp(a*t)/a; -cos(t), sin(t)]

シンボリック関数を定義し、その不定積分を計算します。

syms f(x)
f(x) = acos(cos(x));
F = int(f,x)
F(x) = 

xacos(cos(x))-x22sign(sin(x))x*acos(cos(x)) - x^2/(2*sign(sin(x)))

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

単純で実用的な解を求めるには、'IgnoreAnalyticConstraints'true に設定します。

F = int(f,x,'IgnoreAnalyticConstraints',true)
F(x) = 

x22x^2/2

シンボリック式 xt を定義し、変数 x についてその不定積分を計算します。

syms x t
F = int(x^t,x)
F = 

{log(x) if  t=-1xt+1t+1 if  t-1piecewise(t == -1, log(x), t ~= -1, x^(t + 1)/(t + 1))

既定では、int は他のシンボリック パラメーター t のすべての値について一般的な結果を返します。この例では、intt=-1 の場合および t-1 の場合について 2 つの積分結果を返します。

特定の場合のパラメーター値を無視するには、'IgnoreSpecialCases'true に設定します。このオプションを使用すると、intt=-1 という特定の場合を無視し、t-1 の解を返します。

F = int(x^t,x,'IgnoreSpecialCases',true)
F = 

xt+1t+1x^(t + 1)/(t + 1)

x=1 に極をもつシンボリック関数 f(x)=1/(x-1) を定義します。

syms x
f(x) = 1/(x-1)
f(x) = 

1x-11/(x - 1)

この関数の x=0 から x=2 までの定積分を計算します。積分区間に極が含まれているため、結果は定義されません。

F = int(f,[0 2])
F = NaNsym(NaN)

ただし、コーシー主値積分は存在します。コーシー主値積分を計算するには、'PrincipalValue'true に設定します。

F = int(f,[0 2],'PrincipalValue',true)
F = 0sym(0)

xexdx の積分を求めます。

'Hold' オプションを true に設定することにより、評価せずに積分を定義します。

syms x g(y)
F = int(x*exp(x),'Hold',true)
F = 

xexdxint(x*exp(x), x, 'Hold = TRUE', true)

関数 integrateByParts を使用することで、F に対して部分ごとの積分を適用できます。積分される微分として exp(x) を使用します。

G = integrateByParts(F,exp(x))
G = 

xex-exdxx*exp(x) - int(exp(x), x, 'Hold = TRUE', true)

G の積分を評価するには、関数 release を使用して 'Hold' オプションを無視します。

Gcalc = release(G)
Gcalc = xex-exx*exp(x) - exp(x)

結果を、'Hold' オプションを設定しない場合の int から返される積分結果と比較します。

Fcalc = int(x*exp(x))
Fcalc = exx-1exp(x)*(x - 1)

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

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

sin(sinh(x))dxint(sin(sinh(x)), x)

テイラー展開を使用して、被積分関数 f(x) を多項式として近似できます。taylor を適用して、被積分関数 f(x)x=0 付近の多項式として展開します。近似された多項式の積分を計算します。

fTaylor = taylor(f,x,'ExpansionPoint',0,'Order',10)
fTaylor(x) = 

x95670-x790-x515+xx^9/5670 - x^7/90 - x^5/15 + x

Fapprox = int(fTaylor,x)
Fapprox(x) = 

x1056700-x8720-x690+x22x^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 である場合、コーシーの主値積分が計算されます。

未評価積分のインジケーター。true または false として指定します。値が true の場合、int は積分を評価せずに返します。

ヒント

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

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

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

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

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

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

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

  • 不定積分では int は結果で積分の定数を返しません。数学的に等価な式を積分した結果は異なる場合があります。たとえば、syms x; int((x+1)^2)(x+1)^3/3 を返し、syms x; int(x^2+2*x+1)(x*(x^2+3*x+3))/3 を返します。これは最初の結果とは 1/3 異なっています。

  • 不定積分では、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)) = xacos(cos(x)) = xatan(tan(x)) = x

    • asinh(sinh(x)) = xacosh(cosh(x)) = xatanh(tanh(x)) = x

    • ランベルトのW関数のすべての分岐指標 k に対して、Wk(x·ex) = x

R2006a より前に導入