Esercizio 1

Approssimiamo la funzione

f (x) = 3 · exp (−ix) + 8 · exp (+7ix) + sin (x)

che è ovviamente periodica, ricordando che

sin (x) = \frac{(exp (ix)) − exp (−ix))}{2i}.

Risultano nulli i coefficienti di Fourier il cui indice è j < −1 o j > 7, quindi una buona scelta è N = 16, in quanto potenza di 2 e tutti i coefficienti interessanti hanno indice nell’intervallo [−⌊N/2⌋ + 1, ⌊N/2⌋]. Così salviamo in fft example.m

N=16;
f=inline ( ’ exp(− i ∗x )+exp (7∗ i ∗x )+s i n ( x ) ’ ) ;

Y=fft_coeffs ( f , N ) ;

x = ( 0 : 0 . 0 1 : 2 ∗ p i ) ’ ;

fx=f ( x ) ; tx=fft_eval ( Y , x ) ;
err=norm ( fx−tx , inf ) ;

f p r i n t f ( ’ \n \ t [ e r r , i n f norm ] : %2.2 e \n ’ , err )

Esercizio 1

Abbiamo come risultato

>> fft_example
err =

7.5078 e−15

>>

1. Cosa succede se in fft example.m si usa N = 13 invece di N = 16? Darne una spiegazione, controllando i valori assunti dal vettore Y.

2. Modificare fft example.m per studiare l’approssimazione trigonometrica complessa della funzione f (x) = |x − π| per N = 4, 8, 16, 32, 64. Come decresce l’errore? Eseguire sulla stessa figura il grafico di f in [0, 2π] come pure della sua approssimazione con polinomi trigonometrici complessi per N = 16.

Nota: in caso di warning, utilizzare solo la parte reale del vettore tx, tramite il comando tx=real(tx); Usando la formula composta dei trapezi e di Cavalieri-Simpson, con n = 2, 4, 8, …, 512 suddivisioni equispaziate dell’intervallo di integrazione, calcolare

▶ ∫_{0}^{π} exp (x) · cos (4x)dx = \frac{exp (π)−1}{17};

▶ ∫_{0}^{1} x^{5/2}dx = \frac{2}{7};

▶ ∫_{−π}^{π} exp (cos (x))dx = 7.95492652101284;

▶ ∫_{0}^{π/4} exp (cos (x))dx = 1.93973485062365;

▶ ∫_{0}^{1} x^{1/2}dx = \frac{2}{3}. Descrivere come decresce l’errore in scala semilogaritmica e quale sia l’andamento del rapporto E_{n}(f )/E_{n+1}(f ), dove E_{n} = |I (f ) − I_{n}(f )| con I (f ) integrale esatto e I_{n}(f ) valore fornito dalla formula di quadratura.

Usando una opportuna formula gaussiana, con n = 10, 20, 30 punti, calcolare

▶ ∫_{0}^{π} exp (x) · cos (4x)dx = \frac{exp (π)−1}{17};

▶ ∫_{0}^{1} x^{5/2}dx = \frac{2}{7};

▶ ∫_{−π}^{π} exp (cos (x))dx = 7.95492652101284;

▶ ∫_{0}^{π/4} exp (cos (x))dx = 1.93973485062365;

▶ ∫_{0}^{1} x^{1/2}dx = \frac{2}{3}. Descrivere come decresce l’errore in scala semilogaritmica.

NB: \underline{Non serve vedere} quale sia l’andamento del rapporto E_{n}(f )/E_{n+1}(f ), dove E_{n} = |I (f ) − I_{n}(f )| con I (f ) integrale esatto e I_{n}(f ) valore fornito dalla formula di quadratura.

▶ Si calcoli in Matlab la matrice di Poisson P_{20} di ordine 20 aiutandosi con

>> h e l p g a l l e r y

In Octave si usi la routine makefish scaricabile da internet. ▶ Sia b il vettore composto di componenti uguali a 1, avente lo

