f:id:jurupapa:20141025073454j:plain

にほんブログ村 科学ブログ 数学へ
にほんブログ村

Maximaには不思議なパッケージが色々とあります。前回は対称式を扱うsymパッケージの中のelem()関数を紹介しました。

 

今回はそれよりも不思議さ3倍の、謎のパッケージasympaの紹介です。

 

マニュアルの40. asympaを見た方は知っていると思いますが、ほとんど何も書いてありません。漸近解析をしてくれること、asympa()という関数があること、load("asympa");を使う前に実行すること、がわかるだけです。

 

そこで、Maximaがオープンソースであることでもあるので、asympa.macのソースをさわりだけ読んでみました。また古いメーリングリストアーカイブを探って関連するメールを読みました。それらからわかったことを以下に覚え書き的にメモっておきます。

 

そのまえに少しだけ漸近展開について。ある関数の挙動を知りたいときにその関数を近似する関数を求め、そちらを調べる、というのはよくあることです。テイラー展開などはその典型です。なんでも冪級数に展開して有限項で打ち切れば多項式になってしまうのですから。

漸近展開もそのような近似のやり方の一つです。テイラー展開と異なるのは、多くの場合無限遠点や特異点で展開するのです。また展開の仕方もある条件を満たす必要はありますが、決まった方式があるわけではありません。おまけに、漸近展開も級数への展開なのですが、その級数展開が収束することも発散することもあります。しかし発散する場合でも有限の項で打ち切ると良い近似になっていたりする、という特性があります。文末に参考文献を載せておきますので、読んでみてください。

 

ではやってみましょう。まずはお約束のパッケージ読み込みです。

(%i1) load(asympa)$

gという変数にこれから扱う有利関数を代入します。特異点が2つあり、漸近線もあるそんな有理関数です。
(%i2) g:(x^3/5+x+1)/(x^2-4);
$$ ag{%o2} frac{frac{x^3}{5}+x+1}{x^2-4} $$

グラフです。結構面白いグラフになります。式やグラフを見てわかるように、特異点はx=-2及びx=2の2つです。
(%i3) wxplot2d(g,[x,-10,10],[y,-10,10]);
plot2d: some values were clipped.

f:id:jurupapa:20150408233825p:plain

$$ ag{%o3} $$

次にどの点で展開するかを指定します。まず無限遠点で展開してみましょう。それには次のようなコマンドを実行します。これで変数xについて無限大で展開せよ、という意味になります。
(%i4) put(x,inf,limit);
$$ ag{%o4} infty $$

では実際に展開してみます。展開結果の最初の項だけを求めてみます。
(%i5) ga:asympseries(g,1);
$$ ag{%o5} frac{x}{5} $$

これはつまり、この有利関数はxが無限遠の時( frac{x}{5} )と同じように振舞う、ということです。確認のためにgとgaをグラフに書いてみましょう。
(%i6) wxplot2d([g,ga],[x,-10,10],[y,-10,10]);
plot2d: some values were clipped.

f:id:jurupapa:20150408234133p:plain

$$ ag{%o6} $$

確かにこのグラフを見ると赤い直線はx が無限遠に行く時の青いグラフの漸近線になっています。

次に特異点x=2の周りで展開してみましょう。
(%i7) put(x,2,limit);
$$ ag{%o7} 2 $$

早速展開してみます。今度は第2項まで求めてみます。
(%i8) ga:asympseries(g,2);
$$ ag{%o8} frac{23}{5,x^2-20}+frac{17}{20} $$

x=2付近でこのgaがgをよく近似できていることをグラフで確認してみます。
(%i9) wxplot2d([g,ga],[x,-10,10],[y,-10,10]);
plot2d: some values were clipped.
plot2d: some values were clipped.
f:id:jurupapa:20150408234331p:plain

$$ ag{%o9} $$

確かに0<=x<2, 2<x<3あたりではグラフがよく重なっていることが分かります。

同じように特異点x=-2で展開してみます。
(%i10) put(x,-2,limit);
$$ ag{%o10} -2 $$
(%i11) ga:asympseries(g,2);
$$ ag{%o11} -frac{13}{5,x^2-20}-frac{17}{20} $$

これもグラフで確かめておきましょう。
(%i12) wxplot2d([g,ga],[x,-10,10],[y,-10,10]);
plot2d: some values were clipped.
plot2d: some values were clipped.

f:id:jurupapa:20150408234539p:plain

$$ ag{%o12} $$

最後に普通の点(非特異点というのかな)x=0での展開を見てみます。
(%i13) put(x,0,limit);
$$ ag{%o13} 0 $$
(%i14) ga:asympseries(g,2);
$$ ag{%o14} -frac{x}{4}-frac{1}{4} $$

第2項まで取ると一次関数に展開されました。グラフに書くとこんな感じです。
(%i15) wxplot2d([g,ga],[x,-10,10],[y,-10,10]);
plot2d: some values were clipped.

f:id:jurupapa:20150408234705p:plain

$$ ag{%o15} $$

漸近級数や漸近展開についてはこの本を参考にしています。ただし、このasympaパッケージにできるのは有理関数の漸近展開くらいのようです。積分表示された関数の漸近展開や微分方程式の解の漸近展開など、この本で紹介されているような例はasympaパッケージでは扱えません。

数列・関数列の無限級数 -基礎からフーリエ級数・漸近級数まで-

数列・関数列の無限級数 -基礎からフーリエ級数・漸近級数まで-

  • 作者: 柴田正和
  • 出版社/メーカー: 森北出版
  • 発売日: 2012/01/27
  • メディア: 単行本(ソフトカバー)
  • クリック: 1回
  • この商品を含むブログを見る