METODO DI EULERO ESPLICITO

Documenti analoghi
Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Esercitazioni di Analisi e Simulazione dei Processi Chimici

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

ISTRUZIONI PER LA CONSEGNA DEI FILE MATLAB

Corso di Calcolo Numerico

Corso di Calcolo Numerico

Analisi Numerica. Debora Botturi ALTAIR. Debora Botturi. Laboratorio di Sistemi e Segnali

ESERCITAZIONE Implementare i metodi di Eulero, di Heun e di Runge-Kutta del quarto ordine per integrare il problema di Cauchy:

Metodi a più passi. Esempi

Equazioni differenziali con valori al bordo

Equazioni differenziali. Gabriella Puppo

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Laboratorio 3. Integrazione numerica

Metodi numerici per la risoluzione di equazioni. Equazioni differenziali ordinarie

Corso di Calcolo Numerico

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari

Il problema di Cauchy

Algoritmi stabili e instabili

Programmare con MATLAB c Parte 5 Cicli: for e while

Alcuni esercizi in preparazione all appello scritto di Calcolo Numerico

Note sull algoritmo di Gauss

Laboratorio di Calcolo Numerico Laboratorio 7: Quadratura numerica

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Esercizi in Python. Docente: Domenico Daniele Bloisi

Esercizio 1. Esercizio 2

Calcolo Numerico - Prova Matlab 19 luglio 2013

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Problema. Equazioni non lineari. Metodo grafico. Teorema. Cercare la soluzione di

Soluzione di Equazioni non lineari

Equazioni e sistemi non lineari

Esercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

FONDAMENTI DI INFORMATICA

Equazioni e sistemi non lineari

Equazioni differenziali ordinarie

Transcript:

METODO DI EULERO ESPLICITO { u0 dato u n+1 = u n + hf (t n, u n ) 0 n N h 1 (1) Scrivere una function [tn,un]=eulero esp(odefun,tspan,y0,nh) INPUT: odefun: espressione della f tspan=[t0,t]: vettore di 2 componenti: istante iniziale e finale dell intervallo y0: valore scalare: la condizione iniziale Nh: numero (intero) di passi temporali (Nh è tale che T = t Nh ). OUTPUT: tn: vettore colonna contenente gli istanti temporali da t 0 a t Nh. un: vettore colonna contenente la soluzione numerica negli istanti temporali t n. c Paola Gervasio - Calcolo Scientifico - 2018/19 1

N.B. esprimere f in funzione di due variabili t e y con y non dipendente da t. ES: f (t, y) = t y(t): diventa f=@(t,y)t-y N.B. Generare il vettore dei tn con il comando linspace: tn=linspace(tspan(1),tspan(2),nh+1); Inizializzare il vettore un della stessa dimensione di tn e memorizzare nella prima componente di un il valore di y 0. Con un ciclo costruire sequenzialmente le componenti del vettore un c Paola Gervasio - Calcolo Scientifico - 2018/19 2

Esercizio 1 Si consideri il problema di Cauchy { y = t y t ( 1, 3] y( 1) = 1. Scrivere un m-file che: 1) richiami la function eulero esp.m con h = 0.5 (calcolare N h = (T t0)/h e prendere la parte intera (usare fix, ceil, round)); 2) rappresenti graficamente la soluzione numerica e quella esatta (fuori dalla function eulero esp.m). La soluzione esatta è: y(t) = t 1 + 3e (t+1). 3) calcoli l errore e h = max y(t n ) u n n=0,...,n h (fuori dalla function eulero esp.m) e stamparlo a video Sol. Si ottiene err=0.3536 c Paola Gervasio - Calcolo Scientifico - 2018/19 3 (2)

I grafici della soluzione numerica e di quella esatta sono: 2 sol esatta sol numerica 1.5 1 0.5 0-1 -0.5 0 0.5 1 1.5 2 2.5 3 c Paola Gervasio - Calcolo Scientifico - 2018/19 4

Esercizio 2 Ripetere il lavoro dell esercizio precedente con h = 0.5, h = 0.25, h = 0.125. Per ogni valore di h rappresentare le soluzioni numeriche trovate, calcolare e stampare a video l errore e h = max n=0,...,nh y(t n ) u n. Domande: 1. Dimezzando h, cosa succede all errore? 2. Come dipende l errore e h da h per h 0? Rappresentare su un grafico loglog gli errori e h al variare di h, considerare anche valori di h < 0.125. c Paola Gervasio - Calcolo Scientifico - 2018/19 5

