Maxima
Maximaは無料で使える高機能な数式処理ソフト. 概要についてはWikipediaのページを参照.
インストール
ダウンロードはSourceForgeから. Windows用, Linux用, MacOS用, およびソースが提供されている.
WindowsでwxMaximaを使う場合, コマンド(例えば plotdf(x); )を実行するには, Shift+Enterと押す必要がある. Enterだけだと改行しかしない. この仕様は, 編集→設定→Enterでセルを評価, で変更できる.
方向場
コ マンドは plotdf(). 例えば plotdf(x+y^2); としてしばらく待つと, 方向場のグラフが表示される. グラフ内をクリックすると解曲線が描かれる. x, y の範囲はグラフ左上の Config の yradius, xradius 等で変更できる.
グラフを印刷するならスクリーンショットを使うのが簡単. もちろんPostScriptを印刷できる環境があるならそれでもよい.
Picardの逐次近似法
例として \(y'=1+y^2, y(0)=0\) を近似してみる. まず1つずつ積分するやり方.
(%i1) y[0]:0;
(%o1) 0
(%i2) y[1]:expand(integrate(1+y[0]^2,x,0,x));
(%o2) x
(%i3) y[2]:expand(integrate(1+y[1]^2,x,0,x));
(%o3) \(\frac{x^3}{3}+x\)
(%i4) y[3]:expand(integrate(1+y[2]^2,x,0,x));
(%o4) \(\frac{x^7}{63}+\frac{2x^5}{15}+\frac{x^3}{3}+x\)
繰り返しを使ってまとめて計算するやり方.
(%i1) y[0]:0;
(%o1) 0
(%i2) for n:1 thru 7 do(y[n]:expand(integrate(1+y[n-1]^2,x,0,x)));
(%o2) done
(%i3) y[1];
(%o3) x
(%i4) y[2];
(%o4) \(\frac{x^3}{3}+x\)
(%i5) y[3];
(%o5) \(\frac{x^7}{63}+\frac{2x^5}{15}+\frac{x^3}{3}+x\)
グラフを描くには次のようにする.
(%i6) plot2d(y[3],[x,-1.5,1.5]);
(%o6)
複数の関数を1つのグラフに描くには次のようにする.
(%i7) plot2d([y[2],y[3],tan(x)],[x,-1.5,1.5]);
(%o7)
色々な近似解を入れてみれば, 厳密解 y=tan(x) を近似してゆく様子がわかると思う.
ここで使用したコマンドは以下の通り.
- integrate(f, x, a, b) --- 関数 f を x について a から b まで定積分する.
- expand(P) --- 多項式 P を展開する.
- for i:a thru b do(コマンド) --- i が a から b になるまでコマンドを繰り返す.
- plot2d(f,[x,a,b]) --- 関数 f のグラフを, x の範囲 [a,b] で描く.