Queste note sono basate sugli appunti fatti con Gianmarco Manzini negli anni 1995-2005

Equazioni Differenziali Ordinarie

Appunti di calcolo numerico

Autore/Autrice
Affiliazione

Enrico Bertolazzi

University of Trento, Department of Industrial Engineering

In matematica, un’equazione differenziale ordinaria (ODE) è un tipo di equazione differenziale che coinvolge una o più funzioni di una singola variabile indipendente e le loro derivate. Il termine ordinaria distingue queste equazioni dalle equazioni differenziali alle derivate parziali, che dipendono da più variabili indipendenti.

Le ODE sono strumenti matematici potenti, ampiamente utilizzati per modellare e analizzare sistemi dinamici in vari campi, tra cui fisica, economia, biologia e scienze sociali. Figure storiche come Newton, Euler, Leibniz, la famiglia Bernoulli, Riccati, Clairaut e d’Alembert hanno esplorato e applicato le ODE.

Un esempio noto di ODE è la seconda legge del moto di Newton:

\mathcal{F}(z(t)) = m z^{\prime\prime}(t)

dove \mathcal{F} rappresenta una forza applicata come funzione della posizione z(t) e m è la massa. Questa equazione descrive come l’accelerazione di un oggetto sia legata alla forza applicata, un principio fondamentale della meccanica classica.

Introduzione ai Problemi a Valore Iniziale

Prima di esplorare i metodi di soluzione numerica, è utile rivedere alcune definizioni chiave e proprietà delle equazioni differenziali ordinarie (ODE) e dei problemi a valore iniziale (IVP).

Equazione Differenziale Ordinaria

Un’equazione differenziale ordinaria (ODE) è un’equazione che coinvolge una funzione z(t) definita su un intervallo I \subset \mathbb{R}, con valori nei numeri reali o complessi, oppure negli spazi vettoriali \mathbb{R}^d o \mathbb{C}^d. La forma generale di un’ODE è:

