Matrici: Definizioni e Proprietà.

Documenti analoghi
Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Appunti di Algebra Lineare. Antonino Salibra

Parte 2. Determinante e matrice inversa

MATRICI E DETERMINANTI

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

NUMERI COMPLESSI. Test di autovalutazione

Matematica con il foglio di calcolo

Vettori Algoritmi elementari di ordinamento

Pierangelo Ciurlia, Riccardo Gusso, Martina Nardon

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

Definizione Dati due insiemi A e B, contenuti nel campo reale R, si definisce funzione reale di variabile reale una legge f : A

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

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Pre Test Matematica

Protocollo dei saperi imprescindibili Ordine di scuola: professionale

Prodotto elemento per elemento, NON righe per colonne Unione: M R S

Esercitazione Informatica I AA Nicola Paoletti

Matematica B - a.a 2006/07 p. 1

Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 {

Studio di funzione. Tutti i diritti sono riservati. E vietata la riproduzione, anche parziale, senza il consenso dell autore. Funzioni elementari 2

4. Operazioni elementari per righe e colonne

Metodi diretti per la soluzione di sistemi lineari

Corso di Matematica per la Chimica

Algebra Lineare e Geometria

Universita degli Studi di Roma Tor Vergata Facolta di Ingegneria - Edile ed Edile-Architettura

Percorsi di matematica per il ripasso e il recupero

Parte 3. Rango e teorema di Rouché-Capelli

Dimensione di uno Spazio vettoriale

RELAZIONI BINARIE. Proprietà delle relazioni Data una relazione R, definita in un insieme non vuoto U, si hanno le seguenti proprietà :

CAPITOLO IV RISOLUZIONE DEI SISTEMI LINEARI COL METODO DEI DETERMINANTI

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

ESERCIZI DEL CORSO DI INFORMATICA

SESSIONE ORDINARIA 2007 CORSO DI ORDINAMENTO SCUOLE ITALIANE ALL ESTERO - AMERICHE

STRUTTURE ALGEBRICHE

RETTE, PIANI, SFERE, CIRCONFERENZE

METODI DI CONVERSIONE FRA MISURE

Corso di Visione Artificiale. Matlab per Visione. Samuel Rota Bulò

Compito di SISTEMI E MODELLI. 19 Febbraio 2015

Corso di Laurea in Ingegneria Informatica Analisi Numerica

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

Algoritmi di Ricerca. Esempi di programmi Java

Rette e piani con le matrici e i determinanti

Parte 6. Applicazioni lineari

Corso di Tecniche di Programmazione

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

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

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

APPLICAZIONI LINEARI

Università degli Studi di Roma Tor Vergata. Corso di Laurea in Ingegneria Meccanica

Programmazione dinamica

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

Alcuni Preliminari. Prodotto Cartesiano

Lezione 8. La macchina universale

(V) (FX) Z 6 è un campo rispetto alle usuali operazioni di somma e prodotto.

Com è noto, le operazioni inverse dell addizione e della moltiplicazione, la sottrazione e la

Esercizi su lineare indipendenza e generatori

Esempi di funzione. Scheda Tre

Rango: Rouchè-Capelli, dimensione e basi di spazi vettoriali.

Chiusura lineare. N.B. A può essere indifferentemente un insieme, finito o no, o un sistema. Es.1. Es.2

ITCS Erasmo da Rotterdam. Anno Scolastico 2014/2015. CLASSE 4^ M Costruzioni, ambiente e territorio

La selezione binaria

ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];

Categoria Student Per studenti degli ultimi due anni della scuola secondaria di secondo grado

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Ricerca Operativa 2. Introduzione al metodo del Simplesso

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Istituto Professionale di Stato per l Industria e l Artigianato Giancarlo Vallauri. Classi I C I G

Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014

Studente: SANTORO MC. Matricola : 528

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

10 - Programmare con gli Array

Informatica Teorica. Macchine a registri

Esercizi di programmazione in C

Corso di Fisica Generale 1

Introduzione al MATLAB c Parte 2

GEOMETRIA I Corso di Geometria I (seconda parte)

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

CORSO DI LAUREA IN INGEGNERIA.

NORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno

ALGEBRA: LEZIONI DAL 13 OTTOBRE AL 3 NOVEMBRE

MATEMATICA e COMPLEMENTI di MATEMATICA

ELEMENTI DI GEOMETRIA ANALITICA: LA RETTA.

ARRAY E STRINGHE. G. Frosini Slide 1

Condizionamento del problema

