29
1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

Embed Size (px)

Citation preview

Page 1: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

1

4a lezione - laboratorio

a.a 2004-2005

Corso di Laurea Ingegneria MECCANICA

Page 2: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

2

Esercizio 1 (Esame 02/12/2002)

Si considerino i sistemi lineari Ai xi=bi, i=1,2,3 con i vettori dei termini noti bi, i=1,2,3 scelti in modo che la soluzione dei sistemi sia i=[1,1,1,1]T, i=1,2,3. Supponiamo che:

1 1

15 6 8 11

6 6 5 3, per 2,3.

8 5 7 6

11 3 6 9

iiA A A i

Page 3: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

3

Si determini con MATLAB, il condizionamento K2(Ai ), i=1, 2, 3 e si verifichi che K2(Ai ) = (K2 ( A1 ) )i , i=2, 3.

Si spieghi il motivo di tale relazione e se ne prevedano le conseguenze.

Quesito 1

Page 4: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

4

Si costruisca un file MATLAB: Cognome_Nome.m, che una volta avviato:

a) faccia visualizzare una schermata con i dati personali (Cognome, nome, matricola, corso di laurea) ed una breve presentazione del problema;

Quesito 2

Page 5: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

5

b) mediante un ciclo for, determini i dati Ai , bi , i=1, 2, 3;

risolva quindi i sistemi applicando il metodo di Gauss con pivoting parziale;

calcoli l’errore relativo in norma 2;

Quesito 2b

i iiA x b

Page 6: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

6

c) faccia visualizzare una tabella riassuntiva che riporti: intestazione: indice iter soluzione errore;

e su ogni riga il valore dell’indice i della matrice, il numero di iterazioni iter effettuate nel raffinamento, la soluzione corrispondente scritta come vettore riga e l’errore relativo err;

Si utilizzino i seguenti formati di stampa:

1 cifra intera per il valore di i;

2 cifre intere per il valore di iter;

10 cifre decimali e formato virgola fissa per le componenti di ;

2 cifre decimali e formato esponenziale per err.

Quesito 2c

ix

ix

Page 7: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

7

Soluzione teorica del Quesito 1

1A

11 1 1 1

2 21 1 1 1 1 12

1 1 11 1 1 12

T T

T

T

A A A A

A A A A A A

A A A A

Proprietà della matrice e conseguenze.

max 11 12 1 1 1 1 12 2

min 1

AK A A A A A

A

Page 8: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

8

Soluzione teorica del Quesito 1, 2, 3iA i

2

2 1 2 2TA A A A

2 22 2 1 12

A A A A

Proprietà delle matrici

Analogamente per i = 3. K2(A1)

per la simmetria di 1 .A

1 1 2 12 2 12

A A A quindi:

21 1

2 2 2 2 1 12 2K A A A A A

Page 9: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

9

Istruzioni relative al Quesito 1clear all

disp('Numero di condizionamento delle matrici Ai')

A1=[15 6 8 11 ; 6 6 5 3 ; 8 5 7 6; 11 3 6 9];

cond_Ai=[];cond_A=[];

for i =1:3

Ai=A1^i;

cond_Ai=[cond_Ai,cond(Ai)]; % vettore dei cond(Ai)

cond_A=[cond_A,cond(A1)^i]; % vettore dei

% cond(A1^i)

end

disp('cond(Ai)')

disp(num2str(cond_Ai,'%13.3e'))

