Sei sulla pagina 1di 48

a

7 -8a lezione di laboratorio

Calcolo Numerico

a.a. 2014-2015

1
Esercizio 1: prova pratica 08/01/2013
Sia dato il sistema lineare Ax=b con:
 1 
3 2
2 0 0 0 
 
1 3 0 2 0 0 
2 
 
2 1
0 6 2 0 
 3 
A   
1
0 2 6 0 2 
 3 
 1 
0 0 2 0 3 
 2 
 1 
 0 0 0 2 3 
 2 

e vettore dei termini noti b tale che la soluzione sia


  1, 2, 3, 4, 5, 0
T
. 2
Seguito testo problema
A- Si studi, senza usare il Matlab la convergenza del
metodo SOR per il sistema assegnato; si dica inoltre,
motivando la risposta, se la matrice A è fattorizzabile
secondo Cholesky.
B- Si costruisca un file Matlab:
Cognome_Nome_matricola.m
che, una volta avviato:
• faccia visualizzare una schermata con i dati personali ed
una breve presentazione del problema;
• generi la matrice A utilizzando opportune matrici a
blocchi di dimensioni 2x2. Si utilizzino i comandi Matlab
eye, ones e zeros per la costruzione delle sottomatrici
3
Seguito testo
ed una modalità compatta per l’inserimento dei
vettori;
• calcoli la soluzione numerica del problema assegnato,
applicando il metodo di Cholesky ed il metodo di
rilassamento utilizzando il valore ottimale del
parametro, si assuma nmax=30, vettore d’innesco pari a
x0   0, 2, 2, 2, 2, 2
T

precisione = 10-11;
• calcoli in norma infinito, l’errore assoluto commesso dal
metodo di Cholesky e da quello iterativo ad ogni
iterazione;
• faccia visualizzare una tabella, costituita da due righe,
4 la
Seguito testo
prima relativa ai risultati ottenuti con il metodo di
Cholesky, la seconda relativa al metodo SOR.
La tabella riporti l’intestazione:
n soluzione errore
n indica la stima del numero di operazioni necessarie per
calcolare la soluzione approssimata con ognuno dei due
metodi, soluzione ed errore sono la soluzione
approssimata ed il corrispondente errore assoluto.
Si utilizzino i seguenti formati di stampa: 3 cifre intere
per il numero di operazioni, 10 cifre decimali e formato
fixed point per la soluzione approssimata, 2 cifre
decimali e formato floating point per l’errore. 5
Ultimo quesito e risoluzione
C - Si commentino i risultati.
Risoluzione.
A- Esaminiamo le caratteristiche della matrice.
La matrice è simmetrica, a diagonale strettamente
dominante per righe, con elementi >0 sulla diagonale
principale (ricordiamo che quest’ultima condizione è solo
C. N.)
quindi: Matrice simmetrica e definita positiva!!!

Il metodo SOR è perciò convergente con il parametro