COEFFICIENTI BINOMIALI

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Parte 1. Vettori di bit - AA. 2012/13 1.1

0.1 Esercizi calcolo combinatorio

Matrice rappresent. Base ker e img. Rappresentazione cartesiana ker(f) + im(f).

Diagonalizzazione di matrici e applicazioni lineari

Esercitazioni (a cura di R. Basili)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

AA LA RICORSIONE

Banchi ortogonali Casi importanti

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

p k q n k = p n (k) = n 12 = 1 = ,1208. q = 1 2 e si ha: p 12 (8) =

Transcript:

1 Matrici: Definizioni e Proprietà. Definizione: Matrice Si dice Matrice reale A del tipo (m, n) l insieme di mxn numeri reali disposti su m righe ed n colonne come segue: a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn Definizione: Matrice NULLA Una matrice A si dice nulla se ha tutti gli elementi uguali a 0. La si indica sinteticamente anche con A=0 Definizione: Matrici dello stesso tipo Due matrici A e B si dicono dello stesso tipo se hanno lo stesso numero di righe e di colonne. Definizione: Matrici EGUALI Due matrici A e B si dicono eguali se hanno lo stesso numero di righe e di colonne e tutte le componenti corrispondenti identiche. La relazione di eguaglinza tra matrici gode delle proprietà Riflessiva A=A, Simmetrica se A=B segue B=A e Transitiva se A=B e B=C segue che A=C. Definizione: Matrice RIGA e Matrice COLONNA Si dice matrice (o vettore) riga/colonna una matrice con un unica riga/colonna, cioè una matrice del tipo (1, n)/(m, 1). Definizione: Matrice quadrata, diagonale principale e secondaria, elementi coniugati. Una matrice è quadrata se è del tipo (n,n); a 11 a 12 a 1n a 21 a 22 a 2n a n1 a n2 a nn Gli elementi a 11, a 22,, a nn costituiscono la diagonale principale, gli elementi a n1,, a 1n quella secondaria. Gli elementi a ik e a ki, con gli stessi indici ma in ordine inverso si dicono coniugati e i loro posti sono simmetrici rispetto alla diagonale principale. Definizione: Matrice Identità (o Unità) Una matrice Identità è una matrice quadrata del tipo (n,n) con tutti gli elemeti della diagonale principale uguali a 1 e tutti i restanti nulli. 1 0 0 0 1 0 0 0 1

2 Definizione: Matrice Trasposta Si dice Matrice trasposta di A del tipo (mxn) e la si indica con A T la matrice ottenuta dalla A trasformando ordinatamente le righe di A in colonne di A T che sarà del tipo (nxm) A= a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn A T = a 11 a 21 a m1 a 12 a 22 a m2 a 1n a 2n a mn Definizione: Somma di matrici La matrice somma di due matrici A e B dello stesso tipo mxn e una matrice C del tipo mxn ottenuta sommando gli elementi corrispondenti delle due matrici A e B. PROPRIETA delle matrici rispetto alla SOMMA L insieme delle matrici del tipo (m, n) formano un gruppo commutativo rispetto all operazione di somma: 1. La somma è una legge di composizione interna; 2. E associativa (A+B)+C = A+(B+C) 3. E commutatica A+B = B+A 4. Ha per elemento neutro la matrice Nulla A+ 0 = 0+A=A 5. Ogni matrice è dotata di un opposta ottenuta da A cambiando il segno di tutte le componenti e si indica con ( A) tale che A+(-A)=0 Vale inoltre la legge di semplificazione: se A+C = B+C segue che A=B Definizione: Prodotto di matrici La matrice prodotto di due matrici A e B è possibile solo se il numero di colenne della prima matrice coincide con il numero di righe della seconda. In altri termini A deve avere dimensione mxp, B pxn. Il prodotto è la matrice C del tipo (m,n) ottenuta moltiplicando i termini di ogni riga di A con i corrispondenti termini delle colonne di B e sommando i prodotti tra loro nel seguente modo: a 11 a 12 a 21 a 22 b 11 b 12 b 13 x b 21 b 22 b 23 = (a 11.b 11 +a 12.b 21 ) (a 11.b 12 +a 12.b 22 ) (a 11.b 13 +a 12.b 23 ) (a 21.b 11 +a 22.b 21 ) (a 21.b 12 +a 22.b 22 ) (a 21.b 13 +a 22.b 23 ) PROPRIETA delle matrici rispetto al PRODOTTO Se la prima matrice è del tipo (m, p) e la seconda (p, n) 1. il prodotto di due matrici è una legge di composizione interna; 2. E associativa (A*B)*C = A*(B*C)

