ノート (67 ページ) MATLAB version 4 では ``The Ultimate Technical Computing Environment'' とサブタイトルがつけられていたのだが,MATLAB version 5 では ``The Langage of Technical Computing'' と変更された.
このことからもわかるように,MATLAB version 5 ではデータ構造や言語機能,そしてプログラミング開発環境の整備が図られている.
具体的には,MATLAB ワークスペースブラウザや GUI ベースの M-ファイルエディタとデバッガ(PC と Mac のみ),プログラムの実行におけるボトルネックを検出する M-ファイル実行速度プロファイラ,アルゴリズムの隠蔽するための P-Code(Psudo-Code)などが追加されている.
その他,多次元配列,M-ファイルの機能拡張,新しい常微分方程式ソルバー(stiff な ODE のサポート),不規則にサンプリングされたデータの解析(空間に等間隔に分布していないデータでも表示したり解析したりできる)などの拡充も見逃せない.
詳しくは,Matlab Using Matlab version 5, The Math Works Inc.,
Natick, MA 01760, 1996
を参照せよ.このノートでは,特に新しい常微分方程式ソルバー
non-stiff system solvers |
|
stiff system solvers |
|
について述べる.
これらは,基本的には既に MathWorks 社の FTP サーバで提供されていた.
1 段階の陽的解法であったode23, ode45
に多段階法の
|
可変次数の予測子・修正子法 |
が加わった.
一般に,ある種の陰的公式,とりわけ後退微分公式が陽的公式に比べて格段にパーフォーマンスがよい微分方程式をスティッフ (stiff) であるというが,スティッフな微分方程式を解くためのソルバー
|
後退微分公式も使える可変次数ソルバー |
|
2 次の改良型ローゼンブロック |
などが加わった.
これらのソルバーを使う構文上の主な変更箇所は,微分方程式系を定義する関数 M-ファイルにおいて微分方程式系を列ベクトルとして与えることと,ソルバーを使う構文で数値解を求める区間(下の例では
tspan
)を行ベクトルとして与えることである.
たとえば,57 ページで述べた van der Pol 方程式を表現する関数 M-ファイルは
function xprime = vdpol(t,x)
xprime = [x(2); x(2).*(1-x(1).^2)-x(1)];となり,
ode23
を使うスクリプトは
t0 = 0; tf = 20; tspan = [t0,tf];
x0 = [0 0.25]';
[t,x] = ode23('vdpol',tspan,x0);となる.
初期値x0
は列ベクトルでも行ベクトルでもよいが,微分方程式系が列ベクトルで与えられることになったため,初期値も列ベクトルで与えるほうがよい.
また,58 ページで述べた Lorenz 方程式を表現する関数 M-ファイルは
function udot = loreq(t,u)
global S R B
udot = [-S*u(1) + S*u(2);
R*u(1) - u(2) - u(1)*u(3);
-B*u(3) + u(1)*u(2)];
となり,ode45 を使うスクリプトは
global S R B; S = 10; R = 28; B = 8/3;
[t,u] = ode45('loreq',[0,30],[1,2,3]');
N = find(t>1); v = u(N,:); plot3(v(:,1),v(:,2),v(:,3)); grid on
p = 0.01; comet3(v(:,1),v(:,2),v(:,3), p)
となる.
|
|
|