Return to SymPy 演習

3. SymPy で微分・積分

1変数関数,特に(双曲線関数・逆双曲線関数を含む)初等関数の微分・積分。また,2変数関数に関する偏微分と2重責分,および2重積分に関連したガウス積分について。

SymPy の import

In [1]:
from sympy.abc import *
from sympy import *

1変数関数の微分 diff()

1階微分

SymPy で1変数関数 $y = f(x)$ の微分には以下のように diff() を使います。

$\displaystyle \frac{df}{dx} = \frac{d}{dx} f(x) =$ diff(f(x), x) ($=$ Derivative(f(x), x).doit()

高階微分

2階以上の高階微分は

$\displaystyle \frac{d^nf}{dx^n} = \frac{d^n}{dx^n} f(x) =$ diff(f(x), x, n)

参考:Derivative()diff()

Derivative() は微分の表示をするだけで実際に微分は行いません。微分を実行するには,Derivative().doit() のように .doit() を追加します。

diff() を使えば即微分を実行します。

例:

$y = x^3 + 5 x + 2$ を $x$ で微分します。とっとと答えだけを表示させるには…

In [2]:
diff(x**3 + 5*x + 2, x)
Out[2]:
$\displaystyle 3 x^{2} + 5$

何を計算させるのかを表示させてから答えを表示させるには…

In [3]:
y = x**3 + 5*x + 2

Eq(Derivative(y, x), 
   Derivative(y, x).doit())
Out[3]:
$\displaystyle \frac{d}{d x} \left(x^{3} + 5 x + 2\right) = 3 x^{2} + 5$

$y = x^3 + 5 x + 2$ を $x$ で2階微分します。

In [4]:
Eq(Derivative(y, x, 2), diff(y, x, 2))
Out[4]:
$\displaystyle \frac{d^{2}}{d x^{2}} \left(x^{3} + 5 x + 2\right) = 6 x$

べき関数,平方根の微分

べき関数 $y = x^p$ の微分

In [5]:
diff(x**p, x)
Out[5]:
$\displaystyle \frac{p x^{p}}{x}$

直前の結果を _ で参照して簡単化 simplify() してみます。

In [6]:
simplify(_)
Out[6]:
$\displaystyle p x^{p – 1}$

ということで,

In [7]:
Eq(Derivative(x**p, x), diff(x**p, x).simplify())
Out[7]:
$\displaystyle \frac{\partial}{\partial x} x^{p} = p x^{p – 1}$

偏微分記号が出てくるのは,$x$ の他に $p$ も「変数」とみなされているから。

特に平方根 $\sqrt{x}$ の微分は…

$\displaystyle \frac{d}{dx} \sqrt{x} =$ diff(sqrt(x), x)

In [8]:
Eq(diff(sqrt(x), x, evaluate = False), 
   diff(sqrt(x), x))
Out[8]:
$\displaystyle \frac{d}{d x} \sqrt{x} = \frac{1}{2 \sqrt{x}}$

指数関数の微分

ネイピア数 $e$ を底とした指数関数 $e^x =$ exp(x) の微分

$\displaystyle \frac{d}{dx} e^x = $ diff(exp(x), x)

In [9]:
diff(exp(x), x)
Out[9]:
$\displaystyle e^{x}$

対数関数の微分

自然対数 log(x) の微分

$\displaystyle \frac{d}{dx} \log x =$ diff(log(x), x)

In [10]:
diff(log(x), x)
Out[10]:
$\displaystyle \frac{1}{x}$

三角関数の微分

$\sin x, \ \cos x, \ \tan x$ の微分

In [11]:
Eq(Derivative(sin(x), x), diff(sin(x), x))
Out[11]:
$\displaystyle \frac{d}{d x} \sin{\left(x \right)} = \cos{\left(x \right)}$
In [12]:
Eq(Derivative(cos(x), x), diff(cos(x), x))
Out[12]:
$\displaystyle \frac{d}{d x} \cos{\left(x \right)} = – \sin{\left(x \right)}$
In [13]:
Eq(Derivative(tan(x), x), diff(tan(x), x))
Out[13]:
$\displaystyle \frac{d}{d x} \tan{\left(x \right)} = \tan^{2}{\left(x \right)} + 1$

右辺を簡単化します。
diff(tan(x), x).simplify()simplify(diff(tan(x), x)) と同じ意味です。

In [14]:
Eq(Derivative(tan(x), x), diff(tan(x), x).simplify())
Out[14]:
$\displaystyle \frac{d}{d x} \tan{\left(x \right)} = \frac{1}{\cos^{2}{\left(x \right)}}$

逆三角関数の微分

$\displaystyle \frac{d}{dx} \sin^{-1} x = \frac{d}{dx} \arcsin x = $ diff(asin(x), x)

In [15]:
Eq(Derivative(asin(x), x), diff(asin(x), x))
Out[15]:
$\displaystyle \frac{d}{d x} \operatorname{asin}{\left(x \right)} = \frac{1}{\sqrt{1 – x^{2}}}$

○練習:$\arccos x, \ \arctan x$ の微分

$\displaystyle \frac{d}{dx} \cos^{-1} x = \frac{d}{dx} \arccos x = $ diff(acos(x), x)

$\displaystyle \frac{d}{dx} \tan^{-1} x = \frac{d}{dx} \arctan x = $ diff(atan(x), x) についても同様にやってみてください。

In [ ]:
 
In [ ]:
 

双曲線関数の微分

$\displaystyle \frac{d}{dx} \cosh x = $ diff(cosh(x), x)

In [16]:
Eq(Derivative(cosh(x), x), diff(cosh(x), x))
Out[16]:
$\displaystyle \frac{d}{d x} \cosh{\left(x \right)} = \sinh{\left(x \right)}$

○練習:$\sinh x, \ \tanh x$ の微分

$\displaystyle \frac{d}{dx} \sinh x = $ diff(sinh(x), x)

$\displaystyle \frac{d}{dx} \tanh x = $ diff(tanh(x), x) についても同様に。

In [ ]:
 
In [ ]:
 

逆双曲線関数の微分

$\displaystyle \frac{d}{dx} \cosh^{-1} x = \frac{d}{dx} \mbox{arcosh}\ x =$ diff(acosh(x), x) $\displaystyle = \frac{1}{\sqrt{x^2-1}}$

In [17]:
Eq(Derivative(acosh(x), x), diff(acosh(x), x))
Out[17]:
$\displaystyle \frac{d}{d x} \operatorname{acosh}{\left(x \right)} = \frac{1}{\sqrt{x – 1} \sqrt{x + 1}}$

本稿執筆時点では,SymPy は $\displaystyle \frac{1}{\sqrt{x^2-1}}$ ではなく,あえて $\displaystyle \frac{1}{\sqrt{x-1}\sqrt{x+1}}$ と返すようです。(私見ですが,これが後々,いくつかの残念な結果を引き起こします。)

○練習:$\sinh^{-1} x, \ \tanh^{-1} x$ の微分

$\displaystyle \frac{d}{dx} \sinh^{-1} x$ や $\displaystyle \frac{d}{dx} \tanh^{-1} x$ についても同様に微分してみて。

In [ ]:
 
In [ ]:
 

1変数関数の積分 integrate()

不定積分

SymPy で1変数関数 $y = f(x)$ の積分には integrate() を使います。

$\displaystyle\int f(x)\, dx = $ integrate(f(x), x) ($=$ Integral(f(x), x).doit()

不定積分の際,積分定数が省略された答えが出力されます。

定積分

定積分の際は以下のように積分範囲を (x, a, b) のように指定します。

$\displaystyle\int_a^b f(x)\, dx = $ integrate(f(x), (x, a, b))

参考:Integral()integrate()

Integral() は積分の表示をするだけで実際に積分は行いません。積分を実行するには,Integral().doit() のように .doit() を追加します。

integrate() を使えば即積分を実行します。

べき関数の不定積分

$\displaystyle \int x^p\, dx =$ integrate(x**p, x)

In [18]:
Eq(Integral(x**p, x), integrate(x**p, x))
Out[18]:
$\displaystyle \int x^{p}\, dx = \begin{cases} \frac{x^{p + 1}}{p + 1} & \text{for}\: p \neq -1 \\\log{\left(x \right)} & \text{otherwise} \end{cases}$

$p=-1$ のときは,以下の「対数関数に関連した不定積分」も参照:

指数関数の不定積分

$\displaystyle \int e^x\, dx = $ integrate(exp(x), x)

In [19]:
Eq(Integral(exp(x), x), integrate(exp(x), x))
Out[19]:
$\displaystyle \int e^{x}\, dx = e^{x}$

対数関数に関連した不定積分

$\displaystyle \int \frac{1}{x}\, dx = \log |x| + C$ となるはずですが…

In [20]:
Eq(Integral(1/x, x), integrate(1/x, x))
Out[20]:
$\displaystyle \int \frac{1}{x}\, dx = \log{\left(x \right)}$

SymPy の積分 integrate() では $\log$ の中身の絶対値を省略する傾向にある。

○練習:$\log x$ の不定積分

$\displaystyle \int \log x\, dx = $ integrate(log(x), x) $= \cdots$

In [ ]:
 

上記の結果は,いかにも部分積分をして答えを出しているようですね。

三角関数の不定積分

In [21]:
Eq(Integral(cos(x), x), 
   Integral(cos(x), x).doit())
Out[21]:
$\displaystyle \int \cos{\left(x \right)}\, dx = \sin{\left(x \right)}$
In [22]:
Eq(Integral(sin(x), x), 
   Integral(sin(x), x).doit())
Out[22]:
$\displaystyle \int \sin{\left(x \right)}\, dx = – \cos{\left(x \right)}$
In [23]:
Eq(Integral(1/cos(x)**2, x), 
   integrate(1/cos(x)**2, x).simplify())
Out[23]:
$\displaystyle \int \frac{1}{\cos^{2}{\left(x \right)}}\, dx = \tan{\left(x \right)}$

○練習:$\tan x$ の不定積分

では,$\displaystyle \int \tan x\, dx $ は?

In [ ]:
 

逆三角関数に関連した不定積分

$\displaystyle \frac{d}{dx} \arcsin x = \frac{1}{\sqrt{1-x^2}}$ だったので,

$\displaystyle \int \frac{1}{\sqrt{1-x^2}}\, dx = \arcsin x + C$ となるはず。

In [24]:
Eq(Integral(1/(sqrt(1 - x**2)), x), 
   integrate(1/(sqrt(1 - x**2)), x))
Out[24]:
$\displaystyle \int \frac{1}{\sqrt{1 – x^{2}}}\, dx = \operatorname{asin}{\left(x \right)}$

$\displaystyle \frac{d}{dx} \arccos x = -\frac{1}{\sqrt{1-x^2}}$ だったので,

$\displaystyle \int \frac{-1}{\sqrt{1-x^2}}\, dx = \arccos x + C$ となってもいいはずだが…

In [25]:
Eq(Integral(-1/(sqrt(1 - x**2)), x), 
   integrate(-1/(sqrt(1 - x**2)), x))
Out[25]:
$\displaystyle \int \left(- \frac{1}{\sqrt{1 – x^{2}}}\right)\, dx = – \operatorname{asin}{\left(x \right)}$

積分の答えが $-\arcsin x$ と出ても,慌てず騒がず,直近の出力 _.rewrite(acos) つまり $\arccos x$ を使って書き直してみると…

In [26]:
_.rewrite(acos)
Out[26]:
$\displaystyle \int \left(- \frac{1}{\sqrt{1 – x^{2}}}\right)\, dx = \operatorname{acos}{\left(x \right)} – \frac{\pi}{2}$

$\displaystyle -\frac{\pi}{2}$ は積分定数 $C$ に組み込まれる定数なので,結果,

$\displaystyle \int \frac{-1}{\sqrt{1-x^2}}\, dx = \arccos x + C$ となってもいいことになる。

$\displaystyle \frac{d}{dx} \arctan x = \frac{1}{1+x^2}$ だったので,

$\displaystyle \int \frac{1}{1+x^2}\, dx = \arctan x + C$ となるはず。

In [27]:
integrate(1/(1 + x**2), x)
Out[27]:
$\displaystyle \operatorname{atan}{\left(x \right)}$

○練習:逆三角関数の不定積分

$\displaystyle \int \arcsin x\, dx, \ \int \arccos x\, dx, \ \int \arctan x\, dx$ についても計算してみよ。

In [ ]:
 
In [ ]:
 
In [ ]:
 

双曲線関数の不定積分

In [28]:
Eq(Integral(cosh(x), x), integrate(cosh(x), x))
Out[28]:
$\displaystyle \int \cosh{\left(x \right)}\, dx = \sinh{\left(x \right)}$
In [29]:
Eq(Integral(sinh(x), x), integrate(sinh(x), x))
Out[29]:
$\displaystyle \int \sinh{\left(x \right)}\, dx = \cosh{\left(x \right)}$
In [30]:
Eq(Integral(1/cosh(x)**2, x), integrate(1/cosh(x)**2, x).simplify())
Out[30]:
$\displaystyle \int \frac{1}{\cosh^{2}{\left(x \right)}}\, dx = \tanh{\left(x \right)}$

○練習:$\tanh x $ の不定積分

では $\displaystyle \int \tanh x\, dx$ は?

In [ ]:
 

逆双曲線関数に関連した不定積分

$\displaystyle 1. \ \int \frac{1}{\sqrt{x^2-1}}\, dx$

$\displaystyle \frac{d}{dx} \cosh^{-1} x = \frac{d}{dx} \mbox{arcosh}\ x =$ diff(acosh(x), x) $\displaystyle = \frac{1}{\sqrt{x^2-1}}$ なので

$\displaystyle \int \frac{1}{\sqrt{x^2-1}}\, dx = \cosh^{-1} x$ となるはずだが…

In [31]:
Eq(Integral(1/sqrt(x**2 - 1), x), 
   integrate(1/sqrt(x**2 - 1), x))
Out[31]:
$\displaystyle \int \frac{1}{\sqrt{x^{2} – 1}}\, dx = \log{\left(x + \sqrt{x^{2} – 1} \right)}$

$\displaystyle \cosh^{-1} x \Rightarrow \log\left(x + \sqrt{x^2-1}\right)$ と書き直してはくれるが…

In [32]:
acosh(x).rewrite(log).factor()
Out[32]:
$\displaystyle \log{\left(x + \sqrt{x – 1} \sqrt{x + 1} \right)}$

$\displaystyle \log\left(x + \sqrt{x^2-1}\right) \Rightarrow \cosh^{-1} x $ とは書き直してくれない。

In [33]:
log(x + sqrt(x**2 - 1)).rewrite(log)
Out[33]:
$\displaystyle \log{\left(x + \sqrt{x^{2} – 1} \right)}$

$\displaystyle 2. \ \int \frac{1}{\sqrt{1+x^2}}\, dx$

$\displaystyle \frac{d}{dx} \sinh^{-1} x = \frac{1}{\sqrt{1+x^2}}$ なので…

In [34]:
Eq(Integral(1/sqrt(1 + x**2), x), 
   integrate(1/sqrt(1 + x**2), x))
Out[34]:
$\displaystyle \int \frac{1}{\sqrt{x^{2} + 1}}\, dx = \operatorname{asinh}{\left(x \right)}$

$\displaystyle 3. \ \int \frac{1}{1-x^2}\, dx$

$\displaystyle \frac{d}{dx} \tanh^{-1} x = \frac{1}{1-x^2}$ なので

$\displaystyle \int \frac{1}{1-x^2}\, dx = \tanh^{-1} x + C$ となるはずだが…

In [35]:
Eq(Integral(1/(1-x**2), x), integrate(1/(1-x**2), x))
Out[35]:
$\displaystyle \int \frac{1}{1 – x^{2}}\, dx = – \frac{\log{\left(x – 1 \right)}}{2} + \frac{\log{\left(x + 1 \right)}}{2}$

$\displaystyle 4. \ \int \sinh^{-1} x\, dx$

In [36]:
Eq(Integral(asinh(x), x), integrate(asinh(x), x))
Out[36]:
$\displaystyle \int \operatorname{asinh}{\left(x \right)}\, dx = x \operatorname{asinh}{\left(x \right)} – \sqrt{x^{2} + 1}$

$\displaystyle 5. \ \int \tanh^{-1} x\, dx$

In [37]:
Eq(Integral(atanh(x), x), integrate(atanh(x), x))
Out[37]:
$\displaystyle \int \operatorname{atanh}{\left(x \right)}\, dx = x \operatorname{atanh}{\left(x \right)} + \log{\left(x + 1 \right)} – \operatorname{atanh}{\left(x \right)}$

$\displaystyle 6. \ \int \cosh^{-1} x\, dx$

In [38]:
integrate(acosh(x), x)
Out[38]:
$\displaystyle \int \operatorname{acosh}{\left(x \right)}\, dx$

上記のように,本稿執筆時点では,SymPy は $\cosh^{-1} x$ の積分ができない。これは部分積分で簡単に求まるから,以下のように人力で計算してみよう。

\begin{eqnarray}
\int \cosh^{-1} x\, dx &=& \int (x^{\prime})\cdot\cosh^{-1} x\, dx \\
&=& x \, \cosh^{-1} x – \int x\, \left( \cosh^{-1} x \right)^{\prime}\, dx \\
% &=& x \, \cosh^{-1} x – \int x\, \frac{1}{\sqrt{x^2-1}}\, dx \\
&=& \cdots
\end{eqnarray}

SymPy がこの積分ができないのは,どうも以下のように…

In [39]:
Eq(Derivative(acosh(x), x), diff(acosh(x), x))
Out[39]:
$\displaystyle \frac{d}{d x} \operatorname{acosh}{\left(x \right)} = \frac{1}{\sqrt{x – 1} \sqrt{x + 1}}$

$\displaystyle \frac{d}{dx} \cosh^{-1} x$ を $\displaystyle\frac{1}{\sqrt{x^2-1}}$ ではなく $\displaystyle\frac{1}{\sqrt{x-1}\sqrt{x+1}}$ とすることにあるのでは?と推測する。

ためしに,$\displaystyle \int \frac{x}{\sqrt{x-1}\sqrt{x+1}}\, dx$ を計算してみると…

In [40]:
integrate(x/(sqrt(x-1)*sqrt(x+1)), x)
Out[40]:
$\displaystyle \frac{{G_{6, 6}^{6, 2}\left(\begin{matrix} – \frac{1}{4}, \frac{1}{4} & 0, 0, \frac{1}{2}, 1 \\- \frac{1}{2}, – \frac{1}{4}, 0, \frac{1}{4}, \frac{1}{2}, 0 & \end{matrix} \middle| {\frac{1}{x^{2}}} \right)}}{4 \pi^{\frac{3}{2}}} + \frac{i {G_{6, 6}^{2, 6}\left(\begin{matrix} -1, – \frac{3}{4}, – \frac{1}{2}, – \frac{1}{4}, 0, 1 & \\- \frac{3}{4}, – \frac{1}{4} & -1, – \frac{1}{2}, – \frac{1}{2}, 0 \end{matrix} \middle| {\frac{e^{2 i \pi}}{x^{2}}} \right)}}{4 \pi^{\frac{3}{2}}}$

なんか意味不明の答えが出てくるであろう。

一方,$\displaystyle \int \frac{x}{\sqrt{x^2-1}}\, dx$ を計算してみると…

In [41]:
Eq(Integral(x/sqrt(x**2-1), x), 
   integrate(x/sqrt(x**2-1), x))
Out[41]:
$\displaystyle \int \frac{x}{\sqrt{x^{2} – 1}}\, dx = \sqrt{x^{2} – 1}$

以上のことから

\begin{eqnarray}
\int \cosh^{-1} x\, dx
&=& x \, \cosh^{-1} x – \int x\, \left( \cosh^{-1} x \right)^{\prime}\, dx \\
&=& x \, \cosh^{-1} x – \int \frac{x}{\sqrt{x^2-1}}\, dx \\
&=& \cdots
\end{eqnarray}

○練習:$\cosh^{-1} x$ の不定積分

部分積分を使って,あらためて $\displaystyle \int \cosh^{-1} x\, dx $ を求めよ。

In [ ]:

偏微分:多変数(主に2変数)関数の微分

主に2変数関数 $f(x, y)$ の偏微分についてまとめておきます。

1階偏微分 diff()

SymPy での偏微分は(1変数関数の微分である「常微分」と同様の書き方で)以下のように書きます。

$\displaystyle \frac{\partial}{\partial x} f(x, y) = $ diff(f(x, y), x)

$\displaystyle \frac{\partial}{\partial y} f(x, y) = $ diff(f(x, y), y)

In [42]:
# 変数 x, y を初期化
var('x y')

# f を未定義関数として宣言
f = Function('f')
In [43]:
diff(f(x, y), x)
Out[43]:
$\displaystyle \frac{\partial}{\partial x} f{\left(x,y \right)}$
In [44]:
diff(f(x, y), y)
Out[44]:
$\displaystyle \frac{\partial}{\partial y} f{\left(x,y \right)}$

○練習:偏導関数を求める

関数 $z = x^3 – 4 x^2 y + x y + 3 y^2$ の偏導関数を求めよ。

「偏導関数を求めよ」とは,$x, y$ の2変数関数である $z$ について $\displaystyle \frac{\partial z}{\partial x}$ と
$\displaystyle \frac{\partial z}{\partial y}$ を計算して求めよ,ということ。

In [ ]:
In [ ]:
 

高階偏微分 diff(f(x, y), x, m, y, n)

2階以上の高階偏微分は以下のように書きます。

$\displaystyle \frac{\partial^2}{\partial x^2} f(x, y) = $ diff(f(x, y), x, 2)

$\displaystyle \frac{\partial}{\partial y}\left(\frac{\partial}{\partial x} f(x, y)\right) = \frac{\partial^2}{\partial y \partial x} f(x, y) = $ diff(f(x, y), x, y)

$\displaystyle \frac{\partial^n}{\partial y^n}\left(\frac{\partial^m}{\partial x^m} f(x, y)\right) = $ diff(f(x, y), x, m, y, n)

○練習:高階導関数の計算

$1.\ $ 2変数関数 $\displaystyle z = \tan^{-1} \frac{y}{x} = \arctan \frac{y}{x}$ について,以下の高階偏導関数を計算し,簡単化した表示で表せ。

$$(1). \ \frac{\partial^2 z}{\partial y\partial x}, \quad(2). \ \frac{\partial^2 z}{\partial x\partial y}, \quad
(3). \ \frac{\partial^2 z}{\partial x^2}, \quad(4). \ \frac{\partial^2 z}{\partial y^2}$$

In [ ]:
 
In [ ]:
 
In [ ]:
 

$2. \ z = \log\sqrt{x^2 + y^2}$ のとき,次の値を求めよ。

$$\frac{\partial^2 z}{\partial x^2} + \frac{\partial^2 z}{\partial y^2} = ?$$

In [ ]:

SymPy が2階偏導関数に関して

$$\frac{\partial^2 f}{\partial x \partial y} = \frac{\partial^2 f}{\partial y \partial x}$$

のように,偏微分の順序を変えてもよいことを知っているか確認します。

以下では,比較演算子 == を使って左辺と右辺が等しいかを確認しています。等しければ True,等しくなければ False を返します。

In [45]:
diff(f(x, y), x, y) == diff(f(x, y), y, x)
Out[45]:
True

以下では,左辺から右辺を引いてゼロになるかどうかで,確認しています。

In [46]:
Eq(Derivative(f(x, y), x, y)-Derivative(f(x, y), y, x),
   diff(f(x, y), x, y)-diff(f(x, y), y, x))
Out[46]:
$\displaystyle \frac{\partial^{2}}{\partial y\partial x} f{\left(x,y \right)} – \frac{\partial^{2}}{\partial x\partial y} f{\left(x,y \right)} = 0$

2重積分:2変数関数の積分

多変数関数の積分である多重積分のうち,2変数関数の積分である2重積分についてまとめておきます。

累次積分

2重積分の計算は,基本的に累次積分でやります。

$\displaystyle \iint_D f(x, y)\, dx dy$ の領域 $D$ が何と何で囲まれているかを明らかにして積分する。

ケース 1

領域 $D$ が $x_1 \leq x \leq x_2,\ y_1 \leq y \leq y_2$ である場合:

$$\iint_D f(x, y) \,dx\,dy = \int_{x_1}^{x_2} \left\{\int_{y_1}^{y_2} f(x, y)\,dy \right\} dx$$

または

$$\iint_D f(x, y) \,dx\,dy = \int_{y_1}^{y_2} \left\{\int_{x_1}^{x_2} f(x, y)\,dx \right\} dy$$

ケース 2

領域 $D$ が $x_1 \leq x \leq x_2,\ y_1(x) \leq y \leq y_2(x)$ である場合:

$$ \iint_D f(x, y) \,dx\,dy = \int_{x_1}^{x_2} \left\{\int_{y_1(x)}^{y_2(x)} f(x, y)\,dy \right\} dx$$

ケース 3

領域 $D$ が $x_1(y)\leq x \leq x_2(y),\ y_1 \leq y \leq y_2$ である場合:

$$ \iint_D f(x, y) \,dx\,dy = \int_{y_1}^{y_2} \left\{\int_{x_1(y)}^{x_2(y)} f(x, y)\,dx \right\} dy$$

SymPy では2重積分は以下のように:

$\displaystyle \int_{y_1}^{y_2} \left\{\int_{x_1}^{x_2} f(x, y)\, dx \right\} dy = $
integrate(f(x, y), (x, x1, x2), (y, y1, y2))

○練習:累次積分による2重積分

$$ I = \iint_D dx dy, \quad D: x^2 + y^2 \leq 1$$

累次積分の形にする。

領域 $D$ の定義式を $y$ について解き,

$$-\sqrt{1-x^2} \leq y \leq \sqrt{1-x^2}$$

平方根の中がゼロ以上であることから

$$ -1 < x < 1$$

被積分関数は $f(x, y) = 1$。

ケース 2 の累次積分の形:
\begin{eqnarray}
f(x, y) &=& 1 \\
x_1 &=& -1\\
x_2 &=& 1 \\
y_1(x) &=& -\sqrt{1-x^2}\\
y_2(x) &=& \sqrt{1-x^2}
\end{eqnarray}

\begin{eqnarray}
\iint_D f(x, y)\,dx dy &=& \int_{x_1}^{x_2} \left\{\int_{y_1(x)}^{y_2(x) } f(x, y)\,dy \right\} dx \\
&=& \cdots
\end{eqnarray}

In [47]:
f = 1
x1 = -1
x2 = 1
y1 = -sqrt(1-x**2)
y2 = sqrt(1-x**2)

Integral(f, (y, y1, y2), (x, x1, x2))
Out[47]:
$\displaystyle \int\limits_{-1}^{1}\int\limits_{- \sqrt{1 – x^{2}}}^{\sqrt{1 – x^{2}}} 1\, dy\, dx$

確認のために,段階ごとに計算してみます。

まず,$\displaystyle \int_{-\sqrt{1-x^2}}^{\sqrt{1-x^2}} f \, dy =$ integrate(f, (y, y1, y2))

In [48]:
Eq(Integral(f, (y, y1, y2)), 
   integrate(f, (y, y1, y2)))
Out[48]:
$\displaystyle \int\limits_{- \sqrt{1 – x^{2}}}^{\sqrt{1 – x^{2}}} 1\, dy = 2 \sqrt{1 – x^{2}}$

次に,$\displaystyle \int_{-1}^1 2 \sqrt{1-x^2}\, dx$ を計算します。

人力でこの積分を計算するには,以下の不定積分の項を参照のこと。

人力だと一手間も二手間もかかりますが,SymPy だと簡単に積分してくれます。

積分を続けて最終的な答えを求めなさい。

In [ ]:
In [ ]:

ガウス積分の準備としての2重積分

$$ S = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-x^2 – y^2} dx\,dy$$

In [49]:
Eq(Integral(exp(-x**2-y**2), (x, -oo, oo), (y, -oo, oo)),
   integrate(exp(-x**2-y**2), (x, -oo, oo), (y, -oo, oo)))
Out[49]:
$\displaystyle \int\limits_{-\infty}^{\infty}\int\limits_{-\infty}^{\infty} e^{- x^{2} – y^{2}}\, dx\, dy = \pi$

SymPy では上記のように苦もなく計算しているが,人力で積分するためには以下のように極座標に変換して積分することになる。

極座標に変換して積分

極座標に変換して計算する。

デカルト座標 $x, y$ と2次元極座標 $r, \theta$ との間の関係は
\begin{eqnarray}
x &=& r\cos\theta\\
y &=& r\sin\theta
\end{eqnarray}
であり,微小面積要素 $dx\,dy$ は以下のように変換される。

\begin{eqnarray}
dx\,dy &=& \frac{\partial(x, y)}{\partial(r,\theta)} \,dr\, d\theta
\end{eqnarray}

ここで,ここで,$$ \frac{\partial(x,y)}{\partial(r,\theta)} \equiv
\begin{vmatrix}
\frac{\partial x}{\partial r} & \frac{\partial x}{\partial \theta}\\
\frac{\partial y}{\partial r} & \frac{\partial y}{\partial \theta}\\
\end{vmatrix}
= \frac{\partial x}{\partial r} \frac{\partial y}{\partial \theta} – \frac{\partial y}{\partial r}\frac{\partial x}{\partial \theta}$$ をヤコビアンという。

SymPy ではヤコビ行列を計算する機能があるが,簡単なのでここでは以下のように計算してみる。

In [50]:
x = r*cos(theta)
y = r*sin(theta)

jaco = diff(x, r)*diff(y,theta) - diff(y,r)*diff(x,theta)
simplify(jaco)
Out[50]:
$\displaystyle r$

ヤコビアンが $r$ となることがわかった。したがって極座標への変換によって

\begin{eqnarray}
x^2 + y^2 &=& r^2 \\
e^{-x^2 – y^2} &=& e^{-(x^2+y^2)} = e^{-r^2} \\
dx\,dy &=& r dr\,d\theta \\
D: \{-\infty < x < \infty, -\infty < y < \infty\}&=&
D: \{0 \leq r < \infty, 0 \leq \theta \leq 2\pi\}
\end{eqnarray}

となり,

\begin{eqnarray}
\therefore\ \ S &=& \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-x^2 – y^2} dx\,dy \\
&=& \int_0^{2\pi} \left\{\int_0^{\infty} e^{-r^2} r \,dr\right\}\,d\theta \\
&=& \int_0^{2\pi} \,d\theta \cdot \int_0^{\infty} e^{-r^2} r \,dr \\
&=& 2 \pi \int_0^{\infty} e^{-r^2} r \,dr
\end{eqnarray}

