主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

積分

Fがシンボリック式の場合、

int(f)
             

は、差异(F)=Fとなる別のシンボリック式Fを求めようとするものです。つまり、int(f)は、Fの不定積分 (閉形式で存在する場合) を返します。微分と同様に、

int(f,v)
             

は、赛姆瓦尔で決められる変数ではなく、シンボリック オブジェクトvを、積分変数として使います。次の表にintの使い方を示します。

数学的演算

MATLAB®コマンド

x N D x = { 日志 ( x ) 如果 N = 1. x N + 1. N + 1. 否则 .

整数(x^n)またはint(x^n,x)

0 π / 2. ( 2. x ) D x = 1.

int(sin(2*x),0,pi/2)またはint(sin(2*x),x,0,pi/2)

g=cos(在+b时)

G ( T ) D T = ( A. T + B ) / A.

g=cos(a*t+b)int(g)またはint(g,t)

J 1. ( Z ) D Z = J 0 ( Z )

int(贝塞尔(1,z))またはint(贝塞尔(1,z,z)

微分とは対照的に、シンボリックな積分はより複雑な作業です。多くの難問が、積分の計算において生じ得ます。

  • 積分Fが閉形式で存在しない

  • 馴染みのない関数を定義する

  • 不定積分が存在しても、ソフトウェアがそれを求められない

  • 大型コンピューターでは不定積分の検出が可能でも、使用しているマシンではメモリと時間の不足で求められない

それにもかかわらず、多くの場合、MATLABはシンボリックな積分をうまく実行できます。たとえば、次のシンボリック変数を作成します。

符号A.B西塔xYNUZ

次の表に、これらの変数を含んだ式の積分を示します。

F

int(f)

符号x n f=x^n;
                
int(f)
                
ans=分段(n==-1,对数(x),n=-1,。。。(n+1)/(n+1))
                
syms y f=y^(-1);
                
int(f)
                
ans=对数(y)
                
符号x n f=n^x;
                
int(f)
                
ans=n^x/日志(n)
                
符号a bθf=sin(a*θ+b);
                
int(f)
                
ans=-cos(b+a*θ)/a
                
符号u f=1/(1+u^2);
                
int(f)
                
ans=atan(u)
                
符号x f=exp(-x^2);
                
int(f)
                
ans=(pi^(1/2)*erf(x))/2
                

最後の例exp(-x^2)は、三角関数や指数関数などの標準微積分を含む積分に公式がないときにどうなるかを示しています。この場合、MATLABはエラー関数erfを使って答えを返します。

MATLABが関数Fの積分を求められない場合は、int(f)を返すだけです。

定積分も行えます。

定積分

コマンド

A. B F ( x ) D x

int(f,a,b)

A. B F ( v ) D v

int(f,v,a,b)

ここで、別の例をいくつか示します。

F

a、 b

int(f,a,b)

符号x f=x^7;
                
a=0;b=1;
                
int(f,a,b)
                
ans=1/8
                
符号x f=1/x;
                
a=1;b=2;
                
int(f,a,b)
                
ans=日志(2)
                
syms x f=对数(x)*sqrt(x);
                
a=0;b=1;
                
int(f,a,b)
                
ans=-4/9
                
符号x f=exp(-x^2);
                
a=0;b=inf;
                
int(f,a,b)
                
ans=pi^(1/2)/2
                
symszf=besselj(1,z)^2;
                
a=0;b=1;
                
int(f,a,b)
                
ans=超几何([3/2,3/2][2, 5/2, 3], -1)/12
                

ベッセル関数 (贝塞尔) の例に対して、関数双重的を使って、積分値の数値近似を計算することが可能です。コマンド

符号za=int(贝塞尔(1,z)^2,0,1)
             

は以下を返します。

a=超几何([3/2,3/2],[2,5/2,3],-1)/12
             

コマンド

a=双(a)
             

は以下を返します。

a=0.0717
             

実数パラメーターをもつ積分

シンボリック積分における困難の 1.つは、さまざまなパラメーターの "値" です。たとえば A.が任意の正の実数の場合、式

E A. x 2.

は、xが±∞に向かうと 0に収束する正の釣鐘型曲線になります。この曲線の一例はa=1/2で作成できます。

符号xa=sym(1/2);f=exp(-a*x^2);fplot(f)
              

ただし、次の積分を計算しようとする場合

E A. x 2. D x

A.に値が与えられていない場合は、MATLABは A.を複素数であると仮定します。そのため、A.の偏角に依存する区分的解を返します。A.が正の実数の場合のみを考える場合、假定を使用して、A.の仮定を設定します。

符号a假设(a>0)
              

次のコマンド群を使って、前述の積分を計算します。

符号x f=exp(-a*x^2);int(f,x,-inf,inf)
              

次の値が返されます。

ans=pi^(1/2)/a^(1/2)
              

複素数パラメーターの積分

以下の積分

1. A. 2. + x 2. D x

A.の複素数値に対して計算するには、以下のように入力します。

符号a x f=1/(a^2+x^2);F=int(F,x,-inf,inf)
              

符号を使用して、変数のすべての仮定を消去します。シンボリック変数と仮定の詳細は、シンボリック オブジェクトおよびその仮定の削除を参照してください。

前のコマンドは、複素数出力を行います。

F=(pi*signIm(1i/a))/a
              

関数符号は、次のように定義されます。

符号 ( Z ) = { 1. 如果 伊姆河 ( Z ) > 0 , 伊姆河 ( Z ) = 0 Z < 0 0 如果 Z = 0 -1 否则 .

a=1+iのときのFを評価するには、次のように入力します。

g=子系统(F,1+i)
              
g=pi*(1/2-1i/2)
              
双(g)
              
ans=1.5708-1.5708i
              

可変精度演算を使用した高精度の数値積分

高精度の数値積分が 符号数学工具箱™ の関数vpaintegralに実装されています。vpaintegralは、倍精度演算を使用する MATLAB関数完整的とは異なり、可変精度の演算を使用します。

贝塞利(5,25*u)。*exp(-u*25)を、完整的vpaintegralの両方を使用して積分します。関数完整的を返して警告を表示しますが、vpaintegralは正しい結果を返します。

符号u f=贝塞利(5,25*x)。*exp(-x*25);乐趣=@(u)贝塞利(5,25*u)。*exp(-u*25);usingIntegral=积分(fun,0,30)usingpaintegral=vpaintegral(f,0,30)
              
警告:遇到无限或非数字值。usingIntegral=NaN UsingPaintegral=0.688424
              

詳細は、vpaintegralを参照してください。