MATLAB:Condizionamento Sistemi Lineari.



Похожие документы
Condizionamento di sistemi lineari.

Introduzione al MATLAB c Parte 2

Condizionamento del problema

Fattorizzazione LU ed eliminazione gaussiana

ANALISI DEL CONDIZIONAMENTO DI UN SISTEMA LINEARE

Documentazione esterna al software matematico sviluppato con MatLab

Sistemi lineari. Lucia Gastaldi. DICATAM - Sez. di Matematica,

Corso di Matematica per la Chimica

Note sull uso di R per l Algebra Lineare

Spazi lineari - PARTE II - Felice Iavernaro. Dipartimento di Matematica Università di Bari. 9 e 16 Marzo 2007

Autovalori e Autovettori

Esercitazione 1-I parte

Esercitazione 4: Vettori e Matrici

Equazione di Keplero (eqz. nonlineari).

Prendiamo in considerazione la matrice tridiagonale

Esempio. Approssimazione con il criterio dei minimi quadrati. Esempio. Esempio. Risultati sperimentali. Interpolazione con spline cubica.

Modelli matematici e realtà:

Metodi diretti per la soluzione di sistemi lineari

regola(1,[e,f],b) regola(2,[m,f],e) regola(3,[m],f) regola(4,[b,f],g) regola(5,[b,g],c) regola(6,[g,q],a)

La Programmazione Lineare

Corso di Analisi Numerica - AN1. Parte 2: metodi diretti per sistemi lineari. Roberto Ferretti

9 Metodi diretti per la risoluzione di sistemi lineari: fattorizzazione P A = LU

Problemi di accuratezza relativi alla soluzione di sistemi sottodeterminati. In onore di Alfonso Laratta

Corso di Analisi Numerica

Laboratorio Complementi di Ricerca Operativa DEI, Politecnico di Milano. Stima di parametri

Corso di Calcolo Numerico

Introduzione. Rappresentazione di numeri in macchina, condizion

Verifica della correttezza formale del numero di partita IVA

Crittografia. Primalità e Fattorizzazione. Corso di Laurea Specialistica. in Informatica

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Corso di Calcolo Numerico

Elementi Finiti: stime d errore e adattività della griglia

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

SPC e distribuzione normale con Access

Metodi Stocastici per la Finanza

x 1 + x 2 3x 4 = 0 x1 + x 2 + x 3 = 0 x 1 + x 2 3x 4 = 0.

MATLAB - Introduzione Enrico Nobile. MATLAB - Introduzione. E. Nobile - DINMA - Sezione di Fisica Tecnica, Università di Trieste

E naturale chiedersi alcune cose sulla media campionaria x n

Algoritmi e Strutture Dati

1 Serie di Taylor di una funzione

Laboratorio di Calcolo Numerico Laboratorio 11: Metodi diretti per la soluzione di sistemi lineari

METODI ITERATIVI PER SISTEMI LINEARI

Parte 2. Determinante e matrice inversa

Corso di Matematica per la Chimica

Funzioni inverse Simmetrie rispetto alla bisettrice dei quadranti dispari. Consideriamo la trasformazione descritta dalle equazioni : = y

Introduzione a Matlab

Indice. 1 Introduzione alle Equazioni Differenziali Esempio introduttivo Nomenclatura e Teoremi di Esistenza ed Unicità...

2.1 Definizione di applicazione lineare. Siano V e W due spazi vettoriali su R. Un applicazione

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

RICHIAMI SULLE MATRICI. Una matrice di m righe e n colonne è rappresentata come

Applicazione della tsvd all elaborazione di immagini

Esercitazione Informatica I AA Nicola Paoletti

Corso di Matematica per la Chimica

Appunti sull uso di matlab - I

VARIANZA CAMPIONARIA E DEVIAZIONE STANDARD. Si definisce scarto quadratico medio o deviazione standard la radice quadrata della varianza.

Lineamenti di econometria 2

TSP con eliminazione di sottocicli

Un modello matematico di investimento ottimale

SISTEMI LINEARI QUADRATI: METODI ITERATIVI

Appunti di Statistica Descrittiva

Corso di Geometria e Algebra Lineare - Sezione di Metodi Numerici

Ammortamento di un debito

