Return to Maxima で理工系の数学B

Maxima でテイラー展開・オイラーの公式

高階導関数

$f(x)$ を $x$ で $n$ 階微分する例。Maxima では
diff(f(x), x, n); のように書きます。
例:

$$\frac{d^2}{dx^2} \sin x = \dots$$

In [1]:
/* 手っ取り早く答えを知りたいときは... */

diff(sin(x), x, 2);
Out[1]:
\[\tag{${\it \%o}_{1}$}-\sin x\]
In [2]:
/* 何を計算するかを表示させてから実行する場合は... */

'diff(sin(x), x, 2) = 
 diff(sin(x), x, 2);
Out[2]:
\[\tag{${\it \%o}_{2}$}\frac{d^2}{d\,x^2}\,\sin x=-\sin x\]

テイラー展開

テイラー展開は taylor() 関数を使います。

指数関数のテイラー展開

$f(x) = e^x$ の $x = 0$ のまわりに $x^5$ までテイラー展開する例。

In [3]:
taylor(exp(x), x, 0, 5);
Out[3]:
\[\tag{${\it \%o}_{3}$}\frac{x^5}{120}+\frac{x^4}{24}+\frac{x^3}{6}+\frac{x^2}{2}+x+1\]

上記の結果は,通常なら

$$ 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + \frac{x^5}{5!} +\cdots$$

となるところだが,項の順序が降べきになっている。この順序は Maxima-Jupyter 上でのみのようで,試しにターミナルでは以下のような昇べきに並びます。

(%i1) taylor(exp(x), x, 0, 5);
                               2    3    4    5
                              x    x    x    x
(%o1)/T/              1 + x + -- + -- + -- + --- + . . .
                              2    6    24   120

Maxima-Jupyter で,テイラー展開を昇べきで表示させるために,以下のように trunc() を使ってみます。

powerdisp: true$ でも可能ですが,これだとテイラー展開以外の全ての多項式が昇べきで表示されてしまいます。)

In [4]:
trunc(taylor(exp(x), x, 0, 5));
Out[4]:
\[\tag{${\it \%o}_{4}$}1+x+\frac{x^2}{2}+\frac{x^3}{6}+\frac{x^4}{24}+\frac{x^5}{120}+\cdots \]

これは $e^x \simeq \displaystyle \sum_{k=0}^n \frac{x^k}{k!}$ の $n=5$ に相当する。

ちなみに,この式で $x=1$ とおくと
$$ e = \sum_{k=0}^{\infty} \frac{1}{k!}$$ となり,この級数展開を使ってネイピア数 $e$ の近似値を求めることができる。

例として,$\displaystyle \sum_{k=0}^{10} \frac{1}{k!}$ の計算。Maxima では階乗は k! です。

In [5]:
/* 手っ取り早く総和の答えを知りたいときは... */

sum(1/k!, k, 0,  10);
Out[5]:
\[\tag{${\it \%o}_{5}$}\frac{9864101}{3628800}\]
In [6]:
/* 何を計算するかを表示させてから実行する場合は... */

'sum(1/k!, k, 0,  10) =
 sum(1/k!, k, 0,  10);
Out[6]:
\[\tag{${\it \%o}_{6}$}\sum_{k=0}^{10}{\frac{1}{k!}}=\frac{9864101}{3628800}\]
In [7]:
/* 浮動小数点数で表示 */
/* float() は 小数点以下 15 桁までの浮動小数点表示。*/

float(sum(1/k!, k, 0,  10)); 
float(%e); /* ネイピア数の値。*/
Out[7]:
\[\tag{${\it \%o}_{7}$}2.718281801146385\]
Out[7]:
\[\tag{${\it \%o}_{8}$}2.718281828459045\]

三角関数のテイラー展開

$f(x) = \sin x$ の $x = 0$ のまわりのテイラー展開は
\begin{eqnarray}
\sin x &=& f(0) + f'(0)\, x + \frac{f”(0)}{2!}\,x^2 + \frac{f”'(0)}{3!}\,x^3 +\cdots \\
&=& \sin 0 + \cos 0 \cdot x + \frac{-\sin 0}{2!}\,x^2 + \frac{-\cos 0}{3!}\,x^3 + \cdots \\
&=& x – \frac{x^3}{3!} + \frac{x^5}{5!} – \frac{x^7}{7!} + \cdots\\
&=& \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n+1)!}\,x^{2n+1}
\end{eqnarray}