stesso numero di righe di P_{20}.

1. Si risolva con Gauss-Seidel e Jacobi, il problema P_{20}x = b, con tolleranza di 10^{(−12)}, partendo da x^{0} = [0 … 0] e b = [1, …, 1]. Quante iterazioni servono?

2. Si risolva col gradiente coniugato il problema P_{20}x = b, con tolleranza di 10^{(−12)}, partendo da x^{0} = [0 … 0]. Quante iterazioni servono?

Esercizio 5. Eulero esplicito

Si risolva utilizzando il metodo di Eulero esplicito con passi h uguali rispettivamente a 0.2, 0.1, 0.05

\{ \begin{matrix}y′(x) = (cos (y(x)))^{2}, 0 ≤ x ≤ 10 \\ y(0) = 0 \end{matrix}  (1)

la cui soluzione è Y (x) = tan^{−1}(x).

Si calcolino (o plottino in scala semi-logaritmica)

▶ l’errore assoluto rispetto la soluzione esatta; ▶ l’errore relativo rispetto la soluzione esatta.

Per selezionati valori di x, ad esempio x = 10, si osservi il rapporto per cui l’errore decresce quando h è dimezzato.

Esercizio 6. Crank-Nicolson

Modificando opportunamente il metodo di Eulero implicito, si implementi il metodo di Crank-Nicolson.

Alvise Sommariva  Esercizi Analisi Numerica, 2014  8/ 11

Esercizio 7. Assoluta stabilitá

Approssimare per λ = −100 il valore assunto dalla soluzione \overline{y} del problema di Cauchy

\{ \begin{matrix}y′(x) = λy(x), x ≥ 0 \\ y(0) = 1 \end{matrix}  (2)

nel punto x = 100.

A tal proposito

▶ Si utilizzano i metodi di Eulero esplicito e Eulero implicito con

passi h = 0.1, h = 0.05, h = 0.02, h = 0.01, h = 0.001. ▶ Al variare di h verificare quando |1 + hλ| < 1. ▶ Si osservi che la mancata convergenza a 0 di Eulero implicito

è dovuta al metodo di Eulero esplicito come predittore (si veda il codice di Eulero esplicito). Cosa succede se invece la si risolve con il merodo di Newton?

Esercizio 8. Metodi di Adams

▶ Implementare i metodi di Adams-Bashforth e Moulton per

p = 3. ▶ Si consideri il problema di Cauchy

\{ \begin{matrix}y′(x) = (cos (y(x)))^{2}, 0 ≤ x ≤ 10 \\ y(0) = 0 \end{matrix}  (3)

la cui soluzione è Y (x) = tan^{−1}(x).

Approssimare con tali metodi la soluzione di (3) nell’intervallo [0, 10], in N punti equispaziati x_{n}, con N = 2, 4, 8, 16, 32, descrivendone con un plot l’errore assoluto ∥y_{n} − u_{n}∥_{∞} (dove y_{n} = y(x_{n}) e u_{n} l’approssimazione fornita dal metodo numerico).

Quali valori iniziali si considerino quelli propri della soluzione esatta Y (x) = tan^{−1}(x) nei punti richiesti.

Alvise Sommariva  Esercizi Analisi Numerica, 2014  10/ 11

Facoltativo: Confronto di metodi.

Esercizio facoltativo Si risolva utilizzando il metodo di Eulero esplicito, implicito e quello dei trapezi, con passi h uguali rispettivamente a 0.5, 0.1, 0.01

\{ \begin{matrix}y′(x) = λy(x) + (1 − λ) cos(t) − (1 + λ)sin(t), 0 ≤ x ≤ 5 \\ y(0) = 1 \end{matrix}

(4)

Sapendo che la soluzione è Y (x) = sin(x) + cos(x) (indipendentemente da λ), si calcoli l’errore assoluto rispetto la soluzione esatta nei punti x = 1, x = 2, x = 3, x = 4, x = 5.