Транскрипт:

1 Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari MATLAB:Condizionamento Sistemi Lineari. Innanzitutto vediamo qual è la funzione Matlab che ci permette di calcolare il numero di condizione di una matrice: >> help cond COND Condition number with respect to inversion. COND(X) returns the 2-norm condition number (the ratio of the largest singular value of X to the smallest). Large condition numbers indicate a nearly singular matrix. COND(X,P) returns the condition number of X in P-norm: NORM(X,P) * NORM(INV(X),P). where P = 1, 2, inf, or fro. See also RCOND, CONDEST, CONDEIG, NORM, NORMEST. >> [ 9 1 2

2 9 3 2 1 4 8 1 8 6 7] 9 1 2 9 3 2 1 4 8 1 8 6 7 >> cond(a) 23.5314 La matrice A ha numero di condizione piccolo quindi è ben condizionata. Ora costruiamo la matrice di Hilbert che è una classica matrice mal condizionata e ci calcoliamo il numero di condizione. L istruzione hilb(n) genera una matrice N per N con elementi 1/(i+j-1), >> hilb(4); >> cond(a) 1.5514e+4 >> hilb(5); >> cond(a) 4.7661e+5 Il numero di condizione cresce al crescere di N.

3 >> hilb(1); >> cond(a) 1.625e+13 Per N=1 la matrice diventa molto mal condizionata. Proviamo a risolvere un sistema lineare usando la function del Matlab, l algoritmo è stabile, ma la soluzione numerica è molto diversa da quella teorica. Costruiamoci un vettore con elementi tutti uguali ad 1 >> x = ones(1,1); >> b=a*x b = 2.929 2.199 1.632 1.3468 1.1682 1.349.937.8467.7773.7188 Il nostro sistema lineare ha termine noto b e soluzione teorica x, calcoliamo la soluzione numerica: >> xn = A\b xn = 1. 1. 1. 1.

4 1.1.9997 1.5.9995 1.2.9999 si vede chiaramente che l errore è molto alto,calcoliamo l errore relativo >> norm(xn-x, inf )/norm(x, inf ) 4.76e-4 Se moltiplichiamo la precisione di macchina per il numero di condizione otteniamo: >> format short e >> eps*cond(a) 3.5582e-3 Quando risolviamo il sistema perturbato: (A + δa)δx = δb δax l errore relativo verifica la seguente disuguaglianza: δx x ( A 1 A δb 1 A 1 δa b + δa ) A e la perturbazione relativa sui dati di input sarà collegata alla precisione di macchina perchè lavoriamo con numeri floating point, in questo caso l errore relativo sarà vicino a eps cond(a) e quindi molto grande, qualsiasi algoritmo utilizziamo per la soluzione. Calcoliamo il residuo

5 >> r=a*xn-b r = Il residuo ci dice che abbiamo calcolato una soluzione accurata, ma in realtà l errore è grande perchè a matrice è mal condizionata. Il condizionamento di una matrice può essere modificato dallo SCALING. Con tale metodo si va alla ricerca di due matrici diagonali D 1 e D 2 in modo da minimizzare K(D 1 AD 2 ). Esempio: consideriamo la seguente matrice: >> A=[1.e-1 9.e-1-4.e-1 9.e-1-4.e-1 1.e-1] 1.e-1 9.e-1-4.e-1 9.e-1-4.e-1 1.e-1 >> D1=diag([1 1 1e1]) D1 = 1.e+ 1.e+ 1.e+1

6 >> D1*A 1.e-1 9.e-1-4.e-1 9.e-1-4.e-1 1.e+ >> cond(a,1) 2.6e+1 >> cond(d1*a,1) 1.8e+1 >> D2=diag([1e1 1 1]) D2 = 1.e+1 1.e+ 1.e+ >> A*D2 1.e+ 9.e-1-4.e-1 9.e-1-4.e-1 1.e-1 >> cond(a*d2,1) 2.6e+1 >> cond(d1*a*d2,1) 3.8e+ Esempio: si consideri la matrice A e il vettore b dati da: >> format short e