disp(’(cond(A1))^i')

disp(num2str(cond_A,'%13.3e'))

Nome file script: punto1

Page 10: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

10

Output punto1>> punto1

Numero di condizionamento delle matrici Ai

cond(Ai)

6.499e+003 4.224e+007 2.746e+011

(cond(A1))^i

6.499e+003 4.224e+007 2.745e+011

>>

Conseguenze del numerodi condizionamento grande?

Page 11: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

11

Calcolo della soluzione di

22

446 199 272 330 1247

199 106 131 141 577,

272 131 174 199 776

330 141 199 247 917

A b

22A x b

>> x1=A2\b2 % Operatore \x1 = 1.00000000154209 0.99999999870797 1.00000000095304 0.99999999790943>> err1=norm(x1-alfa)/norm(alfa)err1 = 1.53e-009=.153e-008

>> nc=log10(K2)nc =

7.6257

Numero di cifre significative perse

9 cifre signific., 8 decimali corretti

Page 12: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

12

Come incide il valore di K2(A2)?

>> A2m=A2;>> A2m(2,2)=A2(2,2)+1e-3; % perturbazione data % sulla matrice>>pert=norm(A2-A2m)/norm(A2) pert = 1.0546e-006 % entità della perturbazione>> x1m=A2m\b2 % soluzione perturbatax1m = 2.06050813486122 0.11143302854021 1.65544907526039 -0.43770893726797>> err1m=norm(x1m-alfa)/norm(alfa)err1m = 1.0501 >100% !!!

Page 13: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

13

Istruzioni relative al Quesito 2aclear alldisp('Cognome e nome studente: XXXX XXX')disp('Numero di matricola: XXXX')disp(‘Corso di Laurea: XXXX’)disp(' ')disp('Questo programma calcola e visualizza la soluzione dei ')disp('sistemi lineari A_i x_i=b_i, i =1,2,3, con i vettori b_i tali che sia')disp('alfa=[1,1,1,1]'',essendo: ')A1=[15 6 8 11;6 6 5 3;8 5 7 6;11 3 6 9];disp('A1=');disp(A1)disp( 'e A_i= A1^i per i=2,3.')

Page 14: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

14

Output file Cognome_Nome.m>> Cognome_Nome.mCognome e nome studente: XXXX XXXNumero di matricola: XXXX Corso di Laurea:XXXXQuesto programma calcola e visualizza la soluzione dei sistemi lineari A_i x_i=b_i, i =1,2,3, con i vettori b_i tali che sia alfa=[1 1 1 1]', essendo: A1= 15 6 8 11 6 6 5 3 8 5 7 6 11 3 6 9e A_i= A1^i per i=2,3.

Page 15: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

15

Istruzioni relative al Quesito 2b

tab=[];alfa=ones(4,1); % soluzionefor i =1:3 A=A1^i; b=A*alfa; % vettore termini noti [L,U,P] = lu(A); %[L,U]=lu(A); y = forwsub(L,P*b); % y = L\(P*b); x = backsub(U,y); % x=U\y; R=eye(size(A)); [x,iter]=raff_iter(A,b,L,U,P,R,x); err=norm(alfa-x)/norm(alfa); tab=[tab;[i,iter,x',err]];end

Istr

uzi

oni d

i gau

ssp

v_r.

m

Page 16: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

16

Risultati File Punto 2b Tabella Punto 2c

fprintf('i iter \t\t\t soluzione \t\t \t\t errore \n')fprintf('%1d %2d %14.10f %14.10f %14.10f %14.10f %12.2e \n',tab');

i iter soluzione errore

1 0 1.0000000000 1.0000000000 1.0000000000 1.0000000000 2.42e-014

2 1 1.0000000016 0.9999999987 1.0000000010 0.9999999978 1.59e-009

3 5 0.9999992309 1.0000006444 0.9999995247 1.0000010427 7.62e-007

Page 17: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

17

Esercizio 2Sia dato il sistema lineare avente la matrice dei coefficienti ed il vettore dei termini noti così assegnati:

4 1 0 0 0 0 3

1 5 2 0 0 0 2

0 2 6 3 0 0 1

0 0 3 5 1 0 1

0 0 0 1 3 1 3

0 0 0 0 1 2 4

A b

Page 18: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

18

Problema I°: quesiti 1, 2

1. Si studino le caratteristiche della matrice A e si stabilisca quale tipo di fattorizzazione è

possibile effettuare.

2. Si risolva il sistema usando ogni tipo di fattorizzazione possibile e con l’operatore \ applicato alla matrice A ed al vettore b.

Page 19: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

19

Caratteristiche di A: conseguenzeCaratteristiche di A:a) simmetricab) tridiagonale; c) diagonalmente dominante;d) definita positiva perché è a), c) e tutti gli

elementi in diagonale principale sono >0.

Conseguenze:

a) È possibile la fattorizzazione A=L*U;

b) È possibile la fattorizzazione di Cholesky A=R*R’

Page 20: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

20

Verifica MATLAB e soluz. sistemaI0=[4 5 6 5 3 2];I1=[1 2 3 -1 1];[n,m]=size(A);

A=diag(I0)+diag(I1,-1)+diag(I1,1); % matrice A

b=[3 –2 1 –1 3 4]; % termine noto

A==A’; % controllo simmetria

for i=1:size(A,1)

minore(i)=det(A(1:i,1:i));

end % minori principali di testa

disp(minore)

[L U P]=lu(A) % fattorizzazione LU

Rt=chol(A) % fattorizzazione di Cholesky

y=Rt’\b;alpha=Rt\y; %soluzione sistema utilizzando Chol

y=L\b;alpha1=U\y; %soluzione sistema utilizzando A=Lu

alpha2=A\b % soluzione sistema (\ utilizza A=LU)

Page 21: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

21

1. Si studi la convergenza dei metodi di Jacobi, Gauss-Seidel e Rilassamento in serie (SOR) per il sistema assegnato.

2. Si dica quale di questi metodi è il più veloce giustificando teoricamente la risposta e calcolando, mediante Matlab, i raggi spettrali delle rispettive matrici di iterazione ed il valore ottimale del parametro per il metodo SOR.

