色々調べ物をしていて、octave でも無名関数が使えるという事を発見(?)しました。
そうだったのか・・・
例えば、なんかの用事で 2 x + 1 の[-1, 1] での定積分を計算したい!
と思ったら
function y = test_func (x)
y = 2 * x + 1;
end
を用意して
quad ("test_func", -1, 1)
としなければいけませんでした。
でも 2 * x + 1 を無名関数で書くと
@(x) 2 * x + 1
と、 function y = hogehoge の部分を省略し名前なし(無名)で書けます。
従って上の積分も
quad( @(x) 2 * x + 1, -1, 1)
で済んでしまいます。このようにその場でちょこっと使うだけの関数を、名前の衝突も無く簡単に書けてしまいます。
さらにこちらにあるように、quad にパラメータ付きの関数を与えたい場合
ret = @(c) quad ( @(x) c * x + 1, -1, 1);
としてやれば
ret(2) % 2 * x + 1 の積分
ret(3) % 3 * x + 1 の積分
などと出来ます。
さらに
ret3 = @(c, a, b) quad( @(x) c * x + 1, a, b);
とすれば積分区間も後から与えられます。
ret3 (2, -2, 3) % 2 * x + 1 の [-2, 3] での積分