Professional Documents
Culture Documents
y (t2 ) è approssimato da
Un miglioramento a questo algoritmo può essere ottenuto nel seguente modo, invece di usare
la derivata in ti , usiamo una media della derivata in ti e ti+1 usando il valore ui+1 = yi + hf (ti , yi )
per approssimare yi+1 nel calcolo della derivata in ti+1 . Otteniamo quindi il seguente algoritmo
di Eulero migliorato:
ti+1 = ti + h
ui+1 = yi + hf (ti , yi )
yi+1 = yi + h f (ti ,yi )+f2(ti+1 ,ui+1 ) .
data da y(t) = e1−(t+1)e in nero e le approssimazioni numeriche ottenute con il metodo di Eulero
−t
(in verde) e il metodo di Eulero migliorato (in blu) relativi a vari valori del parametro h > 0.
47
3
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.55: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 4
48
3
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.56: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 2
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.57: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 1
49
3
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.58: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 0.5
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.59: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 0.1
50
3
2.5
1.5
y
0.5
0
0 1 2 3 4 5 6 7 8
t
Figura 0.60: Grafico della soluzione esatta e delle due approssimazioni numeriche con h = 0.01
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
from math import *
import Gnuplot, Gnuplot.funcutils
import numpy
51
# estremo superiore dell’intervallo di integrazione
T = 8.
# dati iniziali
t0 = 0
y0 = 1
# numero di passi
n = int(T / h) + 1
# ALGORITMO DI EULERO
for i in range(n-1):
t[i+1] = t[i] + h
y[i+1] = y[i] + h * f(t[i],y[i])
# EULERO MIGLIORATO
52