であるから,この問題は $\displaystyle \int_0^{\infty} e^{-r^2} r \,dr$ ができればよい。これも SymPy は何なく積分してしまう。

In [51]:
Eq(Integral(r*exp(-r**2), (r, 0, oo)), 
   integrate(r*exp(-r**2), (r, 0, oo)))
Out[51]:
$\displaystyle \int\limits_{0}^{\infty} r e^{- r^{2}}\, dr = \frac{1}{2}$

人力で積分する際はきっと $r^2 = t$ とおいて置換積分するんですよねぇ。

参考:敢えて置換積分 .transform()

せっかくだから,これを敢えて置換積分でやってみる。

まず,この積分を int1 として定義。

In [52]:
int1 = Integral(r*exp(-r**2), (r, 0, oo))
int1
Out[52]:
$\displaystyle \int\limits_{0}^{\infty} r e^{- r^{2}}\, dr$

$r^2 \Rightarrow t$ という変数に置換する。

In [53]:
int2 = int1.transform(r**2, t)
int2
Out[53]:
$\displaystyle \int\limits_{0}^{\infty} \frac{e^{- t}}{2}\, dt$

この形なら暗算でも積分できるが,念のため .doit() で実際に積分を実行させる。

In [54]:
Eq(int2, int2.doit())
Out[54]:
$\displaystyle \int\limits_{0}^{\infty} \frac{e^{- t}}{2}\, dt = \frac{1}{2}$

