関数を別の関数に渡す
関数ハンドルを別の関数の入力引数として使用することができ、これは "関数を引数とする関数" と呼ばれます。これらの関数は、所定の値の範囲に対して数式を計算します。関数を引数とする関数として代表的なものには integral
、quad2d
、fzero
および fminbnd
があります。
たとえば、0 から 5 の自然対数の積分を求める場合、関数 log
へのハンドルを integral
へ渡します。
a = 0; b = 5; q1 = integral(@log,a,b)
q1 = 3.0472
同様に、関数 sin
と関数 exp
の積分を求めるには、それらの関数へのハンドルを integral
へ渡します。
q2 = integral(@sin,a,b)
q2 = 0.7163
q3 = integral(@exp,a,b)
q3 = 147.4132
また、無名関数へのハンドルを、関数を引数とする関数に渡すこともできます。無名関数は、プログラム ファイルを必要としない 1 行で表現される MATLAB® 関数です。たとえば、[0,Inf]
の範囲で の積分を評価します。
fun = @(x)x./(exp(x)-1); q4 = integral(fun,0,Inf)
q4 = 1.6449
関数を入力として受け取る関数 ("関数を引数とする関数" と呼ばれる) は、関数ハンドルに関連付けられた関数にある一定数の入力引変数を求めます。たとえば、integral
または fzero
を呼び出す場合、関数ハンドルに関連付けられている関数には厳密に 1 つの入力変数がなければなりません。integral3
を呼び出す場合は、関数ハンドルに関連付けられている関数には 3 つの入力変数がなければなりません。より多くの変数をもつ "関数を引数とする関数" を呼び出す方法の詳細については、関数のパラメーター化を参照してください。