0    2; la matrice A è fattorizzabile secondo Cholesky
Esiste quindi una matrice R triangolare superiore tale che
6
A=R'R.
Quesito B: file Matlab
clear all
clc; close all
% dati personali e presentazione del problema
disp('Cognome e nome studente: XXXX XXX')
disp('Numero di matricola: XXXX')
disp('Corso di Laurea: XXXX')
disp('CFU: XXXX ')
disp(' ')
disp('Questo programma calcola e visualizza la soluzione
del ')
disp('sistema lineare Ax=b,con il vettore b tale che sia')
disp('alpha=[1,2,3,4,5,0]'',essendo: ')
A=[3 1/2 2 0 0 0;1/2 3 0 2 0 0;2 0 6 1/3 -2 0;0 2 1/3 6 0
-2;0 0 -2 0 3 1/2;0 0 0 -2 1/2 3];
disp('A =');disp(A)
7
Output Quesito B

Cognome e nome studente: XXXX XXX


Numero di matricola: XXXX
Corso di Laurea: XXXX
CFU: XXXX
Questo programma calcola e visualizza la soluzione del
sistema lineare Ax=b,con il vettore b tale che sia
alpha=[1,2,3,4,5,0]',essendo:

A =
3.0000 0.5000 2.0000 0 0 0
0.5000 3.0000 0 2.0000 0 0
2.0000 0 6.0000 0.3333 -2.0000 0
0 2.0000 0.3333 6.0000 0 -2.0000
0 0 -2.0000 0 3.0000 0.5000
0 0 0 -2.0000 0.5000 3.0000
8
Segue file: inserimento matrice;calcolo soluzione
col metodo di Cholesky ed errore
N=6; % dimensione matrice
% costruzione dei blocchi
a1=2*eye(2);a2=zeros(2); % blocco a1=A([1:2],[3,4]),
% blocco a2=A([1:2],[5:6])
d1=1/2*ones(2)+(3-1/2)*eye(2); % blocco d1=A([1:2],[1:2])
d2=1/3*ones(2)+(6-1/3)*eye(2); % blocco d2=A([3:4],[3:4])
format rat
A=[d1 a1 a2;a1 d2 -a1; a2 -a1 d1] % matrice A
alpha=[1:5 0]'; % soluzione analitica
b=A*alpha
format short e
R=chol(A); % fattorizzazione di Cholesky
y=R'\b;
xC=R\y; % soluzione col metodo di Cholesky
errC=norm(xC-alpha,inf); % errore del metodo di Cholesky
9
Segue file: applicazione del metodo SOR
% calcolo matrice di iterazione e suo raggio spettrale
D=diag(diag(A));E=tril(A,-1);
B_GS=eye(N)-inv(D+E)*A; % matrice di iterazione di Gauss-
% Seidel (G-S)
rho_GS=max(abs(eig(B_GS))); % raggio spettrale di G-S
omega=2./(1+sqrt(1-rho_GS)) % valore ottimale per SOR
OE=omega*tril(A,-1);
Bsor=eye(N)-omega*inv(D+OE)*A; % matrice di iterazione di
% SOR
rhosor=max(abs(eig(Bsor))) % raggio spettrale di SOR
precisione=1e-11;
nmax=30; toll=precisione/cond(A,inf)
x0=[0 -2*ones(1,N-1)]'; % vettore di innesco metodo SOR
[x,iter,residuo,rho]=Gauss_Seidel_ril(A,b,x0,omega,nmax,to
ll); % chiamata function per applicazione metodo SOR
10
Segue file: calcolo dell’errore del metodo SOR;
costruzione tabella dei risultati
% Calcolo dell’errore ad ogni iterazione metodo SOR
for i=1:iter+1
errS(i)=norm(x(i,:)-alpha',inf);
end
% Stima numero operazioni per il metodo di Cholesky
nC=round(N^3/6+N^2); % numero operazioni per la
% fattorizzazione + numero operazioni per la risoluzione
% dei 2 sistemi triangolari
% Stima numero operazioni per il metodo SOR
nS=N^2*iter; % numero operazioni= numero iterazioni*
% dimensione matrice^2
% Tabella dei risultati

tab=[nC xC' errC; nS x(end,:) errS(end)];


11
Valori in uscita
omega =
1.2303e+00 % soprarilassamento
rhosor =
2.3026e-01 % il raggio spettrale è
% abbastanza piccolo
R =
1.4685e+00 % velocità asintotica di
% convergenza
toll =
7.7840e-13 % tolleranza relativa alla
% precisione richiesta
iter =
21 % numero di iterazioni 12
Stampa dei risultati
% Intestazione
fprintf(' n \t\t\t\t\t\t\t soluzione
\t\t\t\t\t\t errore \n')
% Stampa tabella
fprintf('%3d %16.10f %16.10f %16.10f %16.10f %16.10f
%16.10f %10.2e \n', tab')

n soluzione errore
72 1.0000 2.0000 3.0000 4.0000 5.0000 0.0000 2.66e-015

756 1.0000 2.0000 3.0000 4.0000 5.0000 -0.0000 2.91e-012

N.B. I valori delle componenti della soluzione


sono stati riportati in format short solo per
questioni di spazio sulla slide.
13
Quesito c: commenti
L’esame della tabella permette un confronto dei
due metodi solo per quanto riguarda il numero di
operazioni macchina che è senza dubbio a
vantaggio del metodo diretto 72<<756, che
risulta quindi più efficiente del metodo iterativo
per il sistema in esame.
Non si può confrontare l’errore che è senza dubbio
più piccolo per il metodo diretto poiché l’errore del
metodo iterativo è determinato dalla precisione
con cui richiediamo la soluzione. 14
Esercizio 2 (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:

15 6 8 11
6 6 5 3
A1   , A i   A1  per i  2, 3.
i

8 5 7 6
 
11 3 6 9
15
Quesito 1

Si determini, mediante 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.

16
Quesito 2a

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, CFU)
ed una breve presentazione del problema;

17
Quesito 2b

b) mediante un ciclo for, determini i dati Ai , bi


i=1, 2, 3;

- risolva i sistemi Ai x i  b i applicando il


metodo di Gauss con pivoting parziale
e raffinamento;

- calcoli l’errore relativo in norma 2;


18
Quesito 2c
c) faccia visualizzare una tabella che riporti l’intestazione:
indice iter soluzione errore residuo
e, su ogni riga, indice è il valore i (i=1,2,3)della matrice cui
si riferisce il calcolo, il numero di iterazioni iter effettuate nel
raffinamento della soluzione del sistema, la soluzione x scritta
come vettore riga ed il corrispondente errore relativo err in
norma 2; residuo è la norma 2 del residuo.
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 x;
2 cifre decimali e formato esponenziale per err;
2 cifre decimali e formato esponenziale per residuo. 19
Soluzione teorica del Quesito 1
Proprietà della matrice A1 e conseguenze:
A1  A1T  A11  A1T

A1 2 
  A A1  
T
1    A1 
2
   2  A1     A1 

A 1
1 2   A A T
1
1
1   A  1
1

max  A1 
K 2  A1   A1 A1
   A1    A 1
 min  A1 
2 1 2 1

20
Soluzione teorica del Quesito 1
Proprietà delle matrici A i , i  2, 3

A 2   A1   A 2  A T2
2
per la simmetria di A 1 .
Inoltre risulta:
A 2  A  i  A 2    i  A 1  
2 2
1

max  A2   max  A1 
2

 
quindi:
K 2 A2   
min  A2   min  A1 



K2(A1)
Analogamente per i = 3. 21
Istruzioni relative al Quesito 1
% file script: punto1.m
clear 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
errore(i)= norm(cond_Ai-cond_A)/norm(cond_A);
end
disp('cond(Ai)')
disp(num2str(cond_Ai,'%18.10e'))
disp('(cond(A1))^i')
disp(num2str(cond_A,'%18.10e'))
disp('errore') 22
disp(num2str(errore,'%13.3e'))
Output punto1
>> punto1
Numero di condizionamento delle matrici Ai
cond(Ai) 6.4993885835e+03 4.2242052054e+07
2.7454849047e+11
(cond(A1))^i 6.4993885835e+03 4.2242051959e+07
2.7454751024e+11
errore 0.000e+00 2.248e-09 3.570e-06
Indicheremo con K1, K2, K3 il condizionamento in
norma 2 delle matrici A1, A2, A3 rispettivamente.
Conseguenze del numero di condizionamento grande?
Una grande amplificazione dell’errore in entrata e quindi
soluzione non precisa
23
Calcolo della soluzione di A2 x  b 2
 446 199 272 330  1247  1
199 106 131 141   577  1
A2   , b2    ,  
 272 131 174 199   776  1
     
 330 141 199 247   917  1

x2=A2\b2 % Operatore \ Numero di cifre significative perse


x2 = rispetto alle 16 del Matlab
1.00000000037954
>> nc=log10(K2)
0.99999999968201
nc = 7.6257
1.00000000023455
0.99999999948547
err2=norm(x2-alpha)/norm(alpha)
err2 = 3.76e-010 
10 cifre significative, 9 decimali
corretti
Abbiamo già scritto che il valore grande di K2(A2)
amplifica l’errore in entrata; verifichiamolo
A2m=A2;A2m(2,2)=A2(2,2)+1e-3; % perturbazione su
% un solo elemento della matrice
pert=norm(A2-A2m)/norm(A2)
pert =
1.0546e-006 % grandezza della perturbazione
x2m=A2m\b2; %calcolo della soluzione perturbata
err2m=norm(x2m-alpha)/norm(alpha); % errore
% relativo rispetto alla soluzione teorica
x2m = [2.06050813471394,0.11143302866360,
1.65544907516937,-0.43770893706830]
err2m = 1.0501 >100% !!!
E’della stessa entità l’errore tra la soluzione
perturbata di A2 e quella non perturbata
err2p=norm(x2m-x2)/norm(x2);
25
err2p = 1.0501
Istruzioni relative al Quesito 2a
clear all
disp('Cognome e nome studente: XXXX XXX')
disp('Numero di matricola: XXXX')
disp('Corso di Laurea: XXXX')
disp('CFU: 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('alpha=[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.') 26
Output file Cognome_Nome.m
>> Cognome_Nome
Cognome e nome studente: XXXX XXX
Numero di matricola: XXXX
Corso di Laurea:XXXX
CFU:XXXX
Questo 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 alpha=[1 1 1 1]', essendo:
A1= 15 6 8 11
6 6 5 3
8 5 7 6
11 3 6 9
e A_i= A1^i per i=2,3. 27
Istruzioni relative al Quesito 2b
tab=[]; toll=1e-13;alpha=ones(4,1); % calcolo
% della soluzione dei tre sistemi
for i =1:3
A=A1^i;b=A*alpha; % vettore termini noti
[x,iter] = Gausspv_r(A,b,toll) % chiamata di
% Gausspv_r: esegue il metodo di Gauss con
% pivoting parziale e raffinamento

% all’interno di Gausspv_r si esegue la


% fattorizzazione LU e si chiama la function
%[x,iter]= Raff_iter(A,b,L,U,P,x,toll);

residuo=b-A*x; % calcolo del residuo


norm_residuo=norm(residuo); % norma 2 del residuo
err=norm(alpha-x)/norm(alpha);% errore in norma 2
tab=[tab;[i,iter,x',err,norm_residuo]]; 28
end
Risultati Quesito 2b, Tabella Quesito 2c
fprintf('i iter \t\t\t soluzione
\t\t \t\t errore residuo\n')
fprintf('%1d %2d %14.10f %14.10f %14.10f %14.10f
%10.2e %10.2e \n',tab');

i iter soluzione errore residuo


1 0 1.0000000000 1.0000000000 1.0000000000 1.0000000000 8.17e-015 3.55e-015
2 0 1.0000000007 0.9999999994 1.0000000004 0.9999999991 6.81e-010 1.97e-013
3 0 0.9999998145 1.0000001554 0.9999998854 1.0000002514 1.84e-007 0.00e+000

Nel caso della matrice con indice 3, calcolando la stima del numero
di cifre che si perdono, si ottiene:

Numero di cifre significative perse


nc=log10(K3)
nc =
11.4386
29
Istruzioni utilizzate in Raff_iter
function [x,iter]=Raff_iter(A,b,L,U,P,x,toll)

%_________________________________________
...
iter=0;
residuo=b-A*x;
while norm(residuo)>toll*norm(b)& iter<100
y=L\(P*residuo);
err=U\y;
x=x+err;
residuo=b-A*x;
iter=iter+1;
end
if iter==100
disp('Raggiunto il numero massimo di iterazioni')
end

30
Esercizio 3
Sia dato il sistema lineare avente la matrice dei
coefficienti A ed il vettore dei termini noti b di
seguito definiti:

4 1 0 0 0
0  3
1 5 2 0 0 0    2 
  
0 2 6 3 0 0  1
A  b 
0 0 3 5 1 0   1
0 0 0 1 3 1   3
   
0 0 0 0 1 2  4 31
Quesiti 1 e 2
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.

32
Quesito 3a

3. Si costruisca un file MATLAB che:


a) calcoli la soluzione numerica del problema assegnato
applicando il metodo che ha maggiore velocità di
convergenza; si fissi una tolleranza tale che la
precisione sia non inferiore a 1.e-4, si assuma
nmax=20 ed il vettore di innesco dato da:
x0=[1 1 1 1 1 1]';

33
Quesito 3b
b) faccia visualizzare una tabella con l’ intestazione:
iterazioni soluzione residuo
che, su ogni riga, riporti il numero dell’ iterazione i, la
soluzione approssimata x i e la norma del residuo resi
corrispondente;
Si utilizzino i seguenti formati di stampa:
2 cifre intere per il valore di i;
5 cifre decimali e formato virgola fissa per la
soluzione approssimata x i ;
1 cifra decimale e formato esponenziale per la
norma del residuo resi . 34
Studio della convergenza dei metodi
Caratteristiche della matrice A:
a) diagonalmente dominante  Jacobi converge
b) tridiagonale  anche Gauss-Seidel converge; inoltre:
  BGS    2
 BJ   R  BGS   2 R  BJ 
Quindi il metodo di Gauss-Seidel ha velocità di
convergenza doppia rispetto a quella del metodo di Jacobi!
c) simmetrica
d) definita positiva perché è a) e c) e tutti gli elementi
sulla diagonale principale sono positivi