したがって

\begin{eqnarray}
S &=& 2 \pi \int_0^{\infty} e^{-r^2} r \,dr \\
&=& 2 \pi \times \frac{1}{2} \\
&=& \pi
\end{eqnarray}

ガウス積分

$$ I = \int_{-\infty}^{\infty} e^{-x^2 } dx$$

とすると,上で

\begin{eqnarray}
S &=& \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-x^2 – y^2} dx\,dy \\
&=& I^2 \\
&=& \pi
\end{eqnarray}

ということがわかったので,

$$ I = \int_{-\infty}^{\infty} e^{-x^2 } dx = \sqrt{S} = \sqrt{\pi}$$

ということになる。SymPy がガウス積分 $I$ を知っていることを確認する。

In [55]:
# 変数 x の初期化
var('x')

Eq(Integral(exp(-x**2), (x, -oo, oo)),
   Integral(exp(-x**2), (x, -oo, oo)).doit())
Out[55]:
$\displaystyle \int\limits_{-\infty}^{\infty} e^{- x^{2}}\, dx = \sqrt{\pi}$

被積分関数 $\displaystyle e^{-x^2}$ は偶関数であるから,積分範囲を $0$ からにすると答えは半分になるはずで,これも確認。

In [56]:
Eq(Integral(exp(-x**2), (x, 0, oo)),
   Integral(exp(-x**2), (x, 0, oo)).doit())