3 INOLTRE NON vale la proprietà COMMUTATIVA A* B B * A (evidente se di ordini mxp e pxn con m diverso da n, ma non vale anche se le matrici sono nxn) NON vale la legge di annullamento del PRODOTTO A* B = 0 non segue A= 0 B = 0 1 0 0 0 0 0 A = 2 0 0 B 0 A* B 0 0 = 0 3 4 = = 1 0 0 0 NON vale la legge di semplificazione 1 0 1 2 1 2 1 2 1 2 A = 2 0 B C A* B 2 4 A* C 2 4 = 3 4 = 1 1 = = = 1 0 1 2 1 2 Vale la proprietà (A*B) T = B T *A T Vale la proprietà distributiva a sinistra del prodotto rispetto alla somma A*(B+C)=A*B+A*C Vale la proprietà distributiva a destra del prodotto rispetto alla somma (B+C)*A=B*A+C*A Definizione: Detrminate di una matrice quadrata Ad ogni matrice quadrata è associato un numero che si chiama determinante. Definizione: Minore complementare di un elemento di una matrice quadrata Si dice minore complementare di un elemento a ik di una matrice quadrata A di ordine n e lo si indica con M ik il determinante della matrice quadrata di ordine n-1 che si ottiene dalla A eliminando tutti gli elementi della riga e della colonna a cui appartiene a ik come segue: a 11 a 12 a 13 A= a 21 a 22 a 23 il minore compl. di a 11 è M 11 = a 31 a 32 a 33 a 22 a 23 a 32 a 33 a 11 a 12 a 13 a A= 21 a 22 a 23 il minore compl. di a 12 è [ ] a 31 a 32 a 33 M = 12 a 21 a 23 a 31 a 33 Definizione: Complemento algebrico di un elemento di una matrice quadrata Si dice complemento algebrico di un elemento a ik di una matrice quadrata A di ordine n e lo si indica con A ik il minore complementare M ik preceduto dal segno positivo se i+k è pari, negativo se dispari. A ik =(-1) i+k.m ik Il calcolo del determinante può essere definito ricorsivamente nel seguente modo: Il determinante di una matrice A del tipo(1,1) è il valore della sua unica componente e si indica con A = a ik

4 Il determinante di una matrice A del tipo(n,n) lo si ottiene come somma dei prodotti di ciascun elemento di una linea qualsiasi per il determinante del rispettivo complemento algebrico. Definizione: INVERSA di una matrice quadrata Si dice inversa di una matrice quadrata A, se esiste, la matrice A -1 tale che: A* A -1 = A -1 *A=I Teorema: di esistenza dell inversa di una natrice quadrata. Ogni matrice quadrata con determinante non nullo ammette un unica matrice inversa A -1. Regola per calcolare l inversa di una matrice: AIK Si determina una matrice [a ik ] tale che ogni elementoα IK = e si esegue la sua trasposta [a ki ]. In A altri termini A -1 =[ a ki ]. Esempio: 1 1 1 2 A= 1 2 3 3 A = 3 [a ik ]= A -1 3 3 =[a ki ]= -1 1 2 1 1 1 3 3 3 3 Verificare eseguendo A*A -1 =I Definizione: Matrice diagonale Si dice matrice diagonale una matrice quadrata che ha tutti i termini nulli tranne quelli della diagonale principale. Definizione: Matrice tringolare superiore (inferiore) Si dice matrice triangolare superiore (inferiore) una matrice quadrata che ha nulli i termini a ik=0 se i>k (a ik =0 se i<k) Mat. Diagonale a 0 0 11 a a a 0 a22 0 Mat. Tringolare sup. 0 a a 0 0 a 33 0 0 a 11 12 13 22 23 33 a 0 0 11 inferiore a21 a22 0 a31 a32 a 33 PROPRIETÀ dei determinati Una matrice quadrata e la sua trasposta hanno lo stesso determinante. Se una riga (o una colonna) di una matrice quadrata ha tutti gli elementi nulli il determinante è 0. Scambiando fra loro due righe (o due colonne) il determinante cambia di segno Se in una matrice quadrata due righe o due colonne hanno gli elementi proporzionali il determinante è nullo Se si moltiplicano gli elementi di una riga o colonna per una costante reale k, il determinante della matrice resta moltiplicato per k. Il determinante di una matrice non cambia se ad una linea si aggiuge una linea parallela moltiplicata per un numero k

