08/09/30 18:35:06
>>643
なぜまたオイラー法が必要なんでしょう。
MATLABには
ODE45などのルンゲクッタ法の発展型の優れた関数があるのに。
以下はOctaveでしか動きませんが,
ODEの解法の原理として講義で使ったものです。
関数を引数として受けるやり方は良く分かりませんが。
% Octave script m file
% Eulerのテスト
1; %dummy
% ****** Definition of a function
function dy=f(y,t); dy=-y; end
% ******* Main script
t0=0; tend=5; N=100; %t0 初期値,tend 範囲の終わり, N 間隔の数(点の数は,N+1)
t=linspace(t0,tend,N+1); % tの配列を定義
dt=(tend-t0)/N; % tの刻み幅
y(1)=1; % yの初期値
%
for n=1:N
y(n+1)=y(n) + f(y(n),t(n))*dt;
end
%
plot(t,exp(-t), "", t, y, "@");