anche il metodo SOR converge con parametro di
rilassamento in (0,2). 35
Qual è il metodo più veloce?
Per la proprietà d) SOR converge per
 : 0 <  < 2;
è inoltre il metodo più veloce se si assume:

2
   ott  .
1  1    BGS 

36
Istruzioni relative al Quesito 2
I0=[4 5 6 5 3 2];I1=[1 2 3 -1 1];
A=diag(I0)+diag(I1,-1)+diag(I1,1)
D=diag(diag(A)); [n,m]=size(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-Seidel
OE=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 SOR
OE=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) 37
Risultati file Quesito 2

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

38
Istruzioni relative al Quesito 3
b=[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;nmax=20;
x,iter,res,rho]=Gauss_Seidel_ril(A,b,x0,omega,nma
x,toll);
it=[0:iter]';tab=[it x res];
s='--------------------------------------------';
fprintf('iter soluzione residuo\n')
disp(s)
fprintf('%2d %8.5f %8.5f %8.5f %8.5f %8.5f %8.5f
39
%9.1e\n',tab');
Risultati file Quesito 3
iter soluzione errore
-----------------------------------------------------------------
0 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.5e+000
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; si


riportino le componenti della soluzione approssimata con 10 cifre decimali
40
e formato virgola fissa.
Esercizio 4 (Esame 05-12-2005)
Sia data la seguente matrice:
 6.36091 0 1.6685 0.9371 0 2.5369 