5 Il determinanate della matrice prodotto è uguale al prodotto dei determinanti Una matrice con determinate nullo si dice singolare o degenere viceversa non singolare o regolare Il determinante di una matrice diagonale o triangolate è uguale al prodotto degli elementi della diagonale. PROPRIETA delle matrici quadrate di ordine n con determinate NON nullo rispetto al PRODOTTO L insieme delle matrici del tipo (n, n) formano un gruppo non commutativo rispetto all operazione di moltiplicazione: 3. il prodotto di due matrici del tipo (n,n) è una legge di composizione interna; 4. E associativa (A*B)*C = A*(B*C) 5. Ha per elemento neutro la matrice Identità A*I = I*A=A 6. Ogni matrice con determinante non nullo è dotata di un inversa che si indica con A -1 tale che A -1 *A=A*A -1 =I INOLTRE (per le matrici quadrate) NON vale la proprietà COMMUTATIVA NON vale la legge di annullamento del PRODOTTO se determinante di C non è nullo vale la legge di semplificazione: A*C = B*C segue che A=B Infatti C -1 esiste, quindi A*C*C -1 =B*C*C -1 da cui A*I=B*I da cui A=B Vale la proprietà (A*B) -1 =B -1 *A -1 Vale la proprietà distributiva a sinistra del prodotto rispetto alla somma A*(B+C)=A*B+A*C Vale la proprietà distributiva a destra del prodotto rispetto alla somma (B+C)*A=B*A+C*A