In [8]:
/* sin(x) の x = 0 のまわりの7次までテイラー展開。*/

trunc(taylor(sin(x), x, 0, 7));
Out[8]:
\[\tag{${\it \%o}_{9}$}x-\frac{x^3}{6}+\frac{x^5}{120}-\frac{x^7}{5040}+\cdots \]
In [9]:
/* 階乗の確認 */

3!;
5!;
7!;
Out[9]:
\[\tag{${\it \%o}_{10}$}6\]
Out[9]:
\[\tag{${\it \%o}_{11}$}120\]
Out[9]:
\[\tag{${\it \%o}_{12}$}5040\]

$f(x) = \cos x$ の $x = 0$ のまわりのテイラー展開は
\begin{eqnarray}
\cos x &=& f(0) + f'(x)\, x + \frac{f”(0)}{2!}\,x^2 + \frac{f”'(0)}{3!}\,x^3 +\cdots \\
&=& \cos 0 – \sin 0 \cdot x + \frac{-\cos 0}{2!}\,x^2 + \frac{\sin 0}{3!}\,x^3 + \cdots \\
&=& 1 – \frac{x^2}{2!} + \frac{x^4}{4!} – \frac{x^6}{6!} + \cdots\\
&=& \sum_{n=0}^{\infty} \frac{(-1)^n}{(2n)!}\,x^{2n}
\end{eqnarray}

In [10]:
/* cos(x) の x = 0 のまわりの7次までのテイラー展開。*/

trunc(taylor(cos(x), x, 0, 7));
Out[10]:
\[\tag{${\it \%o}_{13}$}1-\frac{x^2}{2}+\frac{x^4}{24}-\frac{x^6}{720}+\cdots \]
In [11]:
/* 階乗の確認 */

2!;
4!;
6!;
Out[11]:
\[\tag{${\it \%o}_{14}$}2\]
Out[11]:
\[\tag{${\it \%o}_{15}$}24\]
Out[11]:
\[\tag{${\it \%o}_{16}$}720\]

参考:テイラー展開した関数のグラフ

$f(x) = e^x$ のテイラー展開
In [12]:
expt1 : taylor(exp(x), x, 0, 1);
expt2 : taylor(exp(x), x, 0, 2);
expt3 : taylor(exp(x), x, 0, 3);
Out[12]:
\[\tag{${\it \%o}_{17}$}x+1\]
Out[12]:
\[\tag{${\it \%o}_{18}$}\frac{x^2}{2}+x+1\]
Out[12]:
\[\tag{${\it \%o}_{19}$}\frac{x^3}{6}+\frac{x^2}{2}+x+1\]
In [13]:
plot2d([exp(x), expt3, expt2, expt1], [x, -2, 2], 
       [legend, "exp(x)", 
                "テイラー3次", 
                "テイラー2次", 
                "テイラー1次"
                ], 
       [gnuplot_preamble, "set key top left;"]
      )$

$f(x) = \sin x$ のテイラー展開
In [14]:
sint1: taylor(sin(x), x, 0, 1);
sint3: taylor(sin(x), x, 0, 3);
sint5: taylor(sin(x), x, 0, 5);
Out[14]:
\[\tag{${\it \%o}_{22}$}x\]
Out[14]:
\[\tag{${\it \%o}_{23}$}x-\frac{x^3}{6}\]
Out[14]:
\[\tag{${\it \%o}_{24}$}\frac{x^5}{120}-\frac{x^3}{6}+x\]
In [15]:
plot2d([sin(x), sint1, sint3, sint5], [x, -%pi, %pi], 
       [legend, "sin x", 
                "テイラー1次", 
                "テイラー3次", 
                "テイラー5次"], 
       [gnuplot_preamble, "set key top left;"]
      )$

テイラー展開の次数を上げていくと,$|x| < 1$ の範囲では,もとの関数に近づいていくようすがわかります。

人類の至宝:オイラーの公式

