ぽんのブログ -17ページ目

ぽんのブログ

自分用の備忘録ブログです。書いてある内容、とくにソースは、後で自分で要点が分かるよう、かなり簡略化してます(というか、いい加減)。あまり信用しないように(汗

色々調べ物をしていて、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] での積分