Metodi della valutazione ambientale. Metodi di valutazione (in gen.)
Metodi numerici per la risoluzione di equazioni differenziali …unina.stidue.net/Calcolo Numerico...
Transcript of Metodi numerici per la risoluzione di equazioni differenziali …unina.stidue.net/Calcolo Numerico...
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