2015年度 数式処理実習 [第10回] 級数とテイラー展開 1 数列の和 2

June 25, 2015
[p.1/4]
2015 年度 数式処理実習 [第 10 回] 級数とテイラー展開
数列の和
1
数列
a1 , a2 , a3 , · · · , an , · · ·
を考えましょう.Maxima で,数列の和
n
∑
ak = a1 + a2 + · · · + an
k=1
を求めるコマンドはいくつかあり,場合によって使い分ける必要があります.
最も基本的なコマンドは sum で,sum(一般項, 添え字の変数, 変数の初めの値, 変数の終りの値); という書式になっ
10
∑
ています.例えば,
2k = 2 + 4 + 8 + 10 + · · · + 20 は次のように求めます.
k=1
いつも通り,~/su-shiki ディレクトリに移動してから,maxima を起動し,次のように打ち込みます.
maxima
(%i1) sum(2*k,k,1,10);
(%o1)
110
では,第 n 項までの和はどうなるでしょうか?
maxima
(%i1) sum(2*k,k,1,n);
何も求めてくれませんね.このように,sum コマンドは,数値的な和の計算はしてくれますが,
「第 n 項までの和」と
いうような記号的は処理まではしてくれません.
このような場合は,nusum コマンドを用います.nusum も,sum と同様に nusum(一般項, 添え字の変数, 変数の初め
n
∑
の値, 変数の終りの値); という書式になっています.
2k = 2 + 4 + 8 + 10 + · · · + 2n は次のように求めます.
k=1
maxima
(%i1) nusum(2*k,k,1,n);
(%o1)
2
n ( n + 1 )
テイラー展開
f(x)
y = f (x) のグラフが右図のようであったとします.グラフを見てみ
ると,よく知っている具体的な関数 (多項式や三角関数,指数関数など)
とは程遠い形で,かなり複雑です.このままでは f (x) の性質を調べる
ことは容易ではなさそうです.そこで,x が「x0 の近くにある時」だ
けを考えてみましょう.
f(x0)
x0
2015 年度 数式処理実習 [第 10 回] 級数とテイラー展開
June 25, 2015
[p.2/4]
f(x)
右図のように,関数の一部分(黒い部分)だけに着目し,それ以外の
グレーの部分を無視します.そうすると,複雑さはかなり薄れて,なん
となく,3 次関数 (g(x) = ax3 + bx2 + cx + d) で近似できそうな気がし
てきます.
f(x)
さらに狭い範囲に限定すると,黒い部分は直線っぽくなって,1 次関数
(g(x) = ax + b) で近似できそうです.
このように,考える範囲を限定すると,複雑な関数 f (x) を簡単な関数 g(x) で近似できる,というのが,テイラー展
開の「こころ」です.
2.1
テイラー展開の導出
ここでは,数学的に厳密な議論は抜きにして,テイラー展開の式を導いてみましょう.
何度でも微分できる関数 y = f (x) が与えられたとします.
x = a の近傍 (近く) で,f (x) を多項式で近似する
ということを考えます.一口に多項式と言っても,0 次多項式,1 次多項式,2 次多項式…と色々あります.1 次と 2 次を
比べてみましょう.1 次多項式のグラフ (直線) より 2 次多項式のグラフ (放物線) の方が形が豊富にありますから,より
精密な近似ができると考えられます.同様に,2 次多項式より 3 次多項式の方がより精密な近似ができると考えられます.
つまり,次数を大きくすればする程,本物の f (x) にそっくりの近似が作れるはずです.そこで「無限次の多項式のよ
うなものを考えれば,f (x) にぴったり一致するのではないか」と考えられます.というわけで,次の方針で考えます.
方針
f (x) が x = a の近傍で次のような無限級数 (無限次の多項式のようなもの) で書けたと仮定します.
f (x) = c0 (x − a)0 + c1 (x − a)1 + c2 (x − a)2 + c3 (x − a)3 + · · ·
(1)
この時,式 (1) の係数 c0 , c1 , c2 , · · · を求めてみましょう.
導出
まず式 (1) の両辺に x = a を代入すると,
f (a) = c0
つまり c0 = f (a) となります.
次に式 (1) の両辺を x で微分すると,
f ′ (x) = c1 + 2c2 (x − a) + 3c3 (x − a)2 + 4c4 (x − a)3 + · · ·
式 (2) の両辺に x = a を代入すると,
(2)
f ′ (a) = c1
よって c1 = f ′ (a) となる.
さらに,式 (2) の両辺を x で微分すると,
f ′′ (x) = 2c2 + 3 · 2c3 (x − a) + 4 · 3c4 (x − a)2 + 5 · 4c5 (x − a)3 + · · ·
(3)
2015 年度 数式処理実習 [第 10 回] 級数とテイラー展開
式 (3) の両辺に x = a を代入すると,
June 25, 2015
[p.3/4]
f ′′ (a) = 2c2
1 ′′
f (a).
2
さらに式 (3) の両辺を x で微分すると,
ここから c2 =
f ′′′ (x) = 3 · 2c3 + 4 · 3 · 2c4 (x − a) + 5 · 4 · 3c5 (x − a)2 + 6 · 5 · 4c6 (x − a)3 + · · ·
式 (4) の両辺に x = a を代入すると,
(4)
f ′′′ (a) = 3 · 2c3 = 3!c3
1 ′′′
f (a).
3!
同様に,この手順 (微分して x = a を代入する) を繰り返すことによって式 (1) の係数 c0 , c1 , c2 , · · · が全て求まります.
即ち
1
cn = f (n) (a)
n!
となります.
従って,式 (1) に代入すれば,
ここから c3 =
f (x)
=
f (a) + f ′ (a)(x − a) +
=
∞
∑
1 (n)
f (a)(x − a)n
n!
n=0
1 ′′
1
1
f (a)(x − a)2 + f ′′′ (a)(x − a)3 + · · · + f (n) (a)(x − a)n + · · ·
2!
3!
n!
となります.これを,関数 y = f (x) の x = a でのテイラー展開とよびます1 .
2.2
2.2.1
テイラー展開の利用
n 次のテイラー多項式
x = a の近傍限定ですが,難しい関数 f (x) を「無限次の多項式」で表せました.これを有限次で切ると,f (x) を近似
する多項式が得られます.
つまり,x が a に近い時,次のような近似ができます.
f (x) ≈ f (a) + f ′ (a)(x − a) +
1
1
1 ′′
f (a)(x − a)2 + f ′′′ (a)(x − a)3 + · · · + f (n) (a)(x − a)n
2!
3!
n!
ここで,記号 ≈ は,両辺の値が近いことを意味します2 .この右辺を関数 y = f (x) の,x = a での n 次のテイラー多項
式 (近似式) といいます.テイラー多項式は,次数 n が高くなればなる程,f (x) をより精密に近似します.
1 次のテイラー多項式のグラフは,x = a における y = f (x) の接線に他なりません.1 次及び 2 次のテイラー多項式
は特に頻繁に使われます.
2.2.2
Maxima
Maxima では,テイラー多項式は taylor コマンドを用いて求めます.書式は taylor(関数, 展開する変数, 展開の中
心点, 次数); です.例えば,関数 f (x) = 2x の,x = a での 4 次のテイラー多項式を求めてみます.
maxima (%i1) taylor(2^x,x,a,4);
a
2
2
a
a
(2 log (2)) (x - a)
(%o1)/T/ 2 + 2 log(2) (x - a) + --------------------2
a
3
3
a
4
4
(2 log (2)) (x - a)
(2 log (2)) (x - a)
+ --------------------- + --------------------- + . . .
6
24
1 ここでは,f (x)
が式 (1) のように書けると初めから仮定していますし,導出の議論にも色々と問題があります.厳密には,その辺りのこともきっ
ちり考えないといけません.ですが,テイラー展開の式を導くには,このやり方が最も分かり易いので,ここではこのような方法を採用しました.
2 記号「≒」は日本以外では使われていないため,残念ながら L
AT X の記号としては用意されていません.(どうしても使いたい場合は全角フォン
E
トで表示するしかありません.) 日本以外では「≈」が良く使われますが,これなら \approx で出力することができます.ここではこちらの記号を使
いました.
2015 年度 数式処理実習 [第 10 回] 級数とテイラー展開
June 25, 2015
[p.4/4]
冒頭に「/T/」と出ていますが,これは出力がテイラー多項式の形式であることを表しています.ここでは特に気にす
る必要はありません.また,式の中に log4 (2) という見慣れない表示がありますが,これは (log 2)4 のことです.log2 (2)
や log3 (2) も同様です.
従って,x が a に近い時,
f (x) ≈ 2a + 2a (log 2)(x − a) +
2a (log 2)2
2a (log 2)3
2a (log 2)4
(x − a)2 +
(x − a)3 +
(x − a)4
2
6
24
となります.f (x) が 4 次多項式で近似できました.
Maxima でのバッチファイルの利用
3
Maxima で入力するコマンドが長くなると,途中で何を打ち込んでいるのか分からなくなることも起こってきます.そ
ういう時には,実行するコマンドを並べたファイル (バッチファイル) をあらかじめ作成しておき,Maxima に一挙に実
行させることができます.
emacs で次のようなファイルを作り,su-shiki ディレクトリに保存します.ファイル名は何でも構いませんが,例え
ば cos_taylor.max とします.(ファイルの拡張子も特に付ける必要はありませんが,LATEX ファイルの拡張子が.tex な
ので,maxima のバッチファイルは.max としておくと見分けやすくていいと思います.)
˜/su-shiki/cos taylor.max kill(all);
← 念のため,今までの変数と値の関係を消去
c2:1-x^2/2;
← cos x の x = 0 での 2 次のテイラー多項式を c2 と定義
c4:1-x^2/2+x^4/24;
← cos x の x = 0 での 4 次のテイラー多項式を c4 と定義
c6:1-x^2/2+x^4/24-x^6/720;
← cos x の x = 0 での 6 次のテイラー多項式を c6 と定義
c8:1-x^2/2+x^4/24-x^6/720+x^8/40320;
← cos x の x = 0 での 8 次のテイラー多項式を c8 と定義
plot2d(
← cos x と上の 4 つのテイラー多項式を 1 つの図に描き,ファイルに保存
[cos(x),c2,c4,c6,c8],
[x,-2*%pi,2*%pi],
[y,-4,4],
[gnuplot_term, "postscript eps color"],
[gnuplot_out_file, "cos_taylor.eps"]
);
さて,ここで端末をもう一つ起動します.su-shiki ディレクトリに移動して,このバッチファイルを maxima にリダ
イレクトします.
端末 kawakubo> cd⊔ ~/su-shiki
← ˜/su-shiki に移動
kawakubo> maxima⊔ <⊔ cos_taylor.max ← バッチファイル cos_taylor.max を maxima にリダイレクト
各コマンドに対して結果が次々に出力されます.生成されたファイル cos_taylor.eps を開いて中身を確認しましょう.
レポート課題
4
• http://www.cis.fukuoka-u.ac.jp/˜kawakubo/ の今日の所の sm140000 10.pdf の設問に答えよ.
• sm140000 10.tex (sm140000 10.pdf の原稿ファイル) をダウンロードし,˜/su-shiki ディレクトリに保存せよ.
• ファイル名「sm140000 10.tex」の「sm140000」の部分は各自の学籍番号に変更すること.また,Emacs でファイ
ルの中身を編集し,上段の氏名欄に自分の学籍番号と氏名を書くこと.
• Maxima で (手計算と書いてある部分は手計算で) 問題を解け.解答は原稿ファイルを編集して LATEX で作成せよ.
• PDF ファイルを作成し,印刷したものを提出すること.締切は 7 月 2 日.
• 疑問点等があれば,書いて下さい.
復習:PDF ファイル作成に使うもの.Maxima 用の端末とは別に,もう一つ端末を起動します.
LATEX タイプセットなど
kawakubo>
kawakubo>
kawakubo>
kawakubo>
cd⊔ ~/su-shiki
emacs⊔ &
platex⊔ sm140000_10.tex
dvipdfmx⊔ sm140000_10.dvi
← ˜/su-shiki に移動
← emacs をバックグラウンドで起動
← sm140000 10.tex を platex でタイプセット
← sm140000 10.dvi から sm140000 10.pdf を作成