メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

積分

R2026a

この例では、Symbolic Math Toolbox™ を使った定積分の計算方法を説明します。

Definite integral of sin(x) dx from a to b

定積分

f(x)=sin(x) における [π2,3π2] の範囲の定積分 ∫abf(x)dx が 0 であることを示します。

syms x
int(sin(x),pi/2,3*pi/2)
ans = 0

最大値と最小値による定積分

a≥0 の場合に F(a)=∫-aasin(ax)sin(x/a)dx を最大化するには、はじめにシンボリック変数を定義し、a≥0 と仮定します。

syms a x
assume(a >= 0);

次に、最大化する関数を定義します。

F = int(sin(a*x)*sin(x/a),x,-a,a)
F = 

{1-sin(2)2 if  a=12 a sin(a2) cos(1)-a2 cos(a2) sin(1)a4-1 if  a≠1

ここで、a=1 の場合の特殊なケースに注意してください。計算を容易にするには、assumeAlso を使用してこのケースを無視します。

assumeAlso(a ~= 1);
F = int(sin(a*x)*sin(x/a),x,-a,a)
F = 

2 a sin(a2) cos(1)-a2 cos(a2) sin(1)a4-1

F のプロットを作成し、その形状を確認します。

fplot(F,[0 10])

Figure contains an axes object. The axes object contains an object of type functionline.

diff を使用して、a について F の導関数を求めます。

Fa = diff(F,a)
Fa = 

2 σ1a4-1+2 a 2 a cos(a2) cos(1)-2 a cos(a2) sin(1)+2 a3 sin(a2) sin(1)a4-1-8 a4 σ1a4-12where  σ1=sin(a2) cos(1)-a2 cos(a2) sin(1)

Fa の零点は F の局所的極値です。

hold on
fplot(Fa,[0 10])
grid on

Figure contains an axes object. The axes object contains 2 objects of type functionline.

最大値は 1 と 2 の間にあります。vpasolve を使用してこの区間における Fa の零点の近似を求めます。

a_max = vpasolve(Fa,a,[1,2])
a_max = 1.5782881585233198075558845180583

subs を使用して積分の最大値を取得します。

F_max = subs(F,a,a_max)
F_max = 0.36730152527504169588661811770092 cos(1)+1.2020566879911789986062956284113 sin(1)

結果にはまだ厳密な数値 sin(1) と cos(1) が含まれています。vpa を使用してそれらを数値近似と置き換えます。

vpa(F_max)
ans = 1.2099496860938456039155811226054

除外した a=1 のケースがそれよりも大きい値にならないことを確認します。

vpa(int(sin(x)*sin(x),x,-1,1))
ans = 0.54535128658715915230199006704413

多重積分

高次元領域の数値積分には特殊関数があります。

integral2(@(x,y) x.^2-y.^2,0,1,0,1)
ans = 
4.0127e-19

高次のシンボリック積分にはそのような特殊関数はありません。代わりに入れ子にされた 1 次元積分を使用します。

syms x y
int(int(x^2-y^2,y,0,1),x,0,1)
ans = 0

線積分

3 次元空間のベクトル場 F を定義します。

syms x y z
F(x,y,z) = [x^2*y*z, x*y, 2*y*z];

次に、曲線を定義します。

syms t
ux(t) = sin(t);
uy(t) = t^2-t;
uz(t) = t;

曲線 u に沿った F の線積分は ∫f⋅du=∫f(ux(t),uy(t),uz(t))⋅dudtdt と定義されます。ここで、右側にある ⋅ はスカラー積を表します。

この定義を使用して、範囲 [0,1] の t の線積分を計算します。

F_int = int(F(ux,uy,uz)*diff([ux;uy;uz],t),t,0,1)
F_int = 

19 cos(1)4-cos(3)108-12 sin(1)+sin(3)27+39554

この厳密な結果の数値近似を求めます。

vpa(F_int)
ans = -0.20200778585035447453044423341349