6 Progetto della classe matrici Sulla base delle proprietà elencate si potrebbe realizzare la seguente classe: Quali attributi: Quali costruttori: Quali metodi Statici e/o dinamici Matrice - double[][] A; +Matrice(double[][] a) ; +Matrice(double[]a, int c) ; +Matrice(int r, int c, double mn, double mx) ; +Matrice(int r, int c) ; +tostring() :String ; +sum(matrice b) : Matrice; +static sum(matrice a, b) : Matrice; +per(matrice b) : Matrice; +static per(matrice a, b) : Matrice; +opp() : Matrice; +det() : double; +inv() : Matrice; +mco() : Matrice; Esempio di metodo ricorsivo: metodo Fattoriale di N. Se N=0; fat(0)=1; (oppure N=1; fat(1)=1); Se N>1; fat(n)=n*fat(n-1); Ecco il metodo statico fattoriale in Java: Nella classe Mia codifico il metodo statico: public class Mia{ public static long fat(long n) { if (n==0) return 1; else return n*fat(n-1); esempio di invocazione nel main() long R=Mia.fat(7); System.out.println( R );

7 Soffermianoci sul determinante: Definizione ricorsiva di determinante Se n=1 segue det(a,1) = A[0][0]; se n>1 segue det(a,n) = n 1 0+ k ( 1) A[0][ k] det( A0 k, n 1) k = 0 ATTRIBUTO CLASSE: double[][] A; public double det() { // metodo dinamico della classe Matrice double d=0 ; if (A.length!= A[0].length) { System.out.print("Dim. Illegittima"); System.exit(1); else if (A.length==1) d=a[0][0] ; else for (int c=0 ; c<a.length; c++) if (c%2==0) d=d+a[0][c]*(mco(0,c)).det(); else d=d - A[0][c]*(mco(0,c)).det(); return d; public Matrice mco(int r, int c) { // restituisce la matrice coniugata di a(r,c) ; int R=A.length; int C=A[0].length; double[][] m=new double[r-1][c-1]; if (r<r && c<c) { for (int i=0; i<r; i++) { for (int j=0; j<c; j++){ if (i<r && j<c) m[i][j]=a[i][j]; else if (i>r && j>c) m[i-1][j-1]=a[i][j]; else if (i>r && j<c) m[i-1][j]=a[i][j]; else if (j>c && i<r) m[i][j-1]=a[i][j]; else { System.out.println("parametri illegittimi."); System.exit(1); Matrice Ris=new Matrice(m); return Ris; Esempio di invocazione nel main(); double[][] a={{1,3,{2, 5; Matrice M=new Matrice(a); double D=M.det(); System.out.println(D);

8 Sistemi lineari come modello applicativo per le matrici: Rappresentazione di un sistema con matrici. Un sistema lineare di n equazioni in n incognite a11x1 + a12 x2 +... + a1 nxn = b1 a21x1 + a22x2 +... + a2nxn = b2 (1)... an1x1+ an2x2 +... + annxn = bn Può essere rappresentato dalle seguenti matrci A a11 a12... a1 n a a... a............ an1 an2... ann 21 22 2n = X x1 x... xn 2 = B b1 b... bn 2 = A matrice dei coefficienti, X vettore colonna delle incognite, B Vettore colonna dei termini noti. Si nota che, sulla base delle proprietà del prodotto definito sulle matrici, il sistema (1) può essere rappresentato dal prodotto a11 a12... a1 n x1 b1 a21 a22... a 2n x 2 b 2 A*X=B infatti * = (2).................. an1 an2... ann xn bn La scrittura del sistema (1) è identica alla (2). Esempio di sistema lineare in due incognite : x + y = 3 1 1 (3) può essere scritto 1x 2y = 5 1 2 * x y = 3 5 1x 1y 3 = 1x 2y 5 che coincide con (3) eseguendo il prodotto si ottiene: Risoluzione del sistema con il metodo della matrice inversa. Ricordando le proprietà del prodotto e dell esistenza della matrice inversa si possono eseguire le seguenti deduzioni: 1 1 1 1 1 Se A 0 A quindi se A * X = B A A * X = A B I * X = A * B X = A * B Da queste deduzioni segue che la soluzione X di un sistema con determinante dei coefficienti A non nullo lo si ottiene moltiplicando l inversa A -1 per il vettore dei termini noti B.

9 Esempio soluzione sitema (3) x + y = 3 determinante A = 1 1 x 2y = 5 1 2 IK [ α ] IK 2 1 A 1 1 = = A 1 1 1 1 1 2 1 da cui [ α KI ] A = -1 matrice [ ] IK = = 1 1 α IK A = ovvero A da cui [ X ] 2 1 3 1 = * = 1 1 5 2 Algoritmo: Progettare un programma (e le classi necessarie) che risolva sistemi lineari nxn utilizzando il metodo dell inversa. Indicazioni per un prototipo della classe Sistema: Sistema - MC, MN, MCO :Matrice; + Sistema(a[][], b[]:double) + Sistema(a, b:matrice) + tostring() : String ; + solinversa() : Matrice ; (sai costruire un metodo per eseguire il prodotto di matrici? qual è l algoritmo migliore per determinare l inversa di una matrice? ) Risoluzione del sistema con il metodo di Cramer. Teorema di Cramer: Se il determinante A dei coefficienti del sistema è diverso da zero, il sistema ammette una ed una sola soluzione data da D1 D2 Dn x1 = x2 =... xn = A A A Dove D i rappresentano i determinanti che si ottengono dalla matrice dei coefficienti sostituendo la colonna i-esima con la colonna dei termini noti B. Esempio soluzione sitema (3) x + y = 3 A = 1 1 x 2y = 5 1 2 = -1 D 1 = 3 1 5 2 = 1 D = 2 1 3 1 5 = 2 1 2 x = = 1 y = = 2 1 1 Algoritmo: Progettare un programma (e le classi necessarie) che risolva sistemi lineari nxn utilizzando il metodo di Cramer. Indicazioni per un prototipo della classe Sistema:

10 Sistema - MC, MN, MCO :Matrice; + Sistema(a[][], b[]:double) + Sistema(a, b:matrice) - sost(i : int) :Matrice + cramer() : Matrice ; + tostring() :String ; (sai costruire un metodo per calcolare il determinante di una matrice qual è il modo più efficiente? Sai costruire un metodo che sostituisca un vettore colonna di una matrice A nxn con il vettore dei termini noti B? ) Se non ci occupiamo dell EFFICIENZA il metodo di Cramer potrebbe essere: public Matrice cramer() { int N=MC.length; double D=MC.det() ; // determinante dei coefficienti double x[]=new double[n] ; // vettore delle soluzioni double dris[]=new double[n] ; // vettore dei determinanti ott. Sost. I termini noti. double tutti=0; // se tutti i dris[]=0, tutti=0; for (int i=0 ; i<n ; i++){ Matrice M=MC.sost(i); dris[i]=m.det(); tutti=tutti+math.abs(dris[i]); if (D!=) { for (int i=0 ; i<n ; i++) x[i]=dris[i]/d; else if (tutti==0) { System.out.println( Sistema indeterminato. ); System.exit(1); else { System.out.println( Sistema impossibile. ); System.exit(1); Matrice R=new Matrice(x,1); Return R; il main(), farebbe uso delle classi Matrice, Sistema e invocherebbe: double[][] a={{1,2,3,{1,0,1,{0,4,-2 ; double[] b={4,2,1 ; Sistema S=new Sistema(a,b); System.out.println(S); Matrice r=s.cramer(); System.out.println( r) ;

11 Risoluzione del sistema con il metodo della matrice Triangolare Superiore (Gauss). Regola di costruzione della matrice triangolare superiore: Si scrive la matrice dei coefficienti e si aggiunge ad essa la colonna dei termini noti a11 a12... a1 n b1 a21 a22... a2n b 2............... an1 an2... ann bn 1. SE a 11 = ZERO ALLORA Si scambia la 1 riga con una qualsiasi riga con il primo elemento diverso da ZERO a21 2. Si moltiplicano tutti termini della 1 riga per e si sottrae la riga così ottenuta a dalla seconda a11 a12... a1 n b1 * * * 0 a22... a2n b 2............... an1 an2... ann bn 3. Si ripete in generale la moltiplicazione della 1 riga per il termine e si sottrae la a11 riga così ottenuta dalla k.esima riga. Si ottiene: a11 a12... a1 n b1 * * * 0 a22... a2n b 2............... * * * 0 an2... ann bn * Si ripetono le operazioni (1) (2)(3) per la sottomatrice che inizia con a 22 e per le sottomatrici a* kk successive ottenendo una matrice triangolare superiore: 11 a K 1 a11 a12... a1 n b1 * * * 0 a22... a2n b 2............... ** ** 0 0... ann bn Si ricava x n e si sostituisce a ritroso per ricavare le altre incognite. ** bn xn = ** ann Esempio soluzione sitema (3) x + y = 3 1 1 3 inizio x 2y = 5 1 2 5

12 1 1 3 0 1 2 y 2 = = 2 1 sostituendo 2 nella 1 riga (1 1*2 3) e ricavando si ha x=3-2=1 Algoritmo: Progettare un programma (e le classi necessarie) che risolva sistemi lineari nxn utilizzando il metodo di Gauss. Indicazioni per un prototipo della classe Sistema: Sistema - MC, MN, MCO :Matrice; + Sistema(a[][], b[]:double) + Sistema(a, b:matrice) + gauss() : Matrice ; ((1)sai costruire un metodo per ottenere da una matrice COMPLETA (n,n+1) una matrice triangolare superiore, applicando correttamente le proprietà? (2) Sai sostituire a ritroso da una matrice triangolare superiore per ottenere le soluzioni? ) (1) in quale classe collocare il metodo (MATRICE o SISTEMA) (?).triangolagauss():matrice; (2) IDEM (?).sostritroso() : Matrice;

13 Risoluzione del sistema con il metodo della matrice Diagonale (Gauss-Jordan). Regola di diagonalizzazione: Si scrive la matrice dei coefficienti e si aggiunge ad essa la colonna dei termini noti a11 a12... a1 n b1 a21 a22... a2n b 2............... an1 an2... ann bn 1. SE a 11 = ZERO ALLORA Si scambia la 1 riga con una qualsiasi riga con il primo elemento diverso da ZERO ALTRIMENTI Si divide la 1 riga per a 11 * * * 1 a12... a1 n b 1 a21 a22... a2n b2............... an1 an2... ann bn 2. Si moltiplicano tutti termini della 1 riga per a 21 e si sottrae la riga così ottenuta * * * 1 a12... a1 n b 1 * * * 0 22... 2 2 dalla seconda a a n b............... an1 an2... ann bn 3. Si ripete in generale la moltiplicazione della 1 riga per il termine a K1 e si sottrae la riga così ottenuta dalla k.esima riga. Si ottiene: * * * 1 a12... a1 n b 1 * * * 0 a22... a2n b2............... * * * 0 an2... ann bn * Si ripetono le operazioni (1) (2)(3) per la sottomatrice che inizia con a 22 e per le sottomatrici a* kk successive e precedenti ottenendo una matrice diagonalizzata: ** 1 0... o b 1 ** 0 1... 0 b2............... ** 0 0... 1 bn L ultima colonna contiene il vettore delle soluzioni X Esempio soluzione sitema (3) x + y = 3 1 1 3 inizio x 2y = 5 1 2 5 1) Si divide la prima riga per a 11 =1 (nulla cambia). 2) Si moltiplica la 1 riga cosi ottenuta per a 21 = 1 ottenendo (-1-1 3).

14 3) La si sottrae dalla seconda ottenedo 1 1 3 0 1 2 1) Si divide la seconda riga per a 22 = 1, e si ottiene (0, 1, 2). 2) Si moltiplica la seconda riga per a 12 =-1 (nulla cambia). 3) Si sottrae la seconda riga cosi ottenuta (0, 1, 2) dalla prima ottenedo (1 0 1). La matrice diagonalizzata sarà 1 0 1 0 1 2 Le soluzioni sono nella terza colonna x=1 y=2. Algoritmo: Progettare un programma (e le classi necessarie) che risolva sistemi lineari nxn utilizzando il metodo di Gauss-Jordan. Indicazioni per un prototipo della classe Sistema: Sistema - MC, MN, MCO :Matrice; + Sistema(a[][], b[]:double) + Sistema(a, b:matrice) + gaussjordan() : Matrice ((1) sai costruire un metodo per diagonalizzare una matrice (n,n+1) applicando correttamente le proprietà? (2)Successivamente sai costruire un metodo per estrarre la colonna delle soluzioni?) 1) in quale classe collocare il metodo (MATRICE o SISTEMA) (?).diagonalegaussjordan():matrice; 2) IDEM (?).getcol(int i) : Matrice;