Problema II°: quesiti 1 e 2

Page 22: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

22

3. Si costruisca un file MATLAB che:

a) calcoli la soluzione numerica del problema assegnato applicando il metodo con convergenza migliore e fissando una precisione non inferiore a 1.e-4 ed un vettore di innesco pari a x0=[1 1 1 1 1 1]T;

Quesito 3a

Page 23: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

23

b) faccia visualizzare una tabella riassuntiva che riporti: intestazione: iterazioni soluzione errore;

e su ogni riga il numero di iterazione iter , la soluzione corrispondente e la norma del residuo err;

Si utilizzino i seguenti formati di stampa:

2 cifre intere per il valore di iter;

5 cifre decimali e formato virgola fissa per la

soluzione approssimata ;

1 cifra decimale e formato esponenziale per err.

Quesito 3b

ix

ix

Page 24: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

24

Soluzione quesito 1:Convergenza dei metodi

Caratteristiche di A:a) diagonalmente dominante Jacobi conv.b) tridiagonale anche Gauss-Seidel

converge, inoltre: 2 2GS J GS JB B R B R B

c) simmetrica d) definita positiva anche SOR convergeper 0 < < 2;

Page 25: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

25

Qual è il metodo più veloce?

2

.1 1

ott

GSB

Il metodo più veloce è SOR se si assume:

Page 26: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

26

Istruzioni relative ai quesiti 1, 2% file Punto2I0=[4 5 6 5 3 2];I1=[1 2 3 -1 1];[n,m]=size(A);A=diag(I0)+diag(I1,-1)+diag(I1,1)D=diag(diag(A));B_J=eye(n)-inv(D)*A; % metodo di Jacobi rho_J=max(abs(eig(B_J)))R_J=-log(rho_J)omega=1; % metodo di Gauss-SeidelOE=-omega*tril(A,-1);B_GS=eye(n)-omega*inv(D-OE)*A; rho_GS=max(abs(eig(B_GS)))R_GS=-log(rho_GS)omega_ott=2/(1+sqrt(1-rho_GS)) % metodo SOROE=-omega_ott*tril(A,-1);B_r=eye(n)-omega_ott*inv(D-OE)*A; rho_r=max(abs(eig(B_r))) R_r=-log(rho_r)

Page 27: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

27

Risultati file Punto2

rho_J = 0.7196 R_J = 0.3290

rho_GS = 0.5179 R_GS = 0.6580

omega_ott = 1.1804

rho_r = 0.1804 R_r = 1.7126

rho_J = 0.7196 R_J = 0.3290

rho_GS = 0.5179 R_GS = 0.6580

omega_ott = 1.1804

rho_r = 0.1804 R_r = 1.7126

Page 28: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

28

Istruzioni relative ai quesiti 3a, 3bb=[3 -2 1 -1 3 4]';

K=cond(A,inf);

precisione=input('precisione = '); % 1.e-4

toll=precisione/K % toll = 9.3310e-006

x0=ones(n,1);omega=omega_ott;

[x,iter,err,rho]=Gauss_Seidel_ril(A,b,x0,omega,nmax,toll);

it=[1:iter]';

tab=[it x err];

s='-------------------------------------------------';

disp(s)

fprintf('iter soluzione errore\n')

disp(s)

fprintf('%2d %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f %9.1e\n‘… ,tab');

Page 29: 1 4 a lezione - laboratorio a.a 2004-2005 Corso di Laurea Ingegneria MECCANICA

29

Risultati quesiti 3a, 3biter soluzione errore

1 0.40980 -1.22145 -0.09326 -0.11434 0.56155 1.84897 1.1e+000

2 1.17181 -0.48443 0.47164 -0.41692 0.18755 1.91655 4.2e-001

3 0.81686 -0.80030 0.67260 -0.59295 0.15916 1.92112 1.3e-001

4 0.97411 -0.87533 0.76977 -0.63672 0.14526 1.92850 3.4e-002

5 0.96788 -0.90620 0.79022 -0.64659 0.14099 1.92969 8.7e-003

6 0.97811 -0.91270 0.79491 -0.64914 0.14028 1.92989 1.1e-003

7 0.97819 -0.91376 0.79599 -0.64961 0.14015 1.92993 3.4e-004

8 0.97849 -0.91415 0.79622 -0.64972 0.14011 1.92995 5.1e-005

9 0.97855 -0.91421 0.79627 -0.64974 0.14010 1.92995 1.3e-005

10 0.97855 -0.91422 0.79628 -0.64975 0.14010 1.92995 2.5e-006

Si invitano gli studenti a determinare la soluzione con precisione = 1.e-8 e riportare le componenti della soluzione approssimata con 10 cifre e virgola fissa.