13. 高階関数とは?
引数 → 返り値
関数
function
Data → Data
高階関数
higher order function
Function → Data
Data → Function
Function → Function
汎関数
functional
※ 数学ではこのクラスを
特に functional と呼ぶが,
functional programming の
由来では無いっぽい
Function → Data
関数型プログラミングでは高階関数を駆使する
14. 引数
plot( x, y) Data
fplot( f, xrng) Function
高階関数を使うとハイレベルなアルゴリズムを
容易に使いまわすことができる
⇒ fplot が如何にハイレベルか見てみよう
←高階関数
高階関数の例
←ただの関数
38. 常微分方程式の離散化を行う高階関数
function [ fd ] = c2d_euler( fc, h )
function x_new = proto_fd(x)
x_new = x + h*fc(x);
end
fd = @proto_fd;
End
与えられた 𝑓𝑓C と ℎ に
基づいてオイラー法で
計算を行う関数を…
← 返す!
39. 常微分方程式版の van der Pole oscillator
fc = @(x) [x(2); (1-x(1)^2)*x(2)-x(1)];
差分方程式版の生成
h = 0.2; % h:時間刻み
fd = c2d_euler(fc,h); % 簡単!
確認のために 𝒙𝒙(𝒕𝒕) の軌道を計算
N = 50; x = zeros(N,2);
x(1,:) = [2,0]; % 初期状態
for k=1:N-1
x(k+1,:) = fd(x(k,:)');
end 結果は次のスライド
使い方