15 Complessità di calcolo e instabilità dei sistemi. La complessità Definizione : Si chiama complessità di calcolo in tempo di un algoritmo applicato a n dati e lo si indica con O(n) il numero di operazioni che è necessario eseguire perché l algoritmo termini. Tale numero deve essere espresso in funzione di n. La complessità viene distinta in complessità minima (caso migliore) complessità massima (caso peggiore) e complessità media (caso medio) Esempi: Se si costruisce un algoritmo di ricerca di un elemento su un array di n componenti la complessità in tempo sarà: minima O(n)=1 (eseguo solo una operazione di confronto se l elemento cercato è il primo) massima O(n)=n (eseguo n confronti se l elemento cercato è l ultimo) media O(n)=n/2 (se eseguo la ricerca per distribuzioni casuali avrò mediamente n/2 confronti) Se si costruisce un algoritmo di ordinamento bubble sort che si interrompe se dopo n-1 confronti non ho eseguito scambi la complessità in tempo sarà: minima O(n)=n-1 confronti) + 0 scambi (se i dati sono ordinati) massima O(n)=(n-1)+(n-2)+ +(1) (confronti) + (n-1)+(n-2)+ +(1) (scambi) =(n)(n-1) circa n 2 operazioni (se i dati sono in ordine inverso) media O(n)=sarà un valore mediano ma sempre dipendente da n 2 (se eseguo la ricerca per distribuzioni casuali) Conclusioni: Gli algoritmi con complessità proporzionale a n oppure n*log(n) sono buoni algoritmi.se la complessità di calcolo è proporzionale a (n 2 ) o superiore, al crescere di n il tempo di calcolo può diventare molto pesante. Se l algoritmo esegue operazione aritmetiche gli errori di arrotondamento possono diventare molto sensibili. Metodi di soluzione dei sistemi e complessità di calcolo: Il calcolo del determinante di una matrice, facendo uso della definizione ricorsiva, ha una elevata complessità (e quindi tempo elevato ed errori sensibili al crescere di n). Operazioni Somme + prodotti + n*(op_minore) Detrminante n=2 (2-1)+2+2*0=3 2!=2 n=3 (3-1)+3+3*3=14 3!=6 n=4 (4-1)+4+4*14 =63 4!=24 n=5 (5-1)+5+5*63=324 5!=120 n=6 (6-1)+6+6*324=1955 6!=720 Il metodo della matrice inversa deve fare i conti con il calcolo di molti determinanti (necessari per trovare l inversa) quindi, in assenza di metodi diversi (più rapidi) per invertire una matrice, dobbiamo soprassedere. Per la complessità di calcolo è opportuno scartare anche Cramer. E sempre necessario calcolare n+1 determinanti.

