Metodo di eulero esplicito, implicito ed heun
Ciao a tutti, devo dare l'esame di calcolo numerico e ho dei dubbi sulle equazioni differenziali di primo ordine. La professoressa ci ha semplicemente elencato delle formule ma non sono sicuro capace di applicarle. Un esercizio molto ricorrente è questo:
Calcolare un'approssimazione della soluzione del problema
\[y'(x) = 1 - 2xy \\\\
y(0)=0\]
nel punto x = 0.2 utilizzando il metodo di Eulero implicito, esplicito, metodi di Heun con passo h = 0.1
Io so le seguenti formule:
Eulero esplicito \[y(n+1) = y_n + hf(x_n,y_n)\]
Eulero implicito \[y(n+1) = y_n + hf(x(n+1),y(n+1))\]
Heun \[y(n+1)(0) = y_n + hf\]
e \[y(n+1) = y_n +h/2(f(x_n,y_n) + f(x_n+h,y(n+1)(0))\]
Sapete spiegarmi i passaggi per applicare tali formule?
Grazie!
Calcolare un'approssimazione della soluzione del problema
\[y'(x) = 1 - 2xy \\\\
y(0)=0\]
nel punto x = 0.2 utilizzando il metodo di Eulero implicito, esplicito, metodi di Heun con passo h = 0.1
Io so le seguenti formule:
Eulero esplicito \[y(n+1) = y_n + hf(x_n,y_n)\]
Eulero implicito \[y(n+1) = y_n + hf(x(n+1),y(n+1))\]
Heun \[y(n+1)(0) = y_n + hf\]
e \[y(n+1) = y_n +h/2(f(x_n,y_n) + f(x_n+h,y(n+1)(0))\]
Sapete spiegarmi i passaggi per applicare tali formule?
Grazie!
Risposte
Dovresti usare maggiore uniformità nella notazione se usi \(y_n\) dovresti usare \(y_{n+1}\) invece di \(y(n+1)\). Quella formula per Heun in realtà mi sembra sbagliata e scritta male. Devo dire però che cosa viene chiamato con il nome di Heun è spesso difficile da determinarlo. Io immagino che tu intenda lo stesso inteso in questa pagine di Wiki.
Nel tuo caso tu hai che \(f(x.y) = 1-2xy\), \(\displaystyle h = \frac{1}{10}\) e \(x_0 = y_0 = 0\). Inoltre \(\displaystyle x_n = x_0 + nh = \frac{n}{10}\) Pertanto:
Eulero implicito:
\begin{align} y_{n+1} &= y_n + h(1 - 2x_ny_n) \\
&= y_n + \frac{1}{10} - \frac{ny_n}{50} \\
&= \frac{50 - n}{50}y_n + \frac{1}{10}
\end{align}
A questo punto calcoli ogni singolo valore di \(y_{i}\) usando la formula ricorsiva oppure risolvi la ricorsione e scrivi tutto in maniera esplicita.
Seppur immagino non sia troppo difficile trovarne una forma esplicita usa la ricorsione come immagino voglia la professoressa.
Con \(\displaystyle h = 0,1 \) diventa
\begin{align} x_0 &= 0 & y_0 &= 0 \\
x_1 &= \frac{1}{10} & y_1 &= \frac{50 - 0}{50}y_0 + \frac{1}{10} = \frac{1}{10}\\
x_2 &= \frac{2}{10} & y_2 &= \frac{50 - 1}{50}y_1 + \frac{1}{10} = 0.198 \end{align}
Eulero implicito:
\begin{align} y_{n+1} &= y_n + h(1 - 2x_{n+1}y_{n+1}) \\
y_{n+1} &= y_n + \frac{1}{10} - \frac{(n+1)y_{n+1}}{50} \\
\frac{51 + n}{50} y_{n+1} &= y_n + \frac{1}{10} \\
y_{n+1} &= \frac{50}{51 + n}y_n + \frac{5}{51 + n}
\end{align}
NOTA BENE: l'algoritmo del computer, in genere, non risolve simbolicamente l'equazione e si usano metodi per punto fisso per trovare la soluzione. Seguendo il procedimento del punto 1 dovresti essere in grado di andare avanti.
Heun:
Questo è un po' più complesso dato il doppio passo. Tanto vale fare il doppio passo senza mettersi a semplificare tutto.
Nel tuo caso tu hai che \(f(x.y) = 1-2xy\), \(\displaystyle h = \frac{1}{10}\) e \(x_0 = y_0 = 0\). Inoltre \(\displaystyle x_n = x_0 + nh = \frac{n}{10}\) Pertanto:
Eulero implicito:
\begin{align} y_{n+1} &= y_n + h(1 - 2x_ny_n) \\
&= y_n + \frac{1}{10} - \frac{ny_n}{50} \\
&= \frac{50 - n}{50}y_n + \frac{1}{10}
\end{align}
A questo punto calcoli ogni singolo valore di \(y_{i}\) usando la formula ricorsiva oppure risolvi la ricorsione e scrivi tutto in maniera esplicita.
Seppur immagino non sia troppo difficile trovarne una forma esplicita usa la ricorsione come immagino voglia la professoressa.
Con \(\displaystyle h = 0,1 \) diventa
\begin{align} x_0 &= 0 & y_0 &= 0 \\
x_1 &= \frac{1}{10} & y_1 &= \frac{50 - 0}{50}y_0 + \frac{1}{10} = \frac{1}{10}\\
x_2 &= \frac{2}{10} & y_2 &= \frac{50 - 1}{50}y_1 + \frac{1}{10} = 0.198 \end{align}
Eulero implicito:
\begin{align} y_{n+1} &= y_n + h(1 - 2x_{n+1}y_{n+1}) \\
y_{n+1} &= y_n + \frac{1}{10} - \frac{(n+1)y_{n+1}}{50} \\
\frac{51 + n}{50} y_{n+1} &= y_n + \frac{1}{10} \\
y_{n+1} &= \frac{50}{51 + n}y_n + \frac{5}{51 + n}
\end{align}
NOTA BENE: l'algoritmo del computer, in genere, non risolve simbolicamente l'equazione e si usano metodi per punto fisso per trovare la soluzione. Seguendo il procedimento del punto 1 dovresti essere in grado di andare avanti.
Heun:
Questo è un po' più complesso dato il doppio passo. Tanto vale fare il doppio passo senza mettersi a semplificare tutto.