05.1 Metodo di Eulero

Metodo di Eulero


Introduzione del metodo

☑️ Ipotesi

ipotesi

Algoritmo

GraficoEulero.png|350

Discretizzazione

I=[x0,x0+β] intervallo di discretizzazione.

Scrivo y(t) come:

y(t)=y(t0)+(tt0)y(t0)+(tt0)22y(τ0) con τ0[t0,t1], t1=t0+h

Calcolato in t1 diventa

y(t1)=y(t0)+(t1t0)y(t0)+...+R(t1,h,y)

Dove R(t1,h,y) è l'#Errore di troncamento locale.
Essendo, per come è stato definito il problema

t1t0=hy(t0)=f(t0,y(t0))

posso scrivere:

y(t1)=y(t0)+hf(t0,y(t0))+R(t1,h,y)

E posso quindi scrivere l'approssimazione y1 come

y1=y0+hf(t0,y0)
algoritmo

{yi+1=yi+hf(ti,yi)y0=y(t0)

Errori

Errore di Troncamento Globale

errore di troncamento globale

ei=y(ti)yi

Errore di troncamento locale

errore di troncamento locale metodo di eulero

R(ti,h,y)=h22y(τi)τi[ti,ti+1]

Convergenza

Condizioni di convergenza

NON VISTO

Ordine di convergenza

ordine di convergenza

Il [[#Metodo di Eulero]] ha ordine di convergenza pari a 1:
p=1

Stima iterazioni necessarie

NON VISTO

Criterio di arresto

Criterio di arresto a posteriori

Posso interrompere l'algoritmo quando l'errore al passo k è minore di una tolleranza scelta ε.

|ek|ε

Implementazione in Matlab

Riportare la function per l'applicazione del metodo in matlab

function [Ti,Yi] = MetodoEulero(fun, I, y0, n_step)

% Metodo di Eulero

% Calcola la soluzione di una EDO del orimo ordine ai valori iniziali con

% il metodo di Eulero

% Input:

% fun(t,y): termine noto del problema (function)

% I(1:2): Estremi dell'intervallo di integrazione (vettore)

% y0(1): Condizione iniziale

% n_step: Numero passi temporali (scalare)

%

% Output:

% Ti(1:n_step + 1): Nodi di discretizzazione (vettore)

% Yi(1:n_step + 1): Vettore delle approssimazioni (vettore)

t0 = I(1);

tf = I(2);

% Passo di discretizzazione

h = (tf-t0)/n_step;

% Griglia dei nodi: equispaziata

Ti = linspace(t0,tf, n_step + 1);

Ti = Ti'; % Rendo Ti un vettore colonna

% Inizializzazioni

Yi = nan(n_step + 1, 1);

Yi(1) = y0;

% Metodo di Eulero

for i= 1:n_step

Yi(i+1) = Yi(i) + h*fun(Ti(i), Yi(i));

end

end