16 La complessità di calcolo del metodo di Gauss è quella preferibile. Anzi, con il metodo di Gauss si può anche trovare il determinante di una matrice abbassando notevolmente la complessità di calcolo rispetto all utilizzo della definizione ricorsiva di determinante. Il metodo di Gauss-Jordan esegue un numero circa doppio di operazioni rispetto al metodo di Gauss ma è molto utile per calcolare l inversa di una matrice perché riduce notevolmente la complessità di calcolo rispetto alla definizione matematica di inversa. L instabilità Anche utilizzando il metodo di Gauss si ottengo a volte risultati errati ovvero molto distanti da quelli corretti. In questi casi si dice che il sistema è instabile. Un sistema è instabile se ha un determinante molto prossimo allo ZERO. Non sempre si riesce ad evitare tale instabilità anche se parte di questa può essere annullata attraverso i metodi di Gauss e GausJordan calcolando preventivamente il determinante del sistema. Conclusioni: Per ragioni di complessità di calcolo si scarta il metodo di Cramer perché è sempre necessario calcolare n+1 determinanti. Rimangono accettabili nell ordine i metodi di Gauss, Gauss-Jordan e Inversa (nell ultimo caso solo se si determina A -1 con il metodo di Gauss-Jordan). Tecnica per determinare la Matrice Inversa (metodo di Gauss-Jordan) Il procedimento illustrato ha il pregio di abbassare la complessità di calcolo insita nella determinazione della matrice inversa, che per la definizione matematica, implica il calcolo di molti determinanti. Partendo dalla matrice (3,3) seguente: 1 1 1 A = 1 1 2 1 1 1 Si procede costruendo la matrice (3, 6) che contiene a destra la matrice identità: 1 1 1 1 0 0 M = 1 1 2 0 1 0 1 1 1 0 0 1 Ora si opera per ottenere a sinistra la matrice Identità, al termine dei calcoli la matrice (3,3) di destra conterrà la matrice inversa di quella di partenza. Ciclo di Colonna (colonna uno): 1-1 -1 1 0 0 1 1 2 0 1 0 1 1 1 0 0 1 Si fa perno su a 00 per rendere nulli tutti gli elementi sotto di esso. 1 operazione: se a 00 fosse ZERO occorre scambiare tutta la riga con una riga il cui primo elemento sia diverso da ZERO. 2 operazione: si normalizza la riga uno (R 0 ) dividendo tutti gli elementi per a 00 in modo che a 00 divenga 1 (in questo caso lo è già)

