我正在嘗試為 Forward Euler 方法撰寫 MATLAB 代碼,但我認為輸出不完全正確。
這是我的代碼:
function [tHist ,uHist] = ForwardEuler(f,tspan ,u0,nsteps)
T = [tspan(1) :nsteps: tspan(2)];
u = zeros(1,nsteps);
u(n) = u0;
h = (tspan(2) - tspan(1))/nsteps;
for i= 1: nsteps
u(i 1) = u(i) h*f(T(i),u(i));
tHist = [u(i 1)*T(i)];
uHist = [u(i 1)];
end
end
uj5u.com熱心網友回復:
一個最小的直接實作可能看起來像
function [tHist ,uHist] = ForwardEuler(f,tspan ,u0,nsteps)
tHist = linspace(tspan(1), tspan(2), nsteps 1);
h = tHist(2)-tHist(1);
uHist = zeros(nsteps 1,length(u0));
uHist(1,:)=u0;
for i = 1:nsteps
uHist(i 1,:) = uHist(i,:) h*f(tHist(i),uHist(i,:));
end%for
end%function
用圓方程測驗例程
[T,U] = ForwardEuler(@(t,u)[u(2), -u(1)], [0,6.5], [1,0], 60);
plot(U(:,1),U(:,2));
這產生了預期的向外螺旋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402909.html
標籤:
上一篇:如何從表格創建輪廓圖?