Le soluzioni numeriche 2 1.5 sol esatta sol numerica h=0.5 sol numerica h=0.25 sol numerica h=0.125 1 0.5 0-1 -0.5 0 0.5 1 1.5 2 2.5 3 Quando h diminuisce la soluzione numerica si avvicina alla soluzione esatta. c Paola Gervasio - Calcolo Scientifico - 2018/19 6

METODO DI EULERO IMPLICITO { u0 dato u n+1 = u n + hf (t n+1, u n+1 ), 0 n N h 1 (3) [tn,un]=eulero_imp(odefun,tspan,y0,nh) INPUT: odefun: espressione della f tspan=[t0,t]: vettore con istante iniziale e finale dell intervallo y0: valore scalare: la condizione iniziale Nh: numero intero di passi temporali (Nh è tale che T = t Nh ). OUTPUT: tn: vettore colonna contenente gli istanti temporali da t 0 a t Nh. un: vettore colonna contenente la soluzione numerica negli istanti temporali t n. c Paola Gervasio - Calcolo Scientifico - 2018/19 7

Ad ogni passo t n dobbiamo risolvere l equazione non lineare con incognita u n+1 : u n+1 = u n +hf (t n+1, u n+1 ) g(u n+1 ) = u n+1 u n hf (t n+1, u n+1 ) = 0 Attenzione: la funzione g cambia ad ogni passo t n perchè dipende da u n e da t n+1. L equazione non lineare g(u n+1 ) = 0 può essere risolta con secanti. Utilizziamo la function secant [z,res,it]=secant(fun,x0,x1,tol,kmax) c Paola Gervasio - Calcolo Scientifico - 2018/19 8

Cosa prendiamo come x0 e x1? Al primo passo temporale poniamo x (1) = u 0 e x (0) = u 0 + h. Per i successivi passi temporali poniamo x (1) = u n e x (0) = u n 1. n=1 g=@(x)x-un(n)-h*odefun(tn(n+1),x); un(n+1)=secant(g,un(n)+h,un(n),tol,kmax); for n=2:nh g=@(x)x-un(n)-h*odefun(tn(n+1),x); un(n+1)=secant(g,un(n-1),un(n),tol,kmax); end c Paola Gervasio - Calcolo Scientifico - 2018/19 9

Esercizio 3. Si consideri il problema di Cauchy { y = t y t ( 1, 3] y( 1) = 1. Scrivere un m-file che: 1) richiami la function eulero imp.m con h = 0.5 (calcolare N h = (T t0)/h e prendere la parte intera (usare fix, ceil, round)); 2) rappresenti graficamente la soluzione numerica e quella esatta (fuori dalla function eulero esp.m). La soluzione esatta è: y(t) = t 1 + 3e (t+1). 3) calcoli l errore e h = max y(t n ) u n n=0,...,n h (fuori dalla function eulero imp.m) e stamparlo a video Sol. Si ottiene err=0.2297 c Paola Gervasio - Calcolo Scientifico - 2018/19 10

I grafici della soluzione numerica e di quella esatta sono: 2 sol esatta sol numerica 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2-1 -0.5 0 0.5 1 1.5 2 2.5 3 c Paola Gervasio - Calcolo Scientifico - 2018/19 11

Esercizio 4 Ripetere il lavoro dell esercizio precedente con h = 0.5, h = 0.25, h = 0.125. Per ogni valore di h rappresentare le soluzioni numeriche trovate, calcolare e stampare a video l errore e h = max n=0,...,nh y(t n ) u n. Domande: 1. Dimezzando h, cosa succede all errore? 2. Come dipende l errore e h da h per h 0? Rappresentare su un grafico loglog gli errori e h al variare di h, considerare anche valori di h < 0.125. c Paola Gervasio - Calcolo Scientifico - 2018/19 12

Le soluzioni numeriche 2 sol esatta 1.8 1.6 sol numerica h=0.5 sol numerica h=0.25 sol numerica h=0.125 1.4 1.2 1 0.8 0.6 0.4 0.2-1 -0.5 0 0.5 1 1.5 2 2.5 3 Quando h diminuisce la soluzione numerica si avvicina alla soluzione esatta. c Paola Gervasio - Calcolo Scientifico - 2018/19 13