17 Ciclo di riga: (Seconda riga) 3 operazione: si ottiene la nuova seconda riga( R 1 )=R 1 -R 0 *a 10 1-1 -1 1 0 0 0 2 3-1 1 0 1 1 1 0 0 1 Ciclo di riga: (Terza riga) 4 operazione: si ottiene la nuova terza riga( R 2 )=R 2 -R 0 *a 20 1-1 -1 1 0 0 0 2 3-1 1 0 0 2 2-1 0 1 Ciclo di Colonna (colonna due): 1-1 -1 1 0 0 0 2 3-1 1 0 0 2 2-1 0 1 Si fa perno su a 11 per rendere nulli tutti gli elementi sotto e sopra di esso. 1 operazione: se a 11 fosse ZERO occorre scambiare tutta la riga con una riga il cui secondo elemento sia diverso da ZERO. 2 operazione: si normalizza la riga due (R 1 ) dividendo tutti gli elementi per a 11 in modo che a 11 divenga 1 (in questo caso si divide per 2) 1-1 -1 1 0 0 0 1 3/2-1/2 1/2 0 0 2 2-1 0 1 Ciclo di riga: (Terza riga) 3 operazione: si ottiene la nuova terza riga( R 2 )=R 2 -R 1 *a 21 1-1 -1 1 0 0 0 1 3/2-1/2 1/2 0 0 0-1 0-1 1 Ciclo di riga: (Prima riga) 4 operazione: si ottiene la nuova prima riga( R 0 )=R 0 -R 1 *a 21 1 0 1/2 1/2 1/2 0 0 1 3/2-1/2 1/2 0 0 0-1 0-1 1 Ciclo di Colonna (colonna tre): 1 0 1/2 1/2 1/2 0 0 1 3/2-1/2 1/2 0 0 0-1 0-1 1 Si fa perno su a 22 per rendere nulli tutti gli elementi sopra di esso. 1 operazione: se a 22 fosse ZERO il determinante sarebbe ZERO e il procedimento FINITO. (NON è possibile calcolare l inversa di un Determinante NULLO) 2 operazione: si normalizza la riga tre (R 2 ) dividendo tutti gli elementi per a 22 in modo che a 22 divenga 1 (in questo caso si divide per -1) 1 0 1/2 1/2 1/2 0 0 1 3/2-1/2 1/2 0 0 0 1 0 1-1

18 Ciclo di riga: (Seconda riga) 3 operazione: si ottiene la nuova seconda riga( R 1 )=R 1 -R 2 *a 12 1 0 1/2 1/2 1/2 0 0 1 0-1/2-1 3/2 0 0 1 0 1-1 Ciclo di riga: (Prima riga) 4 operazione: si ottiene la nuova prima riga( R 0 )=R 0 -R 2 *a 02 1 0 0 1/2 0 1/2 0 1 0-1/2-1 3/2 0 0 1 0 1-1 Si è ottenuta la matrice identità e il procedimento ha termine con il seguente risultato: 1 1 0 2 2 1 1 3 A = 1 2 2 0 1 1