F\left(t, z(t), z'(t), z''(t), \dots, z^{(n)}(t)\right) = 0

L’ordine dell’equazione differenziale è determinato dalla derivata di ordine più alto z^{(n)}(t) presente.

Se z(t) assume valori in uno spazio di dimensione d > 1, l’equazione viene chiamata sistema di equazioni differenziali.

Equazione Differenziale Ordinaria Esplicita

Un’equazione differenziale esplicita del primo ordine ha la forma:

z'(t) = f\left(t, z(t)\right)

Per un’equazione di ordine superiore (ordine n), l’equazione si dice esplicita se può essere scritta come:

z^{(n)}(t) = F\left(t, z(t), z'(t), z''(t), \dots, z^{(n-1)}(t)\right)

Equazione Differenziale Ordinaria Autonoma

Un’equazione differenziale della forma precedente è chiamata autonoma se il termine a destra f non dipende esplicitamente da t, il che significa:

z'(t) = f\left(z(t)\right)

Riduzione a Sistemi di Equazioni Differenziali del Primo Ordine

Ogni equazione differenziale di ordine superiore può essere riscritta come un sistema di equazioni del primo ordine. Se l’equazione originale è esplicita, anche il sistema risultante sarà esplicito.

Per trasformare un’equazione differenziale di ordine superiore in un sistema di equazioni del primo ordine, introduciamo variabili ausiliarie per ciascuna derivata di z(t):

z_0(t) = z(t), \quad z_1(t) = z'(t), \quad \dots, \quad z_{n-1}(t) = z^{(n-1)}(t)

Questo ci consente di riscrivere l’equazione differenziale di ordine n come un sistema di n equazioni del primo ordine:

\begin{Bmatrix} z'_0(t) - z_1(t) \\[0.5em] z'_1(t) - z_2(t) \\[0.5em] \vdots \\[0.5em] z'_{n-2}(t) - z_{n-1}(t) \\[0.5em] F\left(t, z_0(t), z_1(t), \dots, z_{n-1}(t), z'_{n-1}(t)\right) \end{Bmatrix} = \begin{Bmatrix} 0 \\[0.5em] 0 \\[0.5em] \vdots \\[0.5em] 0 \\[0.5em] 0 \end{Bmatrix}

Nel caso di un’equazione esplicita, questo sistema diventa:

\begin{Bmatrix} z'_0(t) \\[0.5em] z'_1(t) \\[0.5em] \vdots \\[0.5em] z'_{n-2}(t) \\[0.5em] z'_{n-1}(t) \end{Bmatrix} = \begin{Bmatrix} z_1(t) \\[0.5em] z_2(t) \\[0.5em] \vdots \\[0.5em] z_{n-1}(t) \\[0.5em] F\left(t, z_0(t), z_1(t), \dots, z_{n-1}(t)\right) \end{Bmatrix}

Problema a Valore Iniziale (IVP)

Il problema a valore iniziale (IVP), noto anche come problema di Cauchy, si presenta quando alle ODE vengono fornite informazioni aggiuntive sotto forma di una condizione iniziale. Questa condizione specifica il valore della funzione z in un dato punto t_0 all’interno del dominio e aiuta a definire una soluzione unica per l’equazione differenziale.

Data una coppia iniziale (t_0, z_0) \in \mathbb{R} \times \mathbb{R}^d, consideriamo f(t, z(t)) come una funzione con valori in \mathbb{R}^d, definita in un intorno I \times U \subset \mathbb{R} \times \mathbb{R}^d attorno al punto iniziale. Il problema a valore iniziale consiste nel trovare una funzione z(t) tale che:

\begin{cases} z'(t) = f(t, z(t)) \\ z(t_0) = z_0 \end{cases}

Soluzione Locale

Una soluzione locale del problema a valore iniziale (IVP) è una funzione z(t) continuamente derivabile che soddisfa la condizione z(t_0) = z_0. Questa soluzione esiste all’interno di un certo intervallo J attorno a t_0, dove sia z(t) che f(t, z(t)) sono ben definiti.

Equazione Differenziale Lineare

Un’equazione differenziale è considerata lineare se può essere espressa come una combinazione lineare delle derivate di z(t):

z^{(n)}(t) = \sum_{i=1}^{n-1} a_i(t) z^{(i)}(t) + r(t)

dove a_i(t) e r(t) sono funzioni continue di t. Se r(t) = 0, l’equazione è chiamata omogenea; in caso contrario, è definita non omogenea.

Buona Posizione per i Problemi a Valore Iniziale

Un problema matematico si dice ben posto se soddisfa le seguenti condizioni di Hadamard:

  • Esiste una soluzione.
  • La soluzione è unica.
  • La soluzione dipende continuamente dai dati iniziali.

Per i problemi a valore iniziale (IVP), la terza condizione è spesso sostituita da un criterio quantitativo noto come continuità di Lipschitz.

Condizione di Lipschitz

La funzione f(t, z) soddisfa una condizione di Lipschitz uniforme nel suo dominio D = I \times \Omega \subset \mathbb{R} \times \mathbb{R}^d rispetto a z se esiste una costante positiva L tale che:

\forall t \in I,\quad \forall x,z \in \Omega: |f(t,x)-f(t,z)| \leq L |x-z|

Se questa condizione vale per sottoinsiemi compatti di D, si parla di condizione di Lipschitz locale.

Funzione Localmente Lipschitziana

Una funzione f(x) è localmente Lipschitziana se esiste un \Delta > 0 e una costante L tale che:

|f(x)-f(x_0)| \leq L |x-x_0|,\quad |x-x_0| < \Delta

Esempio di funzione non Lipschitziana

La funzione

f(x) = \mathrm{sign}(x)\sqrt{|x|}

non è Lipschitziana, infatti se lo fosse allora esiste L tale che:

\begin{aligned} |\sqrt{x}-\sqrt{0}| &\leq L|x-0|,\qquad \textrm{for $x>0$} \\ |\sqrt{x}| &\leq L|x|=L|\sqrt{x}|\,|\sqrt{x}| \\ 1 &\leq L|\sqrt{x}|,\qquad \textrm{for $x>0$} \end{aligned}

ma per ogni L basta scegliere x abbastanza piccolo per violare 1\leq L|\sqrt{x}|.

Osservazione

Se f(x) è (localmente) Lipschitziana allora f(x) è continua. Infatti f(x) è continua in x_0 se per ogni \epsilon>0 esiste \delta>0 tale che

|f(x)-f(x_0)| \leq \epsilon, \qquad \forall |x-x_0| \leq \delta

ma f(x) è Lipschitziana quindi

|f(x)-f(x_0)| \leq L |x-x_0|, \qquad |x-x_0|\leq \Delta \tag{1}

dato \epsilon>0 scegliendo

\delta \leq \min\left( \dfrac{\epsilon}{L},\Delta \right)

(\delta\leq \Delta serve per avere la diseguaglianza Equazione 1) allora vale

|f(x)-f(x_0)| \leq L |x-x_0| \leq L \delta = \min\left( \epsilon,L\Delta \right) \leq \epsilon

Osservazione

Se f(x)\in C^1 allora è Lipschitziana (in un intervallo chiuso). Usando la espansione di Taylor

f(x) = f(x_0)+f'(z)(x-x_0), \qquad x\in I(x_0,x)

da cui

|f(x)-f(x_0)| \leq |f'(z)|\,|x-x_0| \leq \sup_{w\in[a,b]}|f'(w)|\,|x-x_0| \leq L|x-x_0|

dove L=\sup_{w\in[a,b]}|f'(w)| e la diseguaglianza vale per ogni x,x_0\in[a,b].

Teoremi Fondamentali

Teorema di Esistenza di Peano

Il teorema di Peano garantisce l’esistenza almeno una soluzione per un IVP se la funzione f(t,z) è continua in un intorno del punto iniziale (t_0,z_0).

Enunciato del Teorema

Sia f(t,z) una funzione continua definita sull’insieme chiuso:

\bar{D} = \left\lbrace (t,z)\in\mathbb{R}\times\mathbb{R}^d ~|~ |t-t_0|\leq\alpha,\ |z-z_0|\leq\beta \right\rbrace

con \alpha,\beta > 0. Allora esiste almeno una soluzione z(t) continua nell’intervallo I=[t_0-T,t_0+T], dove T=\min(\alpha,\frac{\beta}{M}) e M=\max_{(t,z)\in D}|f(t,z)|.

Esempio di non unicità di Peano

la seguente ODE

\begin{cases} y' = f(x,y)=\sqrt{|y|}, & \\ y(0) = 0, & \end{cases}

ha due soluzioni

    1. y(t) = 0
    1. y(t) = \dfrac{t^2}{4} \mathrm{sign}(t)

la prima soluzione si verifica immediatamente. Per la seconda basta osservare che

\begin{aligned} \dfrac{\mathrm{d}}{\mathrm{d}t} \dfrac{t^2}{4}\mathrm{sign}(t) &= \dfrac{\mathrm{d}}{\mathrm{d}t} \begin{cases} \dfrac{t^2}{4} & t>0 \\ -\dfrac{t^2}{4} & t\leq 0 \end{cases} \\ &= \begin{cases} \dfrac{t}{2} & t>0 \\ -\dfrac{t}{2} & t\leq 0 \end{cases} \\ &= \dfrac{|t|}{2} \end{aligned}

e

\sqrt{|y(t)|} = \sqrt{\left|\dfrac{t^2}{4} \mathrm{sign}(t)\right|} = \sqrt{\dfrac{t^2}{4}} = \dfrac{|t|}{2}

e quindi è una seconda soluzione della ODE.

Teorema di Picard-Lindelöf

Il teorema afferma che se f(t,z) soddisfa la condizione Lipschitz rispetto a z, allora esiste una soluzione unica locale per l’IVP.

Teorema 1 (Esistenza e Unicità: Picard-Lindelöf) Sia f(t, z) continua nel cilindro:

D = \{ (t, z) \in \mathbb{R} \times \mathbb{R}^d ~\big|~ |t - t_0| \leq a, |z - z_0| \leq b \}

Inoltre, supponiamo che f sia limitata, con una costante

M = \max_{(t, z) \in D} |f(t, z)|

e soddisfi la condizione di Lipschitz con costante L su D. Allora, il problema a valore iniziale:

\begin{cases} z'(t) = f(t, z(t)) \\ z(t_0) = z_0 \end{cases}

ha una soluzione unica nell’intervallo I = [t_0 - T, t_0 + T], dove:

T = \min \left( a, \dfrac{b}{M} \right)