Untitled
unknown
plain_text
a year ago
949 B
5
Indexable
% Forward --> x(n+1) = x(n) + h*f(x(n))
%Nel nostro caso diventa --> x(n+1) = x(n) + h*(-k*x(n))
%Semplificando diventa x(n+1) = x(n)*(1-kh)
% Backward --> x(n+1) = x(n) + h*f(x(n+1))
% Nel nostro caso diventa --> x(n+1) = x(n) + h*(-k*x(n+1))
%Semplificando diventa x(n+1) = x(n)/(1+kh)
function [t, x_forward, x_backward, x_exact] = metodi_eulero(k, x0, tspan N)
h = (tspan(2) - tspan(1))/N;
t = tspan(1):h:tspan(2);
x_forward = zeros(1, N+1);
x_backward = zeros(1, N+1);
x_exact = zeros(1, N+1);
x_forward(1) = x0;
x_backward(1) = x0;
for i = 1:N
% Forward
x_forward(i+1) = x_forward(i) * (1-k*h);
% Backward
x_backward(i+1) = x_backward(i) / (1+k*h);
% Soluzione esatta
x_exact(i) = x0*exp(-k*t(i));
end
x_exact(N+1) = x0*exp(-k*t(N+1));
end
k = 1;
x0 = 1;
tspan = [0 5];
N = 100;
[t, x_f, x_b, x_e] = metodi_eulero(k, x0, tpsan, N);
Editor is loading...
Leave a Comment