Upload
liberatore-vianello
View
216
Download
0
Embed Size (px)
Citation preview
1
4a 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
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
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
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
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
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
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
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
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?
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
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% !!!
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.')
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.
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
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
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
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.
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’
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)
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
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
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
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;
25
Qual è il metodo più veloce?
2
.1 1
ott
GSB
Il metodo più veloce è SOR se si assume:
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)
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
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');
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.