Metodo di Heun
Buonasera. Devo svolgere quest'esercizio di Calcolo Numerico ma ho bisogno di una mano. Ringrazio chiunque possa aiutarmi.
CONSEGNA: 'Si consideri il problema differenziale $y''-(y')^2+y+(cos(x))^2=0, x>0$, le cui condizioni iniziali sono $y(0)=0, y'(0)=1$. Approssimare $y(1)$ con il metodo di Heun con passo $h=0.5$.'
Io ho trasformato il problema di Cauchy proposto in un sistema differenziale di 1° ordine, le cui 2 equazioni sono $y'=z$ e $z'=-(cos(x))^2-y+z^2, x>0$, e le cui condizioni iniziali sono $y(0)=0, z(0)=1$. Ho provato più e più volte, ma non sono riuscito ad utilizzare il metodo di Heun per la risoluzione di questo esercizio.
CONSEGNA: 'Si consideri il problema differenziale $y''-(y')^2+y+(cos(x))^2=0, x>0$, le cui condizioni iniziali sono $y(0)=0, y'(0)=1$. Approssimare $y(1)$ con il metodo di Heun con passo $h=0.5$.'
Io ho trasformato il problema di Cauchy proposto in un sistema differenziale di 1° ordine, le cui 2 equazioni sono $y'=z$ e $z'=-(cos(x))^2-y+z^2, x>0$, e le cui condizioni iniziali sono $y(0)=0, z(0)=1$. Ho provato più e più volte, ma non sono riuscito ad utilizzare il metodo di Heun per la risoluzione di questo esercizio.

