38
Metodi numerici per la risoluzione di equazioni differenziali ordinarie Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ Lezione 5 - 31 ottobre 2005 Lucia Gastaldi Equazioni differenziali ordinarie

Metodi numerici per la risoluzione di equazioni differenziali …unina.stidue.net/Calcolo Numerico 2/Materiale/Metodi... · 2011-05-13 · Il problema di Cauchy Discretizzazione di

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Metodi numerici per la risoluzione di equazionidifferenziali ordinarie

Lucia Gastaldi

Dipartimento di Matematica,http://dm.ing.unibs.it/gastaldi/

Lezione 5 - 31 ottobre 2005

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Outline

1 Il problema di CauchyIl problema di CauchyStabilita del problema

2 Discretizzazione di equazioni differenziali ordinarieIl metodo di EuleroIl metodo di Crank-Nicolson

3 Analisi del metodoConvergenza e stima dell’erroreStabilita assoluta

4 Risoluzione di equazioni differenziali con MatlabSolutoriSistema di equazioni differenziali

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Il problema di Cauchy

Problema

Sia I un intervallo di R, data f : I × R → R, trovare y : I → Rderivabile tale che

(C)

{y ′(t) = f (t, y(t)) t ∈ Iy(t0) = y0.

Teorema

Se la funzione f e continua in I × R e lipschitziana rispetto a y ,cioe esiste L > 0 tale che

|f (t, y1)− f (t, y2)| ≤ L|y1 − y2| ∀t ∈ I , ∀y1, y2 ∈ R,

allora esiste una ed una sola y : I → R soluzione del problema diCauchy.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Esempio

Un problema di Cauchy senza soluzione

Si consideri la funzione f : R2 → R data da

f (t, y) =

{−1 se y ≥ 0, t ∈ R,1 se y < 0, t ∈ R,

allora il problema di Cauchy{y ′(t) = f (t, y) per t ∈ Ry(0) = 0

non ha soluzione.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Esempio

Un problema di Cauchy con infinite soluzioni{y ′(t) = 2

√|y | per t ∈ R

y(0) = 0

Si verifica facilmente che le funzioni:

y(t) = 0 ∀t ∈ R; y(t) = t|t| ∀t ∈ R

sono due possibili soluzioni del problema di Cauchy considerato.Inoltre, per ogni a ∈ R si puo trovare una soluzione di questoproblema di Cauchy con la seguente espressione:

y(t) =

{0 se t < a(t − a)2 se t ≥ a.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Esempio

Un problema di Cauchy la cui soluzione non e definita su tutto R.{y ′(t) = 1 + y2 per t ∈ Ry(0) = 0

La funzione f : R2 → R e definita e continua per ogni (t, y) ∈ R2,ma la soluzione

y(t) = tan t

e definita solo per t ∈]− π/2, π/2[.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Dipendenza continua dai dati

Consideriamo il seguente problema:{z ′(t) = f (t, z(t)) + δ(t) per t ∈ Iz(t0) = y0 + δ0.

Definizione

Sia I un insieme limitato. Il problema di Cauchy si dice stabile seper ogni perturbazione (δ0, δ(t)) che soddisfa

|δ0| < ε, maxt∈I

|δ(t)| < ε,

con ε > 0, la soluzione z del problema perturbato verifica:

∃C > 0 : maxt∈I

|y(t)− z(t)| < Cε.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il problema di CauchyStabilita del problema

Dipendenza continua dai dati

Proposizione

Sia I = [0,T ], f : I × R → R continua su I × R e sia L la costantedi Lipschitz di f rispetto a y , cioe vale

|f (t, y1)− f (t, y2)| ≤ L|y1 − y2| ∀(t, y1), (t, y2) ∈ I × R.

Allora il problema di Cauchy (C) e stabile e vale la seguentemaggiorazione

maxt∈I

|y(t)− z(t)| ≤ eLT − 1

Lmaxt∈I

|δ(t)|+ eLT |δ0|.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Il metodo di Eulero esplicito

Consideriamo:

una partizione dell’intervallo I = [t0,T ] in un numero finito diintervalli [tn, tn+1] per n = 0, . . . ,Nh − 1;

hn = tn+1 − tn per n = 0, . . . ,Nh − 1;

h = maxn hn passo di discretizzazione.

In ogni punto tn si cerca un valore un che approssimi il valore diyn = y(tn).

Metodo di Eulero in avanti

un+1 = un + hnf (tn, un) n = 0, 1, . . . ,Nh − 1.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Derivazione del metodo di Eulero in avanti

Il metodo di Eulero in avanti puo essere ottenuto in modi diversi:

sostituendo la derivata prima con il rapporto incrementale inavanti:

y ′(tn) ∼=y(tn+1)− y(tn)

hn;

mediante una formula di quadratura, in tutto l’intervallo[tn, tn+1] si approssima la funzione con il valore che assumenel primo estremo:

y(tn+1) = y(tn) +

∫ tn+1

tn

y ′(τ)dτ

= y(tn) +

∫ tn+1

tn

f (τ, y(τ))dτ

∼= y(tn) + hnf (tn, y(tn)).

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Il metodo di Eulero all’indietro

Metodo di Eulero all’indietro

un+1 = un + hnf (tn+1, un+1) n = 0, 1, . . . ,Nh − 1.

Il metodo di Eulero all’indietro si ricava sostituendo alla derivataprima il rapporto incrementale all’indietro:

y ′(tn+1) ∼=y(tn+1)− y(tn)

hn.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

I metodi di Eulero

Metodi espliciti

Il metodo di Eulero in avanti si dice esplicito perche la soluzioneun+1 dipende solo dal valore precedentemente calcolato.

Metodi impliciti

Il metodo di Eulero all’indietro viene detto implicito perche lasoluzione un+1 compare sia a sinistra che a destra tramite lafunzione f . Quindi ad ogni passo temporale si deve risolvereun’equazione non lineare.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Esercizio

Esercizio

Dato N ∈ R. Si consideri passo costante h = (T − t0)/N.Scrivere una function che realizzi il metodo di Eulero esplicito apasso costante

function [t,u]=Eulero avanti(f,t0,T,y0,N)dove

t, u sono i vettori che contengono i valori di tn e un

rispettivamente per n = 0, . . . ,N.

f e il nome di una function che contiene l’espressione dif (t, y) in funzione di t, y.

t0, T sono gli estremi dell’intervallo I .

y0 e il valore iniziale.

N il numero dei passi da effettuare a passo costante.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Traccia dell’esercizio

Calcolare h.

Calcolare i punti del vettore t con il comando linspace.Ciclo for n=1:N.

Valuta la funzione f in (tn, un).Calcola valore della componente n+1 di u.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Esercizio

Esercizio

Sia N=[20 40 60 80 100 150 200 400].Scrivere un programma di tipo script che per ogni valore di N:

calcola, usando la function dell’esercizio precedente, lasoluzione del seguente problema di Cauchy{

y ′(t) = t − 2y 0 < t < 20y(0) = 0.75;

riporta il grafico della soluzione esatta e della soluzioneapprossimata in una stessa figura

calcola l’errore: err(N) = max1≤n≤N |un − y(tn)|, essendo la

soluzione esatta y(t) = e−2t +1

2t − 1

4.

Riportare in un grafico in scala bilogaritmica l’errore al variare di N.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Traccia dell’esercizio

Assegnare N=[20 40 60 80 100 150 200 400].Per ciascun valore di N (for i=1:length(N)):

Calcolare la soluzione dell’equazione differenziale con ilcomando[t,u]=Eulero avanti(f,t0,T,y0,N).Valutare la soluzione esatta sol nel vettore t.Plottare la soluzione esatta e la soluzione discreta in un unicografico.Calcolare l’errore relativo:E(i)=norm(sol-u,inf)/norm(sol,inf).

Plottare l’errore in scala bilogaritmica con il comando:loglog(N,E).

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Il metodo di EuleroIl metodo di Crank-Nicolson

Il metodo di Crank-Nicolson (o dei trapezi)

Il metodo di Crank-Nicolson o dei trapezi

un+1 = un +hn

2(f (tn, un) + f (tn+1, un+1)).

Il metodo di Crank-Nicolson si ottiene usando la formula diquadratura dei trapezi:

y(tn+1) = y(tn) +

∫ tn+1

tn

f (τ, y(τ))dτ

∼= y(tn) +hn

2(f (tn, y(tn)) + f (tn+1, y(tn+1))).

Il metodo di Crank-Nicolson e implicito

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Analisi della convergenza per il metodo di Eulero esplicito

Consideriamo hn = h per n = 0, . . . ,Nh − 1. Poniamo

en+1 = y(tn+1)− un+1 = y(tn+1)− u∗n+1 + u∗n+1 − un+1

doveu∗n+1 = y(tn) + hf (tn, y(tn))

y(tn+1)− u∗n+1 errore didiscretizzazione;

u∗n+1 − un+1 termine dipropagazione dell’errore.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Errore di discretizzazione

Errore di troncamento locale

τn(h) =y(tn+1)− u∗n+1

h=

y(tn+1)− y(tn)

h− y ′(tn).

Se y e derivabile due volte, per il metodo di Eulero esplicito siottiene, per un opportuno ξn ∈ (tn, tn+1):

y(tn+1)−u∗n+1 = y(tn+1)− y(tn)− hf (tn, y(tn))

= y(tn+1)− y(tn)− hy ′(tn) =h2

2y ′′(ξn).

Quindi τn(h) =h

2y ′′(ξn).

Definizione

Un metodo si dice consistente se limh→0

τn(h) = 0.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Propagazione dell’errore

Per definizione vale:

u∗n+1−un+1 = y(tn) + hf (tn, y(tn))− un − hf (tn, un)

= y(tn)− un + h(f (tn, y(tn))− f (tn, un))

e usando la proprieta di Lipschitzianita della funzione f rispettoalla variabile y si ricava:

|u∗n+1 − un+1| ≤ |y(tn)− un|+ hL|y(tn)− un|= (1 + hL)|y(tn)− un| = (1 + hL)|en|.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Convergenza del metodo di Eulero esplicito

Teorema

Il metodo di Eulero esplicito e convergente del primo ordine inquanto:

max1≤n≤Nh

|y(tn)− un| ≤eL(T−t0) − 1

L

Mh

2.

Dim Mettendo insieme le stime per l’errore di discretizzazione e iltermine di propagazione dell’errore, si ottiene:

|en+1| ≤Mh2

2+ (1 + hL)|en| essendo M = max

t0≤t≤T|f ′(t, y(t))|.

Con un po’ di calcoli si arriva alla maggiorazione finale:

|en+1| ≤eL(tn+1−t0) − 1

L

Mh

2.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Convergenza del metodo di Eulero implicito

Esercizio

Sia N=[20 40 60 80 100 150 200 400].Scrivere un programma di tipo script che per ogni valore di N:

calcola, mediante il metodo di Eulero implicito (usare lafunction euleroimp.m), la soluzione del seguente problema diCauchy {

y ′(t) = t − 2y 0 < t < 20y(0) = 0.75;

riporta il grafico della soluzione esatta e della soluzioneapprossimata in una stessa figura

calcola l’errore: err(N) = max1≤n≤N |un − y(tn)|, essendo la

soluzione esatta y(t) = e−2t +1

2t − 1

4.

Riportare in un grafico in scala bilogaritmica l’errore al variare di N.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Convergenza del metodo di Crank-Nicolson

Esercizio

Sia N=[20 40 60 80 100 150 200 400].Scrivere un programma di tipo script che per ogni valore di N:

calcola, mediante il metodo di Crank-Nicolson, (usare lafunction cranknic.m) la soluzione del seguente problema diCauchy {

y ′(t) = t − 2y 0 < t < 20y(0) = 0.75;

riporta il grafico della soluzione esatta e della soluzioneapprossimata in una stessa figura

calcola l’errore: err(N) = max1≤n≤N |un − y(tn)|, essendo la

soluzione esatta y(t) = e−2t +1

2t − 1

4.

Riportare in un grafico in scala bilogaritmica l’errore al variare di N.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Regione di assoluta stabilita

Problema modello

(M)

{y ′(t) = λy(t) t > 0 essendo λy(0) = 1, un numero reale negativo.

La soluzione e y(t) = eλt , quindi limt→∞ y(t) = 0 .

Definizione

Sia un la soluzione ottenuta discretizzando il problema (M) con unmetodo numerico. L’insieme dei valori di hλ per cui

limn→∞ un = 0 si chiama regione di assoluta stabilita delmetodo numerico.Se la regione di assoluta stabilita contiene tutta la semiretta deinumeri reali negativi allora il metodo si dice incondizionatamentestabile.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Regione di assoluta stabilita del metodo di Eulero esplicito

Applichiamo il metodo di Eulero esplicito al problema (M):

un+1 = un + hλun ⇒ un+1 = (1 + hλ)un = (1 + hλ)n+1.

Per avere che limn→∞ un = 0 deve essere

|1 + hλ| < 1 ossia 0 < h < 2|λ| .

Il metodo di Eulero esplicito si dice condizionatamenteassolutamente stabile.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Regione di assoluta stabilita del metodo di Eulero implicito

Applichiamo il metodo di Eulero implicito al problema (M):

un+1 = un + hλun+1 ⇒ un+1 =1

1− hλun =

(1

1− hλ

)n+1

.

Poiche λ < 0 si ha 0 < 1/(1− hλ) < 1 per ogni h .

Quindi il metodo di Eulero implicito si dice incondizionatamenteassolutamente stabile.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

Convergenza e stima dell’erroreStabilita assoluta

Regione di assoluta stabilita’

Esercizio

Risolvere il problema modello

y ′ = λy , t ∈ [0, 20], y(0) = 1

per λ = −1,−5,−10, usando le function eulero avanti,euleroimp e cranknic, conN = 10, 20, 40, 50, 60, 90, 100, 110, 200, 400.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Risolutori di equazioni differenziali ordinarie

Problemi non stiff

ode45 Metodo di Runge-Kutta (4,5).ode23 Metodo di Runge-Kutta (2,3).ode113 Metodo di Adams-Bashforth-Moulton PECE.

Problemi stiff

ode15s Metodo multistep basato su una formula di tipo BDF.ode23s Metodo ad un passo.

Altre opzioni

odeset Crea o modifica le OPTIONS.odeplot Grafico della soluzione.odephas2 Grafico del piano delle fasi in 2D.odephas3 Grafico del piano delle fasi in 3D.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Come si risolve una equazione differenziale usando isolutori di Matlab

Scrivere una function che accetta due argomenti t e y erestituisce il valore della funzione

function dy=F(t,y)dy=(1-t*y-t^2*y^2)/t^2;

F=inline(’1-t*y-t^2*y^2)/t^2’,’t’,’y’);

Applicare un solutore mediante il comando[t,u] = ode23 (’F’, [t0 T], y0)

Usare il comando plot per vedere i risultati:plot(t,u)

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Come usare i solutori di ODE in Matlab6

Il comando piu semplice per risolvere un’equazione differenziale e:

[t,u] = solver (odefun,tspan, y0)

Inputodefun function in cui si valuta f (t, y)tspan vettore contenente gli estremi di integrazioney0 dato iniziale (vettore colonna)blaOutputt vettore colonna degli istanti t in cui viene

calcolata la soluzione approssimatay array contenente la soluzione, le righe sono le

componenti di y ad un certo istante t.

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Argomenti addizionali

[t,u] = solver (odefun,tspan, y0,options,p1,p2,...)

options struttura che contiene i parametri per cambiare leproprieta di default del solutore

p1,p2,... parametri che si possono passare alla odefun.

Per definire le options si usa il comando odeset.

>> odeset

fornisce i valori di default e il nome delle varibili che si possonodefinire:

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

odeset

Variabile default descrizioneRelTol 1.e-3 tolleranza per l’errore relativoAbsTol 1.e-6 tolleranza per l’errore assolutoMaxStep |tspan|/10 valore massimo per il passoInitialStep calcolato passo iniziale sceltoOutputFcn Function controlla l’outputOutputFcn odeplot grafico in funzione di tOutputFcn odephas2 plot del piano delle fasiOutputFcn odephas3 plot del piano delle fasi in 3DOutputSel vettore di interi specifica le componenti del

vettore soluzione chesi vogliono come output

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Sistema di equazioni differenziali

Problema

Siano a, b, c e d numeri reali positivi. Cercare y1(t) e y2(t) taliche risolvano nell’intervallo [0, 7] il seguente sistema di equazionidifferenziali ordinarie:

y ′1 = (a− by2)y1

y ′2 = (−c + dy1)y2

y1 = αy2 = β.

Porre: a = 1, b = 1, c = 2, d = 3α = 0.5, 0.7, 1.4, 2.6β = 1

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Come si risolve il sistema

Scrivere una function che accetta due argomenti t e y erestituisce il valore della funzione a valori vettoriali

function dy=lotkavolterra(t,y)a=1; b=1; c=2; d=3;dy=[(a-b*y(2))*y(1); (-c+d*y(1))*y(2)];

Applicare un solutore mediante il comando[t,u] = ode45 (’lotkavolterra’, [0 7], [α;β])

Usare il comando plot per vedere i risultati:plot(t,u) oppure plot(u(:,1),u(:,2))

Per ottenere il piano delle fasi si puo procedere come segue:options=odeset(’OutputFcn’,’odephas2’)[t,u]=ode45(’lotkavolterra’,[0 7],[α;β],options)

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Equazione differenziale di ordine n

Problema

Sia f : I × Rn → R. Consideriamo l’equazione differenziale:y (n)(t) = f (t, y(t), y ′(t), . . . , y (n−1)(t)) t ∈ Iy(t0) = α1

y ′(t0) = α2

. . .y (n−1)(t0) = αn

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Equazione differenziale di ordine n

Il problema di Cauchy per l’equazione differenziale di ordine n eequivalente ad un sistema differenziale del primo ordine.Si pone

y1(t) = y(t), y2(t) = y ′(t), . . . , yn(t) = y (n−1)(t).

Osserviamo che

y2(t) = y ′(t) = y ′1(t),

. . .

yn(t) = y (n−1)(t) = y ′n−1(t).

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Quindi si ottiene il seguente sistema di equazioni differenziali

y ′1(t) = y2(t)

y ′2(t) = y3(t)

. . .y ′n(t) = f (t, y1(t), y2(t), . . . , yn(t))

y1(t0) = α1

y2(t0) = α2

. . .yn(t0) = αn

Lucia Gastaldi Equazioni differenziali ordinarie

Il problema di CauchyDiscretizzazione di equazioni differenziali ordinarie

Analisi del metodoRisoluzione di equazioni differenziali con Matlab

SolutoriSistema di equazioni differenziali

Esempio: equazione di van der Pol

y ′′ − µ(1− y2)y ′ + y = 0 dove µ > 0.

L’equazione si riduce al seguente sistema:{y ′1(t) = y2(t)

y ′2(t) = µ(1− y2

1 )y2 − y1

Posto µ = 1, si costruisce la function che definisce il sistema:

function dy = vdp(t,y)dy = [y(2); (1-y(1)^2)*y(2)-y(1)];

Porre µ = 500 e risolvere con ode45.[t,u]=ode45(’vdp’,[0 20],[2;0])Usare ode15s per risolvere l’equazione nell’intervallo [0, 3000].[t,u]=ode15s(’vdp’,[0 3000],[2;0]);

Lucia Gastaldi Equazioni differenziali ordinarie