0 2.5000 0 0 0 0 
 
 1.6685 0 3.4695 0 0 1.8615 
A 
 0.9371 0 0 4.6653 0 0.8399 
0 0 0 0 2.0000 0 
 
 2.5369 0 1.8615 0.8399 0 5.8043 

e vettore b tale che la soluzione del sistema Ax  b


sia:
  [1 1 1 1 1 1] .
T

41
Quesiti 1, 2 e 3
1 - Dopo aver determinato con MATLAB gli autovalori, si
deduca motivando la risposta, la caratteristica fondamen_
tale della matrice;

2 - si determini il condizionamento in norma 2 e si dica,


sempre motivando la risposta, se il sistema è ben condi_
zionato calcolando, inoltre, il numero di cifre significative
che si perdono, rispetto alle 16 del MATLAB, quando si
risolve il sistema;

3 - Si costruisca un file MATLAB:


Cognome_Nome_Studente.m che, una volta avviato:
42
Quesiti a), b) e c)
a- faccia visualizzare una schermata con i dati personali
e una breve presentazione del problema;
b- calcoli la soluzione numerica del sistema assegnato
con il metodo di Gauss e raffinamento iterativo con una
tolleranza di 1e-14; calcoli inoltre, l’errore relativo;
calcoli, sempre con lo stesso metodo, la soluzione del
sistema che ha la stessa matrice dei coefficienti e vettore
termini noti perturbato, rispetto a quello dato, nel
4
termine b(4) della quantità 10 ;
c- faccia visualizzare una tabella in cui si riporti
l’intestazione: iterazioni soluzione errore,
iterazioni è il numero di iterazioni eseguite nel
raffinamento, soluzione è la soluzione ottenuta e
errore l’errore relativo nel primo e nel secondo caso 43
Quesito 4
utilizzando i seguenti formati di stampa:

3 cifre e formato intero per il numero dell’


iterazione,
6 cifre decimali e virgola fissa per le soluzioni
nei due casi,
2 cifre decimali e formato floating point per
l’errore nei due casi.

4- Si confrontino e si commentino i risultati.

44
Istruzioni relative al quesito 1
clear all;clc
% Costruzione della matrice
d=[6.36091 2.5 3.4695 4.6653 2 5.8043];
n=length(d);d1=zeros(1,n-1);d2=[-1.6685 0 0 -0.8399];
d3=[-0.9371 0 1.8615];d4=zeros(1,n-4);d5=2.5369;
A1=diag(d1,1)+diag(d2,2)+diag(d3,3)+diag(d4,4)+diag(d5,5);
A2=A1';A=(A1+A2+diag(d))
alpha=ones(n,1);b=A*alpha
%% A è simmetrica per costruzione; si riportano però,
%% commentate, le istruzioni necessarie per eventualmente
%% verificare la simmetria di una matrice A.
%% Simmetria=(A==A');
%% if Simmetria==1
%% disp('A e'' simmetrica')
%% end
% Verifica della condizione sugli autovalori
autovalori=eig(A)
if autovalori>0
disp('A e'' definita positiva') 45
end
Istruzioni relative ai quesiti 2 e 3
K2=cond(A);
% stima cifre perse
cifre_perse=round(log10(K2))
toll=1e-14;
[x,iter]=Gausspv_r(A,b,toll);
err_rel=norm(x-alpha)/norm(alpha);
bp=b;
bp(4)=b(4)+1e-4;pert=norm(b-bp)/norm(b)
[x1,iter1]=Gausspv_r(A,bp,toll);
err_rel1=norm(x1-alpha)/norm(alpha);
tab=[[iter;iter1] [x';x1'] [err_rel;err_rel1]];
st='%3d';
for i=1:n
st=[st,' %10.6f '];
end
st=[st,'%10.2e \n'];
fprintf('iter \t\t\t\t soluzione
\t\t\t\t\t\t errore \n\n')
fprintf(st,tab') 46
Risultati quesito 1
format short
A =

6.3609 0 -1.6685 -0.9371 0 2.5369


0 2.5000 0 0 0 0
-1.6685 0 3.4695 0 0 1.8615
-0.9371 0 0 4.6653 0 -0.8399
0 0 0 0 2.0000 0
2.5369 0 1.8615 -0.8399 0 5.8043
b =
6.2922 autovalori =
2.5000
3.6625 1.0000
2.8883 2.0000
2.0000 2.5000
9.3628 4.3000
6.0000
A e' simmetrica, gli autovalori sono 9.0000
positivi, quindi: A e' definita positiva!!
47
Tabella dei risultati

iter soluzione errore

0 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.11e-016


0 1.000002 1.000000 1.000000 1.000022 1.000000 1.000002 9.21e-006

pert=7.9240e-006
K2 =

9.0001
Il condizionamento K2 di A è buono.
A piccole perturbazioni sui dati corrispondono
piccole variazioni sui risultati.

cifre_perse =

1
48

Potrebbero piacerti anche