• Non ci sono risultati.

Laboratorio di Calcolo Numerico A.A. 2007/2008 – II semestre

N/A
N/A
Protected

Academic year: 2021

Condividi "Laboratorio di Calcolo Numerico A.A. 2007/2008 – II semestre"

Copied!
2
0
0

Testo completo

(1)

Corso di Laurea Triennale in Matematica Laboratorio di Calcolo Numerico

A.A. 2007/2008 – II semestre

Esercitazione 4

Creare una cartella <cognome> dove verranno salvati i file creati nella sessione di lavoro.

Appena entrati in MATLAB posizionarsi in <cognome>.

Risolvere in ambiente MATLAB i seguenti esercizi.

1. Scrivere una function MATLAB per risolvere il sistema lineare Ax=b mediante il metodo iterativo di Gauss-Seidel. Tale function deve essere chiamata con il nome gseidel.m e deve assumere come dati di ingresso:

- la matrice dei coefficienti del sistema - il vettore dei termini noti

- il vettore contenente l'approssimazione iniziale della soluzione - il parametro di tolleranza per l’errore.

In uscita devono essere restituiti il vettore soluzione del sistema lineare e il numero dei passi effettuati per ottenere l'approssimazione desiderata (massimo 100).

2. Scrivere una function MATLAB per risolvere il sistema lineare Ax=b mediante il metodo iterativo di Jacobi. Tale function deve essere chiamata con il nome jacobi.m e deve assumere come dati di ingresso:

- la matrice dei coefficienti del sistema - il vettore dei termini noti

- il vettore contenente l'approssimazione iniziale della soluzione - il parametro di tolleranza per l’errore.

In uscita devono essere restituiti il vettore soluzione del sistema lineare e il numero dei passi effettuati per ottenere l'approssimazione desiderata (massimo 100).

3. Calcolare i raggi spettrali delle matrici di iterazione dei metodi di Jacobi e Gauss-Seidel associate ai sistemi lineari Ax=b con





=

2 1 1

2 2 2

1 1 2

A





= 3 1 2

b ;





=

1 2 2

1 1 1

2 2 1 A





= 3

1 1

b ;





=

6 8 0

0 9 2

1 1 4

A





= 14

7 6

b ;





=

8 3 7

4 5 4

9 6 7 A





= 2 5 22

b ;

e=rand(n,1); f=[e, -e, 6*e, -e, 2*e]; d=[-n/2 -1 0 1 n/2];

A=spdiags(f,d,n,n), x = ones(n,1), b = A*x , per n = 10,100,1000.

(2)

Stabilire per ognuno di questi sistemi che cosa ci si aspetta da entrambi i procedimenti iterativi.

Successivamente, servirsi degli M-file gseidel.m e jacobi.m per risolvere i sistemi lineari assegnati con i due metodi a partire dal vettore iniziale x(0)=0, con parametro di tolleranza per l’errore tol=10-6.

4. Applicare il metodo di Jacobi per risolvere il sistema lineare Ax=b con





=

1 1 1

2 13 2

1 2 20 A





= 2 30 25

b ,

a partire dal vettore iniziale x(0)=0, con parametro di tolleranza per l’errore tol=10-6. Permutare le prime due equazioni e considerare il sistema equivalente Ax=b con





=

1 1 1

1 2 20

2 13 2 A





= 2 25 30 b

e riapplicare il metodi di Jacobi. Cosa accade?

5. Si implementi una function MATLAB per risolvere il sistema lineare Ax=b attraverso il metodo del gradiente. Si scelga un criterio di arresto basato sull’errore relativo tra due soluzioni successive, fino al raggiungimento di un numero massimo fissato di iterazioni.

6. Sia assegnato il sistema lineare Ax=b con

2 R( 1)x( 1)

2 1 0

1 2 1 0

0 1 2 1 0

0 0

1 2 1 0

0 0

1 2 1

0 0

1 2

1





















= n n

h A

L L

L L

L L

M O

O O M

M O

O O M

L L

L L

L L

R 1

2

0 0 1

















= n

h

b

M M

dove h=1/n per n=23, 24,…, 28. Si risolva il sistema con il metodo del gradiente ponendo nmax=106, tol=10-12, x(0)=0. Si disegni in scala logaritmica il numero di iterazioni al variare di n. Che andamento si osserva? Perché?

7. Si risolva il sistema lineare assegnato nell’esercizio 6. con il metodo del gradiente coniugato.

A questo scopo si usi la function MATLAB pcg. Si digiti help pcg per le informazioni sull’utilizzo di tale funzione. Cosa si può dire a priori sul numero di iterazioni?

Riferimenti

Documenti correlati

Scrivere l’M-file somma.m per calcolare la somma dei primi n numeri naturali dispari sia utilizzando un ciclo for che servendosi dell’istruzione

Spiegare perché per valori di x vicini a multipli di π/2 la valutazione della funzione risulta un problema mal condizionato4. Osservare cosa succede

Costruire una funzione MATLAB per il calcolo della soluzione di una generale equazione AX=B, con X, B matrici, che utilizza la fattorizzazione LU. Utilizzarla poi per

La funzione deve prendere in input la matrice A, il vettore di innesco x 0 , il numero massimo di iterazioni consentite (nmax) e la tolleranza toll per il

Si applichino il metodo EN sviluppato e il metodoQRLS (ottenuto chiamando successivamente le due funzioni MATLAB polyfit( ) e polyval( )) per il calcolo dei polinomi ai minimi

Realizzare uno script MATLAB che, presi in input due vettori di coordinate x, y che rappresentano punti lungo una traiettoria sulla quale la mano del robot deve

Eseguire il file showtrunc.m che illustra il comportamento dell’errore locale di troncamento nel metodo di EULERO applicato alla risoluzione del problema a valori

La scelta di cambiamento del passo è automatica all’interno della funzione e dipende dalla tolleranza fissata.Può essere più efficiente di ode45 per tolleranze lasche ed in