Risposte
Non capisco quale possa essere il tuo problema. Insomma Heun in versione multidimensionale lo hai capito? Devi implementare la cosa in qualche linguaggio (MATLAB per esempio) oppure farlo a mano?
L'equazione differenziale è
\(\displaystyle y'' = \bigl(y'\bigr)^2 - y - \cos^2 x \)
Ponendo \(\displaystyle y' = z \) si ricava.
\(\displaystyle \begin{cases} y' &= z \\ z' &= z^2 - y - \cos^2 x \end{cases} \)
con le condizioni iniziali
\(\displaystyle \begin{cases} y(0) &= 0 \\ z(0) &= 1 \end{cases} \)
Ora, il termine metodo di Heun può indicare più metodi simili
io suppongo tu intenda il seguente:
\(\displaystyle \mathbf{w}_{k+1} = \mathbf{w}_{k} + h\Bigl(\frac14 \mathbf{k}_1 + \frac34 \mathbf{k}_2\Bigr) \)
con
\(\displaystyle \mathbf{k}_1 = \mathbf{f}(x, \mathbf{w}_{k}) \)
\(\displaystyle \mathbf{k}_2 = \mathbf{f}\Bigl(x+ \frac23h, \mathbf{w}_{k} + \frac23h\mathbf{k}_1\Bigr) \)
Nel tuo caso \(\displaystyle \mathbf{f}\bigl(x, (y, z)\bigr) = (z, z^2 - y - \cos^2 x) \).
L'equazione differenziale è
\(\displaystyle y'' = \bigl(y'\bigr)^2 - y - \cos^2 x \)
Ponendo \(\displaystyle y' = z \) si ricava.
\(\displaystyle \begin{cases} y' &= z \\ z' &= z^2 - y - \cos^2 x \end{cases} \)
con le condizioni iniziali
\(\displaystyle \begin{cases} y(0) &= 0 \\ z(0) &= 1 \end{cases} \)
Ora, il termine metodo di Heun può indicare più metodi simili

\(\displaystyle \mathbf{w}_{k+1} = \mathbf{w}_{k} + h\Bigl(\frac14 \mathbf{k}_1 + \frac34 \mathbf{k}_2\Bigr) \)
con
\(\displaystyle \mathbf{k}_1 = \mathbf{f}(x, \mathbf{w}_{k}) \)
\(\displaystyle \mathbf{k}_2 = \mathbf{f}\Bigl(x+ \frac23h, \mathbf{w}_{k} + \frac23h\mathbf{k}_1\Bigr) \)
Nel tuo caso \(\displaystyle \mathbf{f}\bigl(x, (y, z)\bigr) = (z, z^2 - y - \cos^2 x) \).
Grazie per avermi risposto!
Devo farlo a mano. In genere, quando usiamo il metodo di Heun, utilizziamo l'algoritmo $y_(i+1)=y_i+h/2*(k_1+k_2)$ con $k_1=f(x_i, y_i)$, $k_2=f(x_(i+1), y_i+h*k_1)$. Da come parli però ('Heun in versione multidimensionale') mi pare di capire che questo sia un caso diverso. In questo caso, c'è pure $z$, infatti. Ho trovato quest'altro algoritmo sul libro, che dovrebbe essere quello del metodo di Heun 'per un sistema di equazioni differenziali'; è:
$y_(i+1)=y_i+h/2*(f(x_i, y_i, z_i)+f(x_(i+1), y_i+h*f(x_i, y_i, z_i), z_i+h*g(x_i, y_i, z_i)))$
$z_(i+1)=z_i+h/2*(g(x_i, y_i, z_i)+g(x_(i+1), y_i+h*f(x_i, y_i, z_i), z_i+h*g(x_i, y_i, z_i)))$
Usandolo ottengo $y_1=0.5, z_1=0.932462211, y_2=0.916147933$; quest'ultimo valore dovrebbe essere, secondo me, l'approssimazione di $y(1)$ con il metodo di Heun con passo $h=0.5$...
Che dici?

Devo farlo a mano. In genere, quando usiamo il metodo di Heun, utilizziamo l'algoritmo $y_(i+1)=y_i+h/2*(k_1+k_2)$ con $k_1=f(x_i, y_i)$, $k_2=f(x_(i+1), y_i+h*k_1)$. Da come parli però ('Heun in versione multidimensionale') mi pare di capire che questo sia un caso diverso. In questo caso, c'è pure $z$, infatti. Ho trovato quest'altro algoritmo sul libro, che dovrebbe essere quello del metodo di Heun 'per un sistema di equazioni differenziali'; è:
$y_(i+1)=y_i+h/2*(f(x_i, y_i, z_i)+f(x_(i+1), y_i+h*f(x_i, y_i, z_i), z_i+h*g(x_i, y_i, z_i)))$
$z_(i+1)=z_i+h/2*(g(x_i, y_i, z_i)+g(x_(i+1), y_i+h*f(x_i, y_i, z_i), z_i+h*g(x_i, y_i, z_i)))$
Usandolo ottengo $y_1=0.5, z_1=0.932462211, y_2=0.916147933$; quest'ultimo valore dovrebbe essere, secondo me, l'approssimazione di $y(1)$ con il metodo di Heun con passo $h=0.5$...
Che dici?

Ok, ho chiamato Heun un metodo diverso, seppur analogo.
La multidimensionalità dipende solamente dal fatto che \(y\) è un vettore bidimensionale e anche \(f\) ha immagine in \(\mathbb{R}^2\). Per il resto è uguale nel senso che la somma di vettori la dovresti saper fare.
Comunque devi tenere conto che devi fare due passi se \(h = 0.5\) e devi arrivare a \(1\).
La multidimensionalità dipende solamente dal fatto che \(y\) è un vettore bidimensionale e anche \(f\) ha immagine in \(\mathbb{R}^2\). Per il resto è uguale nel senso che la somma di vettori la dovresti saper fare.
Comunque devi tenere conto che devi fare due passi se \(h = 0.5\) e devi arrivare a \(1\).
OK, ho capito. Sì, ho tenuto conto del passo $h=0.5$. Infatti ho preso $y_2$ come risultato. Allora ho fatto bene... Grazie.