7 >> A=[1.2969.8648;.2161.1441] 1.2969e+ 2.161e-1 8.648e-1 1.441e-1 >> b=[.8642;.144] b = 8.642e-1 1.44e-1 La soluzione esatta del sistema Ax = b è: >> x=a\b x = 2.e+ -2.e+ Sia ora >> xtilde=[.9911;-.487] xtilde = 9.911e-1-4.87e-1 e sia

8 >> r=a*xtilde-b r = -1.e-8 1.e-8 Questo valore di r fa intendere che xtilde è una buona approssimazione della soluzione esatta anche se in realtà non lo è. La matrice inversa di A è data da: >> inv(a) 1.441e+7-2.161e+7-8.648e+7 1.2969e+8 per cui >> cond(a,inf) 3.277e+8 Quindi A è mal condizionata.

9 Fattorizzazione di Cholesky. Costruiamo una funzione Matlab che ci permette di effettuare la fattorizzazione di Cholesky di una matrice A : function L = fchol(a) % % FATTORIZZAZIONE DI CHOLESKY % % Dati di input: % matrice quadrata % % Dati di output: % L = matrice triangolare inferiore % tale che L*L [n,m]=size(a); if n ~= m error( ERRORE: la matrice di input non e quadrata ) end L=zeros(n,n); for k=1:n if (A(k,k)-sum(L(k,1:k-1).^2))< error( ERRORE: la matrice di input non e definita positiva ) else L(k,k)=sqrt(A(k,k)-sum(L(k,1:k-1).^2)); for j=k+1:n L(j,k)=(A(k,j)-sum(L(k,1:k-1).*L(j,1:k-1)))/L(k,k); end end end

1 Esempio: >> A=[1 2 3;2 5 4;3 4 8] 1 2 3 2 5 4 3 4 8 >> L=fchol(A)??? Error using ==> fchol ERRORE: la matrice di input non e definita positiva >> A=[1-1 -1;-1 2 ;-1 3] 1-1 -1-1 2-1 3 >> L=fchol(A) L = 1-1 1-1 -1 1 >> A-L*L

11 >> help chol CHOL Cholesky factorization. CHOL(X) uses only the diagonal and upper triangle of X. The lower triangular is assumed to be the (complex conjugate) transpose of the upper. If X is positive definite, then R = CHOL(X) produces an upper triangular R so that R *R = X. If X is not positive definite, an error message is printed. [R,p] = CHOL(X), with two output arguments, never produces an error message. If X is positive definite, then p is and R is the same as above. But if X is not positive definite, then p is a positive integer. When X is full, R is an upper triangular matrix of order q = p-1 so that R *R = X(1:q,1:q). When X is sparse, R is an upper triangular matrix of size q-by-n so that the L-shaped region of the first q rows and first q columns of R *R agree with those of X. See also CHOLINC, CHOLUPDATE. Se A è definita positiva allora dopo l istruzione R = chol(a) la variabile R è la matrice triangolare superiore della fattorizzazione di Cholesky ed è tale che R R = A Infatti:

12 >> A=[1-1 -1;-1 2 ;-1 3] 1-1 -1-1 2-1 3 >> R=chol(A) R = >> A-R *R 1-1 -1 1-1 1 Costruima altre matrici di esempio usando la funzione gallery del Matlab. Esempio: >> gallery( minij,5) 1 1 1 1 1 1 2 2 2 2 1 2 3 3 3 1 2 3 4 4 1 2 3 4 5

genera una matrice simmetrica e definita positiva. Calcoliamo gli autovalori di A: 13 >> eig(a) 2.7155e-1 3.5325e-1 5.8296e-1 1.4487e+ 1.2344e+1 sono tutti positivi. Calcoliamo la fattorizzazione di Cholesky: >> R = chol(a) R = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> R *R 1 1 1 1 1 1 2 2 2 2 1 2 3 3 3 1 2 3 4 4 1 2 3 4 5 Costruimoci una matrice simmetrica ma non definita positiva:

14 >> [ 1 3 5; 3 1 2; 5 2 1] >> eig(a) 1 3 5 3 1 2 5 2 1-4.1284e+ -7.169e-1 7.8391e+ e proviamo ad eseguire la fattorizzazione di CHOLESKY: >> R = chol(a)??? Error using ==> chol Matrix must be positive definite. >> Si verifica un errore perche la fattorizzazione esiste solo per matrici definite positive.