オイラーの公式を確認するために,三角関数を書き直してみます。demoivre() 関数は,(複素)指数関数を三角関数に変換します。

Maxima では虚数単位 $i$ は %i と書きます。

In [16]:
exp(%i * theta) = demoivre(exp(%i * theta));
Out[16]:
\[\tag{${\it \%o}_{27}$}e^{i\,\vartheta}=i\,\sin \vartheta+\cos \vartheta\]

exponentialize() 関数は,demoivre() 関数とは逆に,三角関数(や双曲線関数)を指数関数で表示します。

In [17]:
cos(theta) = exponentialize(cos(theta));
sin(theta) = exponentialize(sin(theta));
Out[17]:
\[\tag{${\it \%o}_{28}$}\cos \vartheta=\frac{e^{i\,\vartheta}+e^ {- i\,\vartheta }}{2}\]
Out[17]:
\[\tag{${\it \%o}_{29}$}\sin \vartheta=-\frac{i\,\left(e^{i\,\vartheta}-e^ {- i\,\vartheta }\right)}{2}\]

オイラーの等式

$$e^{i\pi} + 1 = 0$$

オイラーの等式のどこがすごいかというと,

  • 可能における単位元ゼロ $0$ と乗法における単位元 $1$ という整数のもっとも基本となる数
  • 無理数の代表選手,ネイピア数 $e$ と円周率 $\pi$
  • そして虚数単位 $i$

という,いずれ名だたる役者達が,加法,乗法および冪乗によって見事に結び付けられているということ!

In [18]:
%e**(%i * %pi) + 1;
Out[18]:
\[\tag{${\it \%o}_{30}$}0\]

三角関数と双曲線関数の関係

三角関数と双曲線関数は,ただまぎらわしいほどに似た表記なだけでなく,アイで結ばれた密接な関係であることを確認する。

In [19]:
cosh(%i * x);
Out[19]:
\[\tag{${\it \%o}_{31}$}\cos x\]
In [20]:
sinh(%i * x);
Out[20]:
\[\tag{${\it \%o}_{32}$}i\,\sin x\]
In [21]:
cos(%i * x);
Out[21]:
\[\tag{${\it \%o}_{33}$}\cosh x\]
In [22]:
sin(%i * x);
Out[22]:
\[\tag{${\it \%o}_{34}$}i\,\sinh x\]

… ということで以下のことが確認できた。

\begin{eqnarray}
\cosh i x &=& \cos x \\
\sinh i x &=& i \sin x \\
\cos i x &=& \cosh x \\
\sin i x &=& i \sinh x
\end{eqnarray}

逆三角関数と逆双曲線関数の関係

逆三角関数と逆双曲線関数もまた,ただまぎらわしいほどに似た表記なだけでなく,アイで結ばれた密接な関係であることを確認する。

In [23]:
asin(%i * x);
Out[23]:
\[\tag{${\it \%o}_{35}$}i\,{\rm asinh}\; x\]
In [24]:
atan(%i * x);
Out[24]:
\[\tag{${\it \%o}_{36}$}i\,{\rm atanh}\; x\]
In [25]:
asinh(%i * x);
Out[25]:
\[\tag{${\it \%o}_{37}$}i\,\arcsin x\]
In [26]:
atanh(%i * x);
Out[26]:
\[\tag{${\it \%o}_{38}$}i\,\arctan x\]

… ということで以下のことが確認できた。

\begin{eqnarray}
\sin^{-1} i x &=& i \sinh^{-1} x \\
\tan^{-1} i x &=& i \tanh^{-1} x \\
\sinh^{-1} i x &=& i \sin^{-1} x \\
\tanh^{-1} i x &=& i \tan^{-1} x
\end{eqnarray}

ただし,$\cos^{-1} i x$ と $\cosh^{-1} i x$ については,Maxima はそのままの式を返し,特に書き直してくれない。

In [27]:
acos(%i * x);
Out[27]:
\[\tag{${\it \%o}_{39}$}\arccos \left(i\,x\right)\]
In [28]:
acosh(%i* x);
Out[28]:
\[\tag{${\it \%o}_{40}$}{\rm acosh}\; \left(i\,x\right)\]