Getting Started | ![]() ![]() |
関数を引数とする関数
"関数を引数とする関数"と呼ばれる関数クラスは、スカラ変数の非線形関数と共に機能します。これは、一つの関数が他の関数上で機能するものです。つぎのような事柄を含んでいます。
MATLABは、ファンクションM-ファイルを使って、非線形目的関数を表現します。たとえば、matlab/demos
ディレクトリから関数 humps
の簡単なバージョンを示します
function y = humps(x) y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;
x = 0:.002:1; y = humps(x);
plot(x,y)
グラフは、関数が x = 0.6近傍で極小値をもつことを示しています。関数
fminsearch
は、関数の最小値をもつx の値、最小点
を探索します。fminsearch
への最初の引数は、最小化される関数名、2番目の引数は最小値の位置のラフな推定値です。
p = fminsearch(@humps,.5) p = 0.6370
humps(p) ans = 11.2528
数値解析は、定積分の数値的近似と常微分方程式の数値積分の間を区別するため求積
と積分 の項を使います。MATLABの求積ルーチンは、quad
と quadl
です。ステートメント
Q = quadl(@humps,0,1)
Q = 29.8583
最終的に、グラフは、関数がこの区間でゼロにならないことを示しています。それで、つぎのステートメントでゼロの位置を探索します。
z = fzero(@humps,.5)
z = -0.1316
![]() |
関数ハンドル | MATLABに含まれるデモプログラム | ![]() |