Out[56]:
$\displaystyle \int\limits_{0}^{\infty} e^{- x^{2}}\, dx = \frac{\sqrt{\pi}}{2}$

ガウス積分は,積分の上限が $\infty$ のときにだけ解析的に積分できる例。不定積分だと積分できない(結果が初等関数で表せない)。
… のだが,実際に SymPy でやってみると…

In [57]:
Eq(Integral(exp(-x**2), x),
   Integral(exp(-x**2), x).doit())
Out[57]:
$\displaystyle \int e^{- x^{2}}\, dx = \frac{\sqrt{\pi} \operatorname{erf}{\left(x \right)}}{2}$

参考:誤差関数

$\operatorname{erf} (x)$ は「誤差関数」と呼ばれる特殊関数(つまり初等関数では表せないということ)で,これが定義:

\begin{eqnarray}
\operatorname{erf} (x) &\equiv& \frac{2}{\sqrt{\pi}} \int_0^x e^{-t^2} \, dt
\end{eqnarray}

○練習:誤差関数の極限値

誤差関数 $\mbox{erf}(x)$ は $x \rightarrow \infty$ でガウス積分で書けるようになるので,

\begin{eqnarray}
\lim_{x \rightarrow \infty} \mbox{erf}(x) &=& \frac{2}{\sqrt{\pi}} \int_0^{\infty} e^{-t^2} \, dt \\
&=& \frac{2}{\sqrt{\pi}} \frac{\sqrt{\pi}} {2} \\
&=& 1
\end{eqnarray}

となるはずである。これを SymPy で確認してください。

In [ ]: