SlideShare una empresa de Scribd logo
1 de 18
Appunti d’esame:
le matrici e matlab                                                                                 Visto su: Profland



       Appunti di Elaborazione automatica dei dati:
                  le Matrici ed il Matlab


Si ricorda che:

•   l'uso degli appunti qui presenti è consentito per solo uso personale e di studio;
•   la consultazione è gratuita ed ogni forma atta a ricavarne lucro è vietata!
•   gli appunti sono fatti da studenti che non possono assumersi nessuna responsabilità in merito;
•   il materiale qui presente non è sostitutivo ma complementare ai libri di testo:
         - devi (e ti consiglio) di consultare e comprare i libri di testo;
•   il materiale qui presente è distribuito con licenza Creative Commons




Ti ricordo che se vuoi contribuire mandando degli appunti o quant'altro possa essere utile ad altri puoi farlo
inviando il materiale tramite:
                                         http://profland.altervista.org/mail.htm


Spero che ciò che hai scaricato ti possa essere utile.


Profman


                          Il file è stato scaricato/visualizzato in forma gratuita da Profland:
                                               http://profland.altervista.org


                                                   sezione Profstudio
                                http://profland.altervista.org/profstudio/profstudio.htm

                                            oppure da qualche mirror, come:

                                      www.profland.cjb.net www.profland.135.it


                                       o dalla pagina dedicata su slideshare.net:
                                              www.slideshare.net/profman




                                                                                                                 1/18
Appunti d’esame:
le matrici e matlab                                                           Visto su: Profland


                                     Le Matrici
                              (autore: jiji from naples)

Riconsideriamo il sistema:
                                          ax + by = c
                                          '     '     '
                                         ax+ by = c
Questo è un sistema 2×2, cioè con 2 equazioni in due incognite x ed y.
In generale, un sistema sarà n×m, cioè con n equazioni in m incognite. Infatti, in
generale, non è detto che il numero di equazioni debba essere uguale al numero di
incognite; in tal caso si parla di sistema rettangolare. Un sistema rettangolare avrà
una rappresentazione del tipo:
                              a11x1 + a12 x2 +  + a1m xm = b1
                              a x + a x + + a x = b
                              21 1     22 2          2m m     2
                             
                                   
                              an1x1 + an 2 x2 +  + anm xm = bn
                             
Come vedete per i coefficienti a si usa una notazione matriciale, mentre le incognite
x sono distinte dal pedice. Ci sono n equazioni cioè n righe ed m incognite cioè m
colonne. Per cui i coefficienti a costituiscono una matrice n×m che possiamo indicare
con A e chiamare matrice dei coefficienti, le incognite x costituiscono un vettore che
indicheremo con x e così pure i termini noti b costituiscono un vettore che
indicheremo con b . Il sistema precedente, allora, può essere scritto sinteticamente in
forma matriciale così:
                                         Ax = b
Noi, per ora, ci occuperemo solo di sistemi quadrati n×n, in cui cioè il numero delle
equazioni è uguale al numero delle incognite.
Nel caso del sistema 2×2 visto all'inizio, la matrice dei coefficienti ed i vettori delle
incognite e dei termini noti si possono scrivere così:
                          a b                x                      c
                      A=  '
                          a b' 
                                          x=  
                                               y                 b =  '
                                                                       c
                                                                    
Col computer scriveremo i sistemi in forma matriciale, la matrice ed i vettori li
inseriremo con le regole di Matlab, faremo dei calcoli per ottenere il vettore delle
soluzioni. La soluzione, quindi, è un vettore; i numeri che lo costituiscono sono le
componenti del vettore.
Il problema, comunque, può ammettere:
• un'unica soluzione,
• nessuna soluzione,

                                                                                           2/18
Appunti d’esame:
le matrici e matlab                                                         Visto su: Profland

• infinite soluzioni.
Ogni sistema di equazioni può essere rapportato ad un problema geometrico. Nel caso
2×2 il sistema rappresenta l'intersezione fra due rette e noi sappiamo che due rette
possono:
• intersecarsi in un sol punto (unica soluzione),
• non intersecarsi mai, perché sono parallele (nessuna soluzione),
• intersecarsi in tutti i punti, perché sono sovrapposte, cioè coincidono (infinite
   soluzioni).
Se scriviamo il sistema in forma matriciale e se la matrice dei coefficienti è
invertibile, vuol dire che esiste la matrice inversa A-1. Per cui moltiplicando per A-1
primo e secondo membro dell'espressione A x = b otteniamo:
                                    A− 1 A x = A− 1 b
poiché sappiamo che A-1A=I cioè è la matrice identica che moltiplicata per il vettore
x fa x, possiamo scrivere che:
                                       x = A− 1 b
Quindi, dal punto di vista formale qualunque sistema si risolve semplicemente
moltiplicando la matrice inversa dei coefficienti per il vettore dei termini noti. Tale
espressione fornirà un'unica soluzione, perché come sapete se la matrice inversa
esiste essa è unica! Può succedere che la matrice inversa non esista ed, in tal caso, il
sistema potrebbe non ammettere soluzione o avere infinite soluzioni a seconda di
come è fatto il vettore dei termini noti b .
Quello che stiamo dicendo non è un concetto nuovo, perché è simile a quello che si fa
per risolvere un'equazione di primo grado:
                                           ax=b
la soluzione di questa equazione è:
                                               b
                                          x=
                                               a
che si può anche scrivere come:
                                          x=a-1b
in tal caso, come ricordate, la soluzione esisteva ed era unica, purché "a" fosse
diversa da zero! Se, invece, a è uguale a zero l'equazione è del tipo:
                                           0x=b
in tal caso se b è diverso da zero, tale equazione non ammette nessuna soluzione;
mentre se b è uguale a zero, tale equazione ammette infinite soluzioni. Alla luce di
questo possiamo dire che i sistemi di equazioni non sono che una semplice
generalizzazione delle equazioni di primo grado.
Nel caso dei sistemi, però, perché esista soluzione non basta dire che la matrice dei
coefficienti A deve essere diversa dalla matrice nulla, cioè quella fatta di tutti zero.
Infatti, sappiamo che la condizione di esistenza della matrice inversa è una questione
più ampia. Le matrici che non ammettono inversa sono tutte quelle che hanno
determinante nullo. Pertanto, per i sistemi per i quali il determinante di A è diverso
da zero, esiste la matrice inversa A-1 ed esiste un'unica soluzione. Invece, per i sistemi

                                                                                         3/18
Appunti d’esame:
le matrici e matlab                                                       Visto su: Profland

per i quali il determinante di A è zero potremo dire che o non esiste nessuna soluzione
o esistono infinite soluzioni a seconda di come è fatto il vettore b dei termini noti.
Ricordiamo che per decidere se ci sono o non ci sono soluzioni, si può anche
confrontare il rango della matrice A con quello della matrice che si ottiene prendendo
tutte le colonne di A ed affiancando in fondo a destra il vettore colonna b dei termini
noti:
                                a11    a12     a1n    b1 
                                                          
                                a 21   a 22    a 2n   b2 
                                                     
                                                          
                               a       an2     a nn   bn 
                                n1                        
Se i due ranghi sono uguali il sistema ammette soluzione, se sono diversi le soluzioni
non ci sono! Per indicare questa matrice userò la notazione [A , b] tipica di Matlab.
In passato voi già avete affrontato questo problema e l'avete risolto facendo degli
esercizi con carta e penna, noi ora ci proponiamo di risolverlo servendoci di Matlab.
Per inserire la matrice dei coefficienti A in Matlab si useranno le regole che
conoscete:
                                       A=[………]
Così pure per il vettore dei termini noti che è un vettore colonna:
                                               
                                           b=  
                                               
Attenzione che se lo scrivete come vettore riga Matlab si offende!
Poi, possiamo controllare se esiste o non esiste l'inversa, calcolando il determinante
di A. Questo Matlab lo fa velocemente e senza problemi. C'è una funzione che ha
come input la matrice e come output produce il determinante. La funzione si chiama
"det". Per cui se in Matlab introduciamo prima una matrice A e poi scriviamo det (A)
lui calcola il determinate e fa uscire un numero. Se questo numero è diverso da zero
c'è l'inversa, se questo numero è zero vuol dire che non esiste l'inversa di A. Se
l'inversa esiste la posso calcolare con un'altra funzione di Matlab che si chiama "inv".
Per cui se in Matlab scriviamo inv (A) lui calcola l'inversa di A e fa uscire una
matrice. Ciò fatto, la soluzione si ottiene semplicemente moltiplicando questa matrice
inversa, così ottenuta, per il vettore colonna dei termini noti. Quindi, dal punto di
vista matematico non c'è alcun problema.
Se il determinante di A è uguale a zero, per capire se non ci sono soluzioni o ce ne
sono infinite dobbiamo confrontare il rango della matrice A con quello della matrice
che si ottiene aggiungendo ad A il vettore dei termini noti b . Per calcolare il rango
possiamo utilizzare un'altra funzione di Matlab che si chiama "rank". Se scriviamo
rank (A), Matlab fornisce un numero che rappresenta il rango di A. Se chiamo C la
matrice ottenuta aggiungendo ad A il vettore dei termini noti b e ne calcolo il rango
con Matlab scrivendo rank (C), otterrò un altro numero che rappresenta il rango di C.
Confronto i due numeri così ottenuti e so che se sono uguali ci sono soluzioni, mentre
se sono diversi non ci sono soluzioni. Se non ci sono soluzioni ho finito, perché il
sistema non ammette soluzioni. Se, invece, ci sono soluzioni non ho finito perché le
devo trovare, vediamo come si fa al livello concettuale.
                                                                                       4/18
Appunti d’esame:
le matrici e matlab                                                      Visto su: Profland

Torniamo a scrivere:
                                       Ax = b
dove A è una matrice quadrata n×n ed abbiamo detto che siamo nel caso in cui il
determinante di A è nullo:
                                  det (A) = 0

Inoltre, abbiamo detto che se il rango di A è minore di quello della matrice [A , b]
ottenuta aggiungendo ad A il vettore dei termini noti b , non ci sono soluzioni ed ho
finito:
                               rank (A) < rank (A , b)

Se, invece, trovo che i due ranghi sono uguali:

                                rank (A) = rank (A , b)

so che ci sono soluzioni, vediamo come possiamo trovarle.
Innanzi tutto, diciamo che la soluzione è il vettore x i cui componenti sono n. Il
rango rappresenta il numero di colonne linearmente indipendenti. Poiché A è una
matrice quadrata con n colonne e siccome il determinante di A è uguale a zero ciò
vuol dire che non tutte le colonne sono linearmente indipendenti; perciò, il rango non
può essere n, deve essere un numero più piccolo di n. Cioè, le colonne di A non sono
tutte linearmente indipendenti, ma ce ne saranno alcune che sono linearmente
dipendenti dalle altre.
Ad esempio, se il rango di A è 100 mentre la matrice A ha 101 colonne, questo
significa che di queste 101 colonne solo 100 sono indipendenti, mentre una è
dipendente dalle altre.
Se il rango fosse 90, ciò significherebbe che delle 101 colonne che compongono la
matrice A, 90 sono indipendenti e le altre 11 sono dipendenti. Concettualmente ciò
vuol dire che le incognite relative a quelle 11 colonne possono essere assegnate in
maniera arbitraria. Assegnate queste 11 incognite in maniera arbitraria, poi calcolo le
rimanenti 90 ed ottengo una possibile soluzione. Se assegno le 11 incognite in modo
diverso otterrò un'altra soluzione e così via. Si scrive ∞11 e si dice che esistono
"infinito a 11" modi di risolvere il sistema. Allora, a livello concettuale se la mia
matrice A ha 101 colonne ed ha rango 90, so che ci sono 11 colonne linearmente
dipendenti; quello che devo fare è trovarle!
Concettualmente è chiaro, poi bisogna vedere in pratica come si fa a trovarle!
L'idea concettuale è che io ho una certa matrice fatta da tante colonne, alcune di
queste sono dipendenti. Poiché, io posso scambiare la disposizione delle colonne
senza alterare la matrice, immaginiamo di portare le colonne dipendenti tutte in fondo
a destra e di lasciare quelle indipendenti tutte a sinistra:




                                                                                      5/18
Appunti d’esame:
le matrici e matlab                                                       Visto su: Profland


                                            n colonne

                                   Colonne         Colonne
                                 indipendenti     dipendenti




Tutta la matrice A aveva n colonne ed n righe perché era quadrata, ma il pezzo di
matrice formato dalle colonne indipendenti non è più una matrice quadrata, perché ha
un numero di colonne minore di n ed un numero di righe ancora pari ad n. Dalla
teoria sappiamo, però, che il numero di colonne linearmente indipendenti è
sempre uguale al numero di righe linearmente indipendenti! Cioè, dalla teoria
sappiamo che il rango è un numero che rappresenta contemporaneamente sia il
numero di colonne sia il numero di righe linearmente indipendenti! Nel nostro
esempio vuol dire che se ci sono 11 colonne dipendenti ci saranno anche 11 righe
dipendenti. Che vuol dire che una riga è dipendente? Una riga è una delle equazioni
del sistema, dire che è dipendente, vuol dire che essa non fornisce nessuna
informazione utile, è in più, è ridondante. Perciò si può cancellare! Tutte le righe
dipendenti si possono portare in basso e si possono cancellare, perché tanto non
servono. Otterremo così ancora una matrice quadrata, più piccola di n×n in cui tutte
le colonne e tutte le righe sono linearmente indipendenti, per cui il suo determinante è
necessariamente diverso da zero. Ciò vuol dire che tale matrice può essere invertita.
                                          n colonne

                                 Matrice con
                                colonne e righe
                                     tutte
                                 indipendenti




Le colonne dipendenti che ho messo in fondo a destra posso portarle fuori dalla
matrice dei coefficienti e metterle nel termine noto del sistema, perché sono
valori che posso assegnare arbitrariamente. Questa è la strategia che si usa. Per
trovare la sottomatrice formata da tutte colonne e righe linearmente indipendenti,
devo andare a valutare le varie sottomatrici estraibili da A, finché non ne trovo una
che ha determinante diverso da zero. Quando l'ho trovata so che questa sottomatrice è

                                                                                       6/18
Appunti d’esame:
le matrici e matlab                                                      Visto su: Profland

quella su cui devo operare. Ovviamente questa ricerca è possibile su una matrice di
piccole dimensioni, mentre diventa sempre più difficile man mano che crescono le
dimensioni. Quindi, anche se a livello concettuale abbiamo chiaro cosa dobbiamo
fare, il problema resta complesso! Se la matrice fosse molto grande, le possibili
sottomatrici da indagare sarebbero talmente tante che trovare quella giusta sarebbe
un'impresa lunga e complessa. Comunque, si potrebbe lasciare che un calcolatore
trovi tale matrice, è solo una questione di tempo!
Fortunatamente, noi risolveremo solo sistemi che nascono da qualche modello
economico-finanziario progettato per risolvere situazioni concrete. Un modello
viene progettato per risolvere un problema; pertanto, un modello per essere utile deve
necessariamente portare ad un sistema che ammetta una soluzione, cioè deve portare
ad una matrice in cui il determinante sia diverso da zero. Non avrebbe senso costruire
un modello che non porta ad alcuna soluzione! Quindi, noi ci troveremo sempre in
situazioni in cui il determinante è diverso da zero.
Solo, per esercizio, talvolta risolveremo qualche situazione in cui c'è una matrice con
determinante nullo. E vi ho detto come procedere a livello matematico. Fin d'ora,
però, vi deve essere chiaro che quando tratteremo matrici legate a modelli
economico-finanziari, esse avranno sempre determinante non nullo.
Adesso, ritorniamo al discorso di partenza.
Abbiamo il nostro sistema:
                                       Ax = b

e supponiamo che il determinante sia diverso da zero:

                                     det (A) ≠ 0

In queste condizioni, abbiamo detto che la soluzione esiste ed è unica e si può
scrivere così:

                                      x = A− 1 b

Abbiamo detto che, assegnata la matrice A, possiamo calcolare con Matlab il
determinante. Se esso è diverso da zero possiamo calcolare la matrice inversa A -1 e
moltiplicarla per il vettore b ottenendo il vettore x .
Tutto ciò sembra semplice, ma dobbiamo ricordarci che i calcoli eseguiti con un
calcolatore sono inevitabilmente affetti da piccoli errori. La presenza di questi
piccoli errori rende il problema, che appariva semplice, un po' più delicato!
Supponiamo che il determinante sia diverso da zero, ma sia molto piccolo; ad
esempio, supponiamo che sia 10-20. In tal caso, quando Matlab esegue i calcoli
potrebbe commettere un errore, potrebbe addirittura far uscire zero! Oppure, potrebbe
accadere che il determinante è veramente zero, Matlab lo calcola e, invece di zero, fa
uscire 10-20. Come faccio a sapere se quel 10 -20 rappresenta un numero piccolo, ma

                                                                                      7/18
Appunti d’esame:
le matrici e matlab                                                           Visto su: Profland

diverso da zero oppure è uscito così perché Matlab ha fatto un troncamento? La
matematica distingue in maniera precisa e netta matrici con determinante nullo da
matrici con determinante molto piccolo, ma diverso da zero. Un calcolatore, invece,
potrebbe confondere questi due tipi di matrici!
Oltre a questo problema, ce n'è anche un altro legato alle perturbazioni. Cioè
assegnando i dati in un certo modo piuttosto che in un altro potremmo avere soluzioni
diverse!
Quindi, nei calcoli col calcolatore c'è qualche problema di cui bisogna tener conto in
qualche modo.
Vi dico fin d'ora che alcuni artifici per risolvere questi problemi già sono stati inseriti
in Matlab.
A questo punto vediamo quali sono gli artifici che si possono studiare per risolvere
questi problemi.
Iniziamo a calcolare la matrice inversa A -1. Dalla teoria matematica sappiamo che la
matrice inversa è uguale alla matrice trasposta dei complementi algebrici divisa per il
determinante di A, cioè:

                                    1
                         A− 1 =         ( complementi algebrici ) T
                                  det A

La matrice trasposta dei complementi algebrici è detta comunemente "matrice
aggiunta" di A. Il complemento algebrico A11 è il determinante della matrice che si
ottiene da A cancellando la riga 1 e la colonna 1. In generale, il complemento
algebrico Aij è il determinante della matrice che si ottiene da A cancellando la riga i-
sima e la colonna j-sima.
Vi ricordate in matematica come si fa a calcolare un determinante?
Tenete presente che il determinante è un concetto che si può applicare solo a
matrici quadrate! Il determinante è la somma dei prodotti ottenuti moltiplicando gli
elementi di una riga (o di una colonna) per i rispettivi complementi algebrici. Cioè, si
moltiplica ogni elemento di una riga (o di una colonna) per il determinante di ordine
n-1 che si ottiene cancellando la riga e la colonna cui l'elemento appartiene. Si tratta
di un processo induttivo. Per calcolare un determinate di ordine n devo calcolare dei
determinanti di ordine n-1 e così via a ritroso fino ad arrivare a determinanti di ordine
2. Questi ultimi si calcolano moltiplicando gli elementi della diagonale principale e
sottraendo il prodotto degli elementi della diagonale secondaria:
                           a   a 
                       A =  11 12 
                           a                det A = a11 ⋅ a22 − a12 ⋅ a21
                            21 a22 
Per calcolare un determinante di ordine 2 sono necessarie quindi 2 moltiplicazioni.
Ma, per calcolare un determinante di ordine 3 sono necessarie 3 moltiplicazioni per
determinanti di ordine 2, cioè in tutto 3×2 moltiplicazioni. Per calcolare un
determinante di ordine 4 sono necessarie 4 moltiplicazioni per determinanti di ordine
3, cioè in tutto 4×3×2 moltiplicazioni. Per calcolare un determinante di ordine 5
dovremo fare 5×4×3×2 moltiplicazioni. Per calcolare un determinante di ordine n
                                                                                           8/18
Appunti d’esame:
le matrici e matlab                                                      Visto su: Profland

dovremo fare n! moltiplicazioni. Per cui, come vedete, più grande è la matrice, più
crescono i calcoli. Notate, inoltre, che il numero di moltiplicazioni cresce in maniera
estremamente rapida; pensate che per calcolare il determinante di una matrice di
ordine 14 sono necessarie 14! moltiplicazioni, cioè circa 87 miliardi di
moltiplicazioni; per calcolare il determinante di una matrice di ordine 15 sono
necessarie 15! moltiplicazioni, cioè circa 1300 miliardi di moltiplicazioni.
Le CPU oggi raggiungono i 2Ghz, cioè fanno quasi 2 miliardi di operazioni
elementari al secondo (clock). Il prodotto non è un'operazione elementare, è
un'operazione complessa che coinvolge più passi elementari. Per fare un prodotto ci
vogliono circa 10 clock. Pertanto un calcolatore sarà in grado di fare circa 200
milioni di prodotti al secondo. Perciò per calcolare un determinante di ordine 14 ci
metterà circa 7 minuti. Ricordate che per calcolare un determinante di ordine 15
dobbiamo calcolare un determinante di ordine 14 per ogni elemento della matrice
aggiunta, cioè dobbiamo calcolare 15×15 determinanti di ordine 14, per cui ci
vorranno circa 26 ore! Per calcolare un determinante di ordine 20 ci vorrà più di un
secolo! Invece, se accendiamo Matlab ed inseriamo una matrice di ordine 20
riusciamo ad ottenere velocemente il valore del determinante. Come è possibile?
La verità è che Matlab per il calcolo non utilizza la strategia che abbiamo descritto
che deriva dalla definizione matematica del determinante. Nella matematica si usano
delle formule di rappresentazione che quasi mai coincidono con i metodi utilizzati nei
calcolatori per eseguire i calcoli. Anche la formula di rappresentazione che abbiamo
appena visto per il calcolo della matrice inversa non è quella adottata da Matlab per
eseguire il calcolo. Matlab esegue il calcolo della matrice inversa passando attraverso
un certo numero di sistemi.
Abbiamo il nostro sistema:
                                       Ax = b

la cui soluzione si può scrivere simbolicamente come:

                                      x = A− 1 b

se invece di un vettore b di termini noti avessimo una matrice B di termini noti, al
posto del vettore x delle incognite si avrebbe una matrice X delle incognite.
Avremmo cioè una serie di sistemi che simbolicamente potremmo rappresentare
come:
                                      A = XB
Avremo tanti sistemi per quante sono le colonne della matrice B. Anche la soluzione
è una matrice X fatta da tante colonne per quante sono quelle di B. Ciò posto
utilizziamo come matrice B la matrice identica I, avremo:

                                      A = XI
                                                                                      9/18
Appunti d’esame:
le matrici e matlab                                                        Visto su: Profland

da cui si ha:
                                  X = A − 1I = A − 1
perché la matrice identica I è l'elemento neutro del prodotto, cioè moltiplicata per
qualsiasi matrice dà la matrice di partenza.
Allora, siamo giunti ad un paradosso. Per calcolare la soluzione del sistema:
                                       Ax = b
devo calcolare la matrice inversa A-1 e per calcolare la matrice inversa devo risolvere
n sistemi. Questo vuol dire che la teoria matematica che passa per il calcolo
dell'inversa è una teoria astratta!
Vediamo allora come si fa a risolvere un sistema senza passare attraverso il
simbolismo della matematica.
Il metodo di Cramer non va bene perché utilizza la divisione per un determinante che
è il problema che ci ha bloccato prima. Il metodo di sostituzione non è applicabile
perché le incognite coinvolte sono troppe. Non resta che il

METODO DI GAUSS
Si tratta di effettuare certi calcoli prendendo la prima riga ed addizionandola
opportunamente alle successive, allo scopo di far diventare zero gli elementi della
prima colonna. Che significa addizionare in maniera opportuna? Vuol dire che per
                                                                                   a
cancellare, ad esempio, l'elemento a21 devo moltiplicare la riga 1 per il rapporto 21 a11
Ad esempio se ho la matrice:
                                        3 2 1
                                             
                                        1 3 2
                                        2 4 3
                                             
per azzerare l'elemento 1 nella seconda riga devo sommare ad essa la prima riga dopo
averla moltiplicata per -1/3 avrò:

                                      3 2      1 
                                                  
                                       0 73   5 
                                                 3
                                      2 4      3 
                                                  
per azzerare l'elemento 2 nella terza riga devo sommare ad essa la prima riga dopo
averla moltiplicata per -2/3 avrò:
                                      3 2      1 
                                                 
                                      0 7     5 
                                          3     3
                                      0 8     7 
                                          3     3
Ripetendo il procedimento posso azzerare l'elemento 8/3 nella terza riga, sommando
ad essa la seconda riga dopo averla moltiplicata per -8/7 avrò:


                                                                                      10/18
Appunti d’esame:
le matrici e matlab                                                          Visto su: Profland

                                      3 2       1 
                                                  
                                      0 7      5 
                                          3      3
                                      0 0      3 
                                                 7

Quindi, operando in questo modo passo ad un sistema del tipo:

                                       Cx = d
dove la matrice C è una matrice triangolare. In tal caso il sistema è risolto perché
dall'ultima relazione ottengo l'ultima componente. Nota questa posso inserirla nella
penultima relazione ed ottenere la penultima componente e così via a ritroso.
Ovviamente, il meccanismo descritto rappresenta il caso che esista un'unica
soluzione. Il ragionamento fatto si dovrà inceppare da qualche parte quando non ci
sono soluzioni o quando le soluzioni sono infinite. Infatti, il ragionamento si inceppa
quando l'ultimo elemento in basso è zero:

                                      3 2       1 
                                                   
                                       0 73    5 
                                                  3
                                      0 0       0 
                                                   

in tal caso se il termine noto è zero avrò infinite soluzioni, se il termine noto è diverso
da zero non esistono soluzioni.
In Matlab è implementato il metodo di Gauss.
Ricordiamo che tra le proprietà dei determinanti ce n'è una che afferma che se
prendo una matrice e sommo una riga ad un'altra il determinante non cambia.
Pertanto il determinante della matrice triangolare ottenuta col metodo di gauss è lo
stesso della matrice di partenza. Ma c'è un grosso vantaggio. Il determinante di una
matrice triangolare si calcola semplicemente moltiplicando tra loro gli elementi
della diagonale principale! Il Metodo di Gauss non solo risolve il sistema, ma ci
aiuta anche a semplificare il calcolo del determinante. Ecco perché Matlab riesce a
calcolare rapidamente anche i determinanti di matrici di ordine elevato; le trasforma
prima in matrici triangolari col metodo di Gauss e, poi, fa il prodotto degli elementi
della diagonale principale.
Facciamo un'osservazione importante!
Quando operiamo a mano il processo di Gauss dobbiamo tener conto di un'altra
proprietà dei determinanti che afferma che se si scambiano due righe in una
matrice il determinante cambia segno. Pertanto il valore del determinante dovrà
essere preso con il proprio segno o col segno opposto a seconda del numero di scambi
operati. Matlab conta gli scambi operati e restituisce il valore giusto.
Se strada facendo un elemento lungo la diagonale si annulla il determinate sarà nullo,
per cui siamo nel caso in cui il sistema non ha soluzioni o ha infinite soluzioni.

                                                                                        11/18
Appunti d’esame:
le matrici e matlab                                                          Visto su: Profland

Andiamo ora a scrivere le formule di Gauss.
Abbiamo una prima riga del tipo:
                               a11 a12  a1n b1

questa riga viene sottratta dalle successive. In particolare, se consideriamo la seconda
riga che è del tipo:
                                 a 21 a 22  a 2 n b2

il nuovo valore assunto da a21 sarà:
                                     nuovo              a 21
                                   a 21 = a 21 − a11
                                                        a11

analogamente, il nuovo valore assunto da a22 sarà:
                                     nuovo              a 21
                                   a 22 = a 22 − a12
                                                        a11
e così via fino a:
                                     nuovo              a 21
                                   a 2n = a 2n − a1n
                                                        a11


                                     nuovo             a 21
                                    b2     = b2 − b1
                                                       a11

Il ragionamento va poi ripetuto iterativamente per triangolarizzare la matrice. Si
lascia ferma la prima riga e si utilizza la seconda riga con lo stesso criterio esposto.
La formula sarà strutturata sempre allo stesso modo, essa è basata sostanzialmente su
una differenza ed un prodotto.
I calcoli teorici sono esatti, mentre i calcoli eseguiti dal calcolatore sono affetti da
un errore di troncamento, legato alla precisione della macchina che stiamo
utilizzando. Nel caso di Matlab l'errore interviene sulla 14ª cifra. Tale errore si
trasferisce al calcolo successivo e si può amplificare o ridurre. Se l'errore si riduce, il
calcolo rimane stabile; perché il calcolo successivo avrà anche lui un errore a cui si
somma l'errore precedente, ma poiché l'errore precedente si è ridotto il calcolo rimane
stabile. Se, invece, l'errore si amplifica, avrò una catena di errori che si amplifica che
porterà ad un risultato sballato.
La moltiplicazione può amplificare o ridurre l'errore, a seconda che il
moltiplicatore abbia un valore maggiore di 1 o minore di 1. Il valore di a11, a causa
del troncamento introdotto dal calcolatore, non è esatto, è un a11+ε . Se lo moltiplico
per 100 avrò 100a11+100ε per cui l'errore si è amplificato di 100 volte. Se, invece, lo
moltiplico per 0,01 ottengo 0,01a11+0,01ε per cui l'errore si è ridotto di 100 volte.
                                                                              a21
Nella formula di Gauss il termine che può amplificare o ridurre l'errore è          a11 .



                                                                                            12/18
Appunti d’esame:
le matrici e matlab                                                             Visto su: Profland

Per cui se tale rapporto assume un valore maggiore di 1 gli errori si propagano
amplificandosi, se tale rapporto assume un valore minore di 1 gli errori si propagano
riducendosi ed il calcolo si stabilizza. Ecco perché in certi casi il metodo di Gauss,
così come lo abbiamo descritto, non funziona e possono uscire dei valori sballati.
Questo fatto ci chiarisce anche perché abbiamo avuto risultati diversi quando ieri
abbiamo considerato l'esempio del sistema in cui abbiamo invertito i dati. Mettendo i
dati in un certo ordine io posso aver moltiplicato per un fattore molto grande.
Scambiando i dati è successo che quello che avevo usato come moltiplicatore l'ho
usato come divisore, per cui è diventato molto piccolo e questo ha stabilizzato il
calcolo. Ora capiamo perché se un sistema lo scrivo con un certo criterio mi dà una
risposta e se lo scrivo con un altro criterio ottengo un'altra risposta.
Capito il problema, vediamo come lo risolviamo.
Il ragionamento che si fa sta alla base di quello che chiamiamo metodo di Gauss
modificato o anche metodo di Gauss con il pivot.
                                       a21
Se riuscissimo a rendere il rapporto         a11   sempre minore di 1, il processo di calcolo
sarebbe sempre stabile. Ma per far questo basta fare in modo che il termine a11, oltre
ad essere diverso da zero, sia anche il più grande di tutti. Questo è facile, perché basta
confrontarlo con gli altri elementi della sua colonna: a21, a31, … fino ad an1 e se, per
caso, troviamo un termine più grande possiamo sempre scambiare la riga che lo
contiene con la prima riga. In questo modo la prima riga avrà sempre un a11 che è
diverso da zero ed è il più grande dei termini, per cui tutti i rapporti che hanno al
denominatore a11 saranno minori di 1 ed il calcolo sarà stabile.
Analogamente, quando ripeto il procedimento per la seconda equazione, considero
a22 e verifico che sia diverso da zero e che sia il più grande degli elementi lungo la
sua colonna a scendere, se questo non avviene scambio le righe come prima.
In questa maniera il processo viene stabilizzato per questo tipo di errore.
Purtroppo anche la differenza introduce un errore. L'idea del pivot ci aiuta ad
eliminare l'errore legato alla moltiplicazione, ma non rende il calcolo finale
totalmente immune da errore. Per cui dobbiamo avere la consapevolezza che il
risultato finale non è mai esatto al 100%, ma è sempre affetto da un errore che noi
dovremo cercare di misurare.

Ora, utilizziamo Matlab per fare qualche esercizio su quello che abbiamo visto.
Iniziamo con inserire una matrice. Per inserire una matrice in Matlab dobbiamo
digitare una lettera maiuscola seguita dal segno "=" e racchiudere fra parentesi quadre
una serie di numeri separati da virgole o da spazi; per andare a capo alla fine di una
riga possiamo usare il tasto "Invio" oppure il punto e virgola. Ad esempio scriveremo:

                                     A = [1 2 3
                                     456
                                     7 8 9]



                                                                                           13/18
Appunti d’esame:
le matrici e matlab                                                       Visto su: Profland

poi premeremo il tasto "invio" e Matlab memorizzerà la matrice. A questo punto
possiamo usare la funzione di Matlab per calcolare il determinante. Scriveremo:

                                        det(A)

premendo il tasto "invio" Matlab ci risponderà con:

                                       ans = 0

ciò vuol dire che se questa fosse la matrice di un sistema di equazioni, noi già
sapremmo che il sistema ha infinite soluzioni oppure nessuna a seconda di come è
fatto il termine noto.
Inoltre, possiamo calcolare il rango di tale matrice. Poiché essa ha tre colonne già
sappiamo che il rango può valere al massimo 3 e siccome abbiamo calcolato che il
determinante è zero già sappiamo che il rango deve essere minore di 3. Infatti, il
rango rappresenta il numero massimo di colonne e di righe linearmente indipendenti
e si calcola considerando i minori estraibili dalla matrice che hanno determinante
diverso da zero. Ma l'unico minore di ordine 3 estraibile dalla matrice A è il
determinante che vale zero, per cui il rango non può essere 3. Quindi, il suo rango è 2
oppure 1. Per saperlo, dovremmo teoricamente estrarre i minori del 2° ordine e
vedere se ce n'è almeno uno che ha determinante diverso da zero, nel qual caso il
rango è 2. Se non se ne trovano il rango è 1. Per la matrice considerata si vede a
occhio che c'è un minore del secondo ordine diverso da zero, per cui il rango è 2.
Quindi, le prime due righe o le prime due colonne sono linearmente indipendenti.
Verifichiamo se Matlab ce lo conferma, scriviamo:

                                       rank(A)

premendo il tasto "invio" Matlab ci risponderà con:
                                        ans = 2

confermando ciò che ci aspettavamo.
Adesso proviamo a calcolare un sistema. Inventiamovi un termine noto, ad esempio:

                                      b=[1 2 3]'

l'apostrofo che mettiamo serve a far capire a Matlab che si tratta di un vettore
colonna. Adesso dobbiamo vedere se il sistema che si può costruire con la matrice A
ed il vettore b considerati ammette soluzioni. Per sapere se ammette o non ammette
soluzioni dobbiamo valutare il rango di A e lo abbiamo fatto; poi, dobbiamo valutare
il rango della matrice che si ottiene aggiungendo ad A il vettore b. Per far questo
potremmo materialmente inserire in Matlab una matrice B in cui scriviamo le prime
tre colonne uguali ad A e l'ultima uguale a b. Oppure, possiamo vedere se esiste una


                                                                                     14/18
Appunti d’esame:
le matrici e matlab                                                          Visto su: Profland

funzione di Matlab che fonde insieme la matrice A ed il vettore b già inseriti. Basta
scrivere:

                                        B=[A , b]

Premendo il tasto "invio" Matlab creerà la matrice B prendendo le tre colonne di A ed
affiancandoci in fondo a destra la colonna b. Quindi, il separatore virgola "," fa
capire a Matlab che noi vogliamo affiancare due strutture precedentemente
definite. Naturalmente perché ciò sia possibile le due strutture devono essere
affiancabili, cioè devono avere lo stesso numero di righe, se non ce l'hanno Matlab
non le può affiancare. Ad esempio, se scriviamo:

                                    C = [A , [1 2 3]]

In tal caso sto tentando di affiancare alla struttura A la struttura costituita dal vettore
riga [1 2 3]. Ciò non è possibile perché la prima struttura è fatta da tre righe e la
seconda e fatta da una sola riga. Se premiamo il tasto "invio" Matlab ci risponderà
con un messaggio di errore:

??? All matrices on a row in the bracketed expression must have the
 same number of rows.

Avvertendoci che le strutture da affiancare devono avere lo stesso numero di
righe.
Oltre ad affiancare due strutture possiamo anche metterne una sotto l'altra, per fare
questo dovremo usare la seguente sintassi:

                                    C = [A ; [1 2 3]]

Quindi, il separatore punto e virgola ";" fa capire a Matlab che noi vogliamo
mettere una struttura sotto un'altra precedentemente definita. Questa volta
stiamo tentando di aggiungere la riga [1 2 3] in fondo in basso alla matrice A, ciò è
possibile perché la riga che stiamo tentando di aggiungere ha lo stesso numero di
colonne di A; se non avesse lo stesso numero di colonne di A, Matlab ci avviserebbe
con un messaggio di errore, avvertendoci che le strutture da mettere una sotto
l'altra devono avere lo stesso numero di colonne.
Torniamo al nostro esempio di partenza. Avevamo la matrice A con determinante
nullo e rango 2. Ed abbiamo costruito la matrice B=[A , b] affiancando il vettore
colonna b ad A. Calcoliamo il rango di B, scriviamo:

                                         rank(B)

premendo il tasto "invio" Matlab ci risponderà con:


                                                                                        15/18
Appunti d’esame:
le matrici e matlab                                                           Visto su: Profland

                                            ans = 2

Questo significa che A e B hanno lo stesso rango per cui il sistema ammette
sicuramente soluzione. Quante sono le soluzioni?
Se il rango di A fosse stato 3 la soluzione sarebbe stata unica.
Poiché il rango di A è 2, le possibilità che avevamo erano:
• che il sistema non ammetteva soluzione, se il rango di B fosse stato maggiore di 2,
• che il sistema ammetteva infinite, se il rango di B fosse stato anch'esso 2.
Poiché abbiamo verificato che B ha rango 2, le soluzioni sono infinite.
Come si ottengono tali soluzioni?
Per quanto abbiamo detto prima, dobbiamo cancellare una riga di A e spostare una
colonna dal lato del termine noto. Siccome il minore:

                                               12
                                               45

è diverso da zero, le prime due righe sono linearmente indipendenti. Per cui possiamo
                                                                        3
cancellare l'ultima riga di A "7 8 9" e la colonna che resta a destra   6
                                                                            la portiamo dal
lato del termine noto. Pertanto, il sistema che in origine era Ax=b, cioè:

                                    1 2 3   x1   1 
                                             
                                    4 5 6   x2  =  2 
                                    7 8 9  x   3
                                           3  

si riduce al seguente sistema:

                                  1 2   x1   1         3
                                  4 5   x  =  2  − x3  6 
                                                       
                                       2               

Per trovare le soluzioni si assegna un valore arbitrario ad x3 e, in dipendenza di questo
valore, si calcolano i valori delle altre due incognite x1 e x2.
Per scrivere tutto ciò in Matlab usiamo la seguente sintassi. La matrice ridotta AA
ottenuta da A cancellando l'ultima riga e spostando l'ultima colonna la scriviamo in
Matlab come:
                                     AA = A(1:2 , 1:2)

Cioè stiamo dicendo a Matlab che AA è la sottomatrice ottenuta da A prelevando i
primi due elementi di riga e di colonna. Questa sottomatrice ha determinante diverso
da zero. Controlliamo che ciò sia vero, scriveremo:

                                          det(AA)


                                                                                         16/18
Appunti d’esame:
le matrici e matlab                                                       Visto su: Profland

premendo il tasto "invio" Matlab ci risponderà con:

                                       ans = -3

Analogamente, possiamo costruire il nuovo termine noto estraendolo dal vecchio
termine noto, scriveremo in Matlab:
                                    bb = b(1:2)

A questo punto, abbiamo tutti i termini per far calcolare a Matlab le soluzioni.
Ricordiamo che dobbiamo anche assegnare un valore ad x3, per semplicità scegliamo
di porre x3 = 0. In corrispondenza di x3 = 0 calcoleremo i valori delle altre due
incognite. Tra tutte le soluzioni, quella ottenuta ponendo uguali a zero le incognite
arbitrarie è detta soluzione basica. In tal caso, in Matlab potremo scrivere:

                                   x = inv(AA)∗bb

premendo il tasto "invio" Matlab ci risponderà con:
                                    ans = -0.3333
                                           0.6667

La soluzione completa è quindi:
                                     x1 = - 0.3333
                                     x2 = 0.6667
                                     x3 = 0

Per trovare un'altra delle infinite soluzioni, dobbiamo assegnare un altro valore ad x3.
Voglio farvi notare che il modo con cui abbiamo scritto la soluzione, passando per il
calcolo della matrice inversa inv(AA) non è efficiente. Perché il calcolo della matrice
inversa comporta di per sé, come abbiamo già detto, la soluzione di due sistemi. Per
rendere il calcolo più efficiente bisogna dire a Matlab di non passare per la matrice
inversa, per fare questo in Matlab è possibile scrivere:

                                     x = AA  bb

premendo il tasto "invio" Matlab ci risponderà con:
                                    ans = -0.3333
                                           0.6667

Il simbolo back slash "" è un comando di Matlab che ci ricorda che questa è una
pseudo-divisione; cioè, è una divisione fra matrici in cui, a differenza di quello che
accade nelle divisioni normali, è importante anche la posizione dei termini.




                                                                                     17/18
Appunti d’esame:
le matrici e matlab                                                                           Visto su: Profland




                      Il file è stato scaricato/visualizzato in forma gratuita da Profland:
                                           http://profland.altervista.org


                                              sezione Profstudio
                           http://profland.altervista.org/profstudio/profstudio.htm

                                       oppure da qualche mirror, come:

                                 www.profland.cjb.net www.profland.135.it


                                  o dalla pagina dedicata su slideshare.net:
                                         www.slideshare.net/profman




                                                                                                         18/18

Más contenido relacionado

La actualidad más candente

Fondazione point-free della matematica
Fondazione point-free della matematicaFondazione point-free della matematica
Fondazione point-free della matematicaMarco Benini
 
Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?mattuzzi
 
Dispensa disequazioni semplici, fratte, con valore assoluto
Dispensa disequazioni   semplici, fratte, con valore assolutoDispensa disequazioni   semplici, fratte, con valore assoluto
Dispensa disequazioni semplici, fratte, con valore assolutoDomenico Tafuni
 
Disequazioni con valore assoluto
Disequazioni con valore assolutoDisequazioni con valore assoluto
Disequazioni con valore assolutocinziavettese
 
Equazioni [teoria ed esericizi][santi caltabiano]
Equazioni  [teoria ed esericizi][santi caltabiano]Equazioni  [teoria ed esericizi][santi caltabiano]
Equazioni [teoria ed esericizi][santi caltabiano]santi caltabiano
 
Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoFrancesco Sblendorio
 
Problemi np con esempio
Problemi np con esempioProblemi np con esempio
Problemi np con esempioRice Cipriani
 
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]santi caltabiano
 
La funzione dei numeri primi
La funzione dei numeri primiLa funzione dei numeri primi
La funzione dei numeri primiguest705ffa
 
Complessita' computazionale
Complessita' computazionaleComplessita' computazionale
Complessita' computazionaleSaraDiLuzio2
 
Schema Risolutivo Delle Serie
Schema Risolutivo Delle SerieSchema Risolutivo Delle Serie
Schema Risolutivo Delle SerieDinoIT
 

La actualidad más candente (17)

Fondazione point-free della matematica
Fondazione point-free della matematicaFondazione point-free della matematica
Fondazione point-free della matematica
 
Slide matematica Alessandrini
Slide matematica AlessandriniSlide matematica Alessandrini
Slide matematica Alessandrini
 
Relazioni e funzioni
Relazioni e funzioniRelazioni e funzioni
Relazioni e funzioni
 
Cosa sono gli algoritmi?
Cosa sono gli algoritmi?Cosa sono gli algoritmi?
Cosa sono gli algoritmi?
 
Dispensa disequazioni semplici, fratte, con valore assoluto
Dispensa disequazioni   semplici, fratte, con valore assolutoDispensa disequazioni   semplici, fratte, con valore assoluto
Dispensa disequazioni semplici, fratte, con valore assoluto
 
Disequazioni con valore assoluto
Disequazioni con valore assolutoDisequazioni con valore assoluto
Disequazioni con valore assoluto
 
Disequazioni una variabile
Disequazioni una variabileDisequazioni una variabile
Disequazioni una variabile
 
Equazioni [teoria ed esericizi][santi caltabiano]
Equazioni  [teoria ed esericizi][santi caltabiano]Equazioni  [teoria ed esericizi][santi caltabiano]
Equazioni [teoria ed esericizi][santi caltabiano]
 
Umano vs Computer: un esempio pratico
Umano vs Computer: un esempio praticoUmano vs Computer: un esempio pratico
Umano vs Computer: un esempio pratico
 
Problemi np con esempio
Problemi np con esempioProblemi np con esempio
Problemi np con esempio
 
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]
Infinitesimi ed infiniti [teoria ed esericizi][santi caltabiano]
 
Presentazione,
Presentazione,Presentazione,
Presentazione,
 
La funzione dei numeri primi
La funzione dei numeri primiLa funzione dei numeri primi
La funzione dei numeri primi
 
Sistemi
SistemiSistemi
Sistemi
 
Complessita' computazionale
Complessita' computazionaleComplessita' computazionale
Complessita' computazionale
 
Schema Risolutivo Delle Serie
Schema Risolutivo Delle SerieSchema Risolutivo Delle Serie
Schema Risolutivo Delle Serie
 
Esercizio Sugli Algoritmi
Esercizio Sugli AlgoritmiEsercizio Sugli Algoritmi
Esercizio Sugli Algoritmi
 

Destacado

Applicazioni di Matlab all'analisi di immagini telerilevate
Applicazioni di Matlab all'analisi di immagini telerilevateApplicazioni di Matlab all'analisi di immagini telerilevate
Applicazioni di Matlab all'analisi di immagini telerilevateMarco Palazzo
 
Estrategias de comunicación para productos socialmente responsables
Estrategias de comunicación para productos socialmente responsablesEstrategias de comunicación para productos socialmente responsables
Estrategias de comunicación para productos socialmente responsablesElizabeth Ontaneda
 
Indonesia forest league - young lions 2013
Indonesia forest league - young lions 2013 Indonesia forest league - young lions 2013
Indonesia forest league - young lions 2013 Intan Andini
 
paginas web en mexico
paginas web en mexicopaginas web en mexico
paginas web en mexicocable9tin
 
Losing the Document Battle? Alfresco, Drupal Combine for Solution
Losing the Document Battle? Alfresco, Drupal Combine for SolutionLosing the Document Battle? Alfresco, Drupal Combine for Solution
Losing the Document Battle? Alfresco, Drupal Combine for SolutionAcquia
 
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbag
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbagOpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbag
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbagme_slideshare_2
 
Customer data management - great tool for increasing sales
Customer data management - great tool for increasing salesCustomer data management - great tool for increasing sales
Customer data management - great tool for increasing salesМаксим Остархов
 
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...IBM India Smarter Computing
 
Janice Hughes, Redshift, Preparing for change
Janice Hughes, Redshift, Preparing for changeJanice Hughes, Redshift, Preparing for change
Janice Hughes, Redshift, Preparing for changedcmsdigital
 
Openstack meetup: Bootstrapping OpenStack to Corporate IT
Openstack meetup: Bootstrapping OpenStack to Corporate ITOpenstack meetup: Bootstrapping OpenStack to Corporate IT
Openstack meetup: Bootstrapping OpenStack to Corporate ITMirantis
 
50 sites 21st century skills
50 sites 21st century skills50 sites 21st century skills
50 sites 21st century skillsBrandon Raymo
 
120409 Ane Flyer
120409 Ane Flyer120409 Ane Flyer
120409 Ane Flyerdgamache
 
Tahun 4 mobail buah-buahan
Tahun 4 mobail   buah-buahanTahun 4 mobail   buah-buahan
Tahun 4 mobail buah-buahanong2012
 
Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applicationsAndreas Ehn
 

Destacado (20)

Applicazioni di Matlab all'analisi di immagini telerilevate
Applicazioni di Matlab all'analisi di immagini telerilevateApplicazioni di Matlab all'analisi di immagini telerilevate
Applicazioni di Matlab all'analisi di immagini telerilevate
 
Estrategias de comunicación para productos socialmente responsables
Estrategias de comunicación para productos socialmente responsablesEstrategias de comunicación para productos socialmente responsables
Estrategias de comunicación para productos socialmente responsables
 
Indonesia forest league - young lions 2013
Indonesia forest league - young lions 2013 Indonesia forest league - young lions 2013
Indonesia forest league - young lions 2013
 
paginas web en mexico
paginas web en mexicopaginas web en mexico
paginas web en mexico
 
Abhishek Patel Design Work Samples
Abhishek Patel Design Work SamplesAbhishek Patel Design Work Samples
Abhishek Patel Design Work Samples
 
Losing the Document Battle? Alfresco, Drupal Combine for Solution
Losing the Document Battle? Alfresco, Drupal Combine for SolutionLosing the Document Battle? Alfresco, Drupal Combine for Solution
Losing the Document Battle? Alfresco, Drupal Combine for Solution
 
Sommet 2010
Sommet 2010Sommet 2010
Sommet 2010
 
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbag
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbagOpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbag
OpenStack Summit 2015 Tokyo Heat-Translator and TOSCA vbrownbag
 
Customer data management - great tool for increasing sales
Customer data management - great tool for increasing salesCustomer data management - great tool for increasing sales
Customer data management - great tool for increasing sales
 
Invest in the UK
Invest in the UKInvest in the UK
Invest in the UK
 
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...
Towards an Open Data Center with an Interoperable Network (ODIN) : Volume 2: ...
 
Janice Hughes, Redshift, Preparing for change
Janice Hughes, Redshift, Preparing for changeJanice Hughes, Redshift, Preparing for change
Janice Hughes, Redshift, Preparing for change
 
Career
CareerCareer
Career
 
Roles
RolesRoles
Roles
 
Openstack meetup: Bootstrapping OpenStack to Corporate IT
Openstack meetup: Bootstrapping OpenStack to Corporate ITOpenstack meetup: Bootstrapping OpenStack to Corporate IT
Openstack meetup: Bootstrapping OpenStack to Corporate IT
 
50 sites 21st century skills
50 sites 21st century skills50 sites 21st century skills
50 sites 21st century skills
 
120409 Ane Flyer
120409 Ane Flyer120409 Ane Flyer
120409 Ane Flyer
 
Tahun 4 mobail buah-buahan
Tahun 4 mobail   buah-buahanTahun 4 mobail   buah-buahan
Tahun 4 mobail buah-buahan
 
Multi-homed applications
Multi-homed applicationsMulti-homed applications
Multi-homed applications
 
Aws
AwsAws
Aws
 

Similar a Appunti di Elaborazione automatica dei dati: matrici e matlab

Appendice 1.2.1 geoanalitica equaz. disequazioni lineari
Appendice 1.2.1 geoanalitica  equaz.  disequazioni lineariAppendice 1.2.1 geoanalitica  equaz.  disequazioni lineari
Appendice 1.2.1 geoanalitica equaz. disequazioni lineariFulvia Baccarani
 
Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Michele Scipioni
 
Intersezione parabola e retta
Intersezione parabola e rettaIntersezione parabola e retta
Intersezione parabola e rettasanti caltabiano
 
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaAlgoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaVittoriano Muttillo
 
Minimax regret solution to linear programming problems with an interval obje...
Minimax regret solution to linear programming problems with  an interval obje...Minimax regret solution to linear programming problems with  an interval obje...
Minimax regret solution to linear programming problems with an interval obje...NicolasTortora
 
Lavorare con gli insiemi
Lavorare con gli insiemiLavorare con gli insiemi
Lavorare con gli insiemiCarla Massi
 
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...Nicola Iantomasi
 
Logaritmi e loro proprietà
Logaritmi e loro proprietàLogaritmi e loro proprietà
Logaritmi e loro proprietàRedooc
 
Teorie e tecniche dei test
Teorie e tecniche dei testTeorie e tecniche dei test
Teorie e tecniche dei testOlaudio Bia
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)STELITANO
 
An Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingAn Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingTiziana Spata
 
La correlazione lineare fra due variabili statistiche
La correlazione lineare fra due variabili statisticheLa correlazione lineare fra due variabili statistiche
La correlazione lineare fra due variabili statisticheLuigi Pasini
 
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...MatteoZarot
 

Similar a Appunti di Elaborazione automatica dei dati: matrici e matlab (20)

Appendice 1.2.1 geoanalitica equaz. disequazioni lineari
Appendice 1.2.1 geoanalitica  equaz.  disequazioni lineariAppendice 1.2.1 geoanalitica  equaz.  disequazioni lineari
Appendice 1.2.1 geoanalitica equaz. disequazioni lineari
 
Equazioni di 2° grado
Equazioni di 2° gradoEquazioni di 2° grado
Equazioni di 2° grado
 
Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016
 
Struttura1
Struttura1Struttura1
Struttura1
 
Invarianza di un politopo
Invarianza di un politopoInvarianza di un politopo
Invarianza di un politopo
 
Intersezione parabola e retta
Intersezione parabola e rettaIntersezione parabola e retta
Intersezione parabola e retta
 
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaAlgoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessa
 
Minimax regret solution to linear programming problems with an interval obje...
Minimax regret solution to linear programming problems with  an interval obje...Minimax regret solution to linear programming problems with  an interval obje...
Minimax regret solution to linear programming problems with an interval obje...
 
Lavorare con gli insiemi
Lavorare con gli insiemiLavorare con gli insiemi
Lavorare con gli insiemi
 
Funzione esponenziale
Funzione esponenzialeFunzione esponenziale
Funzione esponenziale
 
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
Fondamenti di algebra lineare, parte 2: sistemi lineari, autovalori e autovet...
 
Logaritmi e loro proprietà
Logaritmi e loro proprietàLogaritmi e loro proprietà
Logaritmi e loro proprietà
 
Teorie e tecniche dei test
Teorie e tecniche dei testTeorie e tecniche dei test
Teorie e tecniche dei test
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
 
E qe fzdi2grado
E qe fzdi2gradoE qe fzdi2grado
E qe fzdi2grado
 
An Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingAn Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite Matching
 
Gli insiemi q e r
Gli insiemi q e rGli insiemi q e r
Gli insiemi q e r
 
Vettori
VettoriVettori
Vettori
 
La correlazione lineare fra due variabili statistiche
La correlazione lineare fra due variabili statisticheLa correlazione lineare fra due variabili statistiche
La correlazione lineare fra due variabili statistiche
 
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
Extended Summary of “An Algorithm for Solving Multicriteron Linear Programmin...
 

Más de profman

Belle piume
Belle piumeBelle piume
Belle piumeprofman
 
Greetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'AntarctiqueGreetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'Antarctiqueprofman
 
Street Creativity
Street CreativityStreet Creativity
Street Creativityprofman
 
Foto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sFoto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sprofman
 
Principi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e AmministrativoPrincipi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e Amministrativoprofman
 
Foto rare - Rare Photos
Foto rare - Rare PhotosFoto rare - Rare Photos
Foto rare - Rare Photosprofman
 
Appunti di Scienza delle finanze
Appunti di Scienza delle finanzeAppunti di Scienza delle finanze
Appunti di Scienza delle finanzeprofman
 
Non disperare
Non disperareNon disperare
Non disperareprofman
 
Vacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky HolidaysVacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky Holidaysprofman
 
Appunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziAppunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziprofman
 
Appunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiAppunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiprofman
 
Appunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoAppunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoprofman
 
Appunti di Strategia aziendale
Appunti di Strategia aziendaleAppunti di Strategia aziendale
Appunti di Strategia aziendaleprofman
 
Appunti di Storia economica: seminari
Appunti di Storia economica: seminariAppunti di Storia economica: seminari
Appunti di Storia economica: seminariprofman
 
Appunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeAppunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeprofman
 
Appunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaAppunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaprofman
 
Appunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeAppunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeprofman
 
Appunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoAppunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoprofman
 
Appunti di Ragioneria
Appunti di RagioneriaAppunti di Ragioneria
Appunti di Ragioneriaprofman
 
Appunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeAppunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeprofman
 

Más de profman (20)

Belle piume
Belle piumeBelle piume
Belle piume
 
Greetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'AntarctiqueGreetings from Antartica - Beautè de l'Antarctique
Greetings from Antartica - Beautè de l'Antarctique
 
Street Creativity
Street CreativityStreet Creativity
Street Creativity
 
Foto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’sFoto spettacolari - Spectaculaire foto’s
Foto spettacolari - Spectaculaire foto’s
 
Principi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e AmministrativoPrincipi di Diritto costituzionale e Amministrativo
Principi di Diritto costituzionale e Amministrativo
 
Foto rare - Rare Photos
Foto rare - Rare PhotosFoto rare - Rare Photos
Foto rare - Rare Photos
 
Appunti di Scienza delle finanze
Appunti di Scienza delle finanzeAppunti di Scienza delle finanze
Appunti di Scienza delle finanze
 
Non disperare
Non disperareNon disperare
Non disperare
 
Vacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky HolidaysVacanze stravaganti Wacky Holidays
Vacanze stravaganti Wacky Holidays
 
Appunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: eserciziAppunti di Strategia aziendale: esercizi
Appunti di Strategia aziendale: esercizi
 
Appunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidiAppunti di Strategia aziendale: lucidi
Appunti di Strategia aziendale: lucidi
 
Appunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzottoAppunti di Strategia aziendale: caso marzotto
Appunti di Strategia aziendale: caso marzotto
 
Appunti di Strategia aziendale
Appunti di Strategia aziendaleAppunti di Strategia aziendale
Appunti di Strategia aziendale
 
Appunti di Storia economica: seminari
Appunti di Storia economica: seminariAppunti di Storia economica: seminari
Appunti di Storia economica: seminari
 
Appunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industrialeAppunti di Storia economica: rivoluzione industriale
Appunti di Storia economica: rivoluzione industriale
 
Appunti di Storia economica: economia italiana
Appunti di Storia economica: economia italianaAppunti di Storia economica: economia italiana
Appunti di Storia economica: economia italiana
 
Appunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondialeAppunti di Storia economica: economia mondiale
Appunti di Storia economica: economia mondiale
 
Appunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilisticoAppunti di Ragioneria: bilancio civilistico
Appunti di Ragioneria: bilancio civilistico
 
Appunti di Ragioneria
Appunti di RagioneriaAppunti di Ragioneria
Appunti di Ragioneria
 
Appunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domandeAppunti di Organizzazione aziendale: domande
Appunti di Organizzazione aziendale: domande
 

Último

XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 

Último (9)

XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 

Appunti di Elaborazione automatica dei dati: matrici e matlab

  • 1. Appunti d’esame: le matrici e matlab Visto su: Profland Appunti di Elaborazione automatica dei dati: le Matrici ed il Matlab Si ricorda che: • l'uso degli appunti qui presenti è consentito per solo uso personale e di studio; • la consultazione è gratuita ed ogni forma atta a ricavarne lucro è vietata! • gli appunti sono fatti da studenti che non possono assumersi nessuna responsabilità in merito; • il materiale qui presente non è sostitutivo ma complementare ai libri di testo: - devi (e ti consiglio) di consultare e comprare i libri di testo; • il materiale qui presente è distribuito con licenza Creative Commons Ti ricordo che se vuoi contribuire mandando degli appunti o quant'altro possa essere utile ad altri puoi farlo inviando il materiale tramite: http://profland.altervista.org/mail.htm Spero che ciò che hai scaricato ti possa essere utile. Profman Il file è stato scaricato/visualizzato in forma gratuita da Profland: http://profland.altervista.org sezione Profstudio http://profland.altervista.org/profstudio/profstudio.htm oppure da qualche mirror, come: www.profland.cjb.net www.profland.135.it o dalla pagina dedicata su slideshare.net: www.slideshare.net/profman 1/18
  • 2. Appunti d’esame: le matrici e matlab Visto su: Profland Le Matrici (autore: jiji from naples) Riconsideriamo il sistema:  ax + by = c  ' ' ' ax+ by = c Questo è un sistema 2×2, cioè con 2 equazioni in due incognite x ed y. In generale, un sistema sarà n×m, cioè con n equazioni in m incognite. Infatti, in generale, non è detto che il numero di equazioni debba essere uguale al numero di incognite; in tal caso si parla di sistema rettangolare. Un sistema rettangolare avrà una rappresentazione del tipo:  a11x1 + a12 x2 +  + a1m xm = b1  a x + a x + + a x = b  21 1 22 2 2m m 2          an1x1 + an 2 x2 +  + anm xm = bn  Come vedete per i coefficienti a si usa una notazione matriciale, mentre le incognite x sono distinte dal pedice. Ci sono n equazioni cioè n righe ed m incognite cioè m colonne. Per cui i coefficienti a costituiscono una matrice n×m che possiamo indicare con A e chiamare matrice dei coefficienti, le incognite x costituiscono un vettore che indicheremo con x e così pure i termini noti b costituiscono un vettore che indicheremo con b . Il sistema precedente, allora, può essere scritto sinteticamente in forma matriciale così: Ax = b Noi, per ora, ci occuperemo solo di sistemi quadrati n×n, in cui cioè il numero delle equazioni è uguale al numero delle incognite. Nel caso del sistema 2×2 visto all'inizio, la matrice dei coefficienti ed i vettori delle incognite e dei termini noti si possono scrivere così:  a b  x  c A=  '  a b'   x=    y b =  ' c       Col computer scriveremo i sistemi in forma matriciale, la matrice ed i vettori li inseriremo con le regole di Matlab, faremo dei calcoli per ottenere il vettore delle soluzioni. La soluzione, quindi, è un vettore; i numeri che lo costituiscono sono le componenti del vettore. Il problema, comunque, può ammettere: • un'unica soluzione, • nessuna soluzione, 2/18
  • 3. Appunti d’esame: le matrici e matlab Visto su: Profland • infinite soluzioni. Ogni sistema di equazioni può essere rapportato ad un problema geometrico. Nel caso 2×2 il sistema rappresenta l'intersezione fra due rette e noi sappiamo che due rette possono: • intersecarsi in un sol punto (unica soluzione), • non intersecarsi mai, perché sono parallele (nessuna soluzione), • intersecarsi in tutti i punti, perché sono sovrapposte, cioè coincidono (infinite soluzioni). Se scriviamo il sistema in forma matriciale e se la matrice dei coefficienti è invertibile, vuol dire che esiste la matrice inversa A-1. Per cui moltiplicando per A-1 primo e secondo membro dell'espressione A x = b otteniamo: A− 1 A x = A− 1 b poiché sappiamo che A-1A=I cioè è la matrice identica che moltiplicata per il vettore x fa x, possiamo scrivere che: x = A− 1 b Quindi, dal punto di vista formale qualunque sistema si risolve semplicemente moltiplicando la matrice inversa dei coefficienti per il vettore dei termini noti. Tale espressione fornirà un'unica soluzione, perché come sapete se la matrice inversa esiste essa è unica! Può succedere che la matrice inversa non esista ed, in tal caso, il sistema potrebbe non ammettere soluzione o avere infinite soluzioni a seconda di come è fatto il vettore dei termini noti b . Quello che stiamo dicendo non è un concetto nuovo, perché è simile a quello che si fa per risolvere un'equazione di primo grado: ax=b la soluzione di questa equazione è: b x= a che si può anche scrivere come: x=a-1b in tal caso, come ricordate, la soluzione esisteva ed era unica, purché "a" fosse diversa da zero! Se, invece, a è uguale a zero l'equazione è del tipo: 0x=b in tal caso se b è diverso da zero, tale equazione non ammette nessuna soluzione; mentre se b è uguale a zero, tale equazione ammette infinite soluzioni. Alla luce di questo possiamo dire che i sistemi di equazioni non sono che una semplice generalizzazione delle equazioni di primo grado. Nel caso dei sistemi, però, perché esista soluzione non basta dire che la matrice dei coefficienti A deve essere diversa dalla matrice nulla, cioè quella fatta di tutti zero. Infatti, sappiamo che la condizione di esistenza della matrice inversa è una questione più ampia. Le matrici che non ammettono inversa sono tutte quelle che hanno determinante nullo. Pertanto, per i sistemi per i quali il determinante di A è diverso da zero, esiste la matrice inversa A-1 ed esiste un'unica soluzione. Invece, per i sistemi 3/18
  • 4. Appunti d’esame: le matrici e matlab Visto su: Profland per i quali il determinante di A è zero potremo dire che o non esiste nessuna soluzione o esistono infinite soluzioni a seconda di come è fatto il vettore b dei termini noti. Ricordiamo che per decidere se ci sono o non ci sono soluzioni, si può anche confrontare il rango della matrice A con quello della matrice che si ottiene prendendo tutte le colonne di A ed affiancando in fondo a destra il vettore colonna b dei termini noti:  a11 a12  a1n b1     a 21 a 22  a 2n b2           a an2  a nn bn   n1  Se i due ranghi sono uguali il sistema ammette soluzione, se sono diversi le soluzioni non ci sono! Per indicare questa matrice userò la notazione [A , b] tipica di Matlab. In passato voi già avete affrontato questo problema e l'avete risolto facendo degli esercizi con carta e penna, noi ora ci proponiamo di risolverlo servendoci di Matlab. Per inserire la matrice dei coefficienti A in Matlab si useranno le regole che conoscete: A=[………] Così pure per il vettore dei termini noti che è un vettore colonna:   b=     Attenzione che se lo scrivete come vettore riga Matlab si offende! Poi, possiamo controllare se esiste o non esiste l'inversa, calcolando il determinante di A. Questo Matlab lo fa velocemente e senza problemi. C'è una funzione che ha come input la matrice e come output produce il determinante. La funzione si chiama "det". Per cui se in Matlab introduciamo prima una matrice A e poi scriviamo det (A) lui calcola il determinate e fa uscire un numero. Se questo numero è diverso da zero c'è l'inversa, se questo numero è zero vuol dire che non esiste l'inversa di A. Se l'inversa esiste la posso calcolare con un'altra funzione di Matlab che si chiama "inv". Per cui se in Matlab scriviamo inv (A) lui calcola l'inversa di A e fa uscire una matrice. Ciò fatto, la soluzione si ottiene semplicemente moltiplicando questa matrice inversa, così ottenuta, per il vettore colonna dei termini noti. Quindi, dal punto di vista matematico non c'è alcun problema. Se il determinante di A è uguale a zero, per capire se non ci sono soluzioni o ce ne sono infinite dobbiamo confrontare il rango della matrice A con quello della matrice che si ottiene aggiungendo ad A il vettore dei termini noti b . Per calcolare il rango possiamo utilizzare un'altra funzione di Matlab che si chiama "rank". Se scriviamo rank (A), Matlab fornisce un numero che rappresenta il rango di A. Se chiamo C la matrice ottenuta aggiungendo ad A il vettore dei termini noti b e ne calcolo il rango con Matlab scrivendo rank (C), otterrò un altro numero che rappresenta il rango di C. Confronto i due numeri così ottenuti e so che se sono uguali ci sono soluzioni, mentre se sono diversi non ci sono soluzioni. Se non ci sono soluzioni ho finito, perché il sistema non ammette soluzioni. Se, invece, ci sono soluzioni non ho finito perché le devo trovare, vediamo come si fa al livello concettuale. 4/18
  • 5. Appunti d’esame: le matrici e matlab Visto su: Profland Torniamo a scrivere: Ax = b dove A è una matrice quadrata n×n ed abbiamo detto che siamo nel caso in cui il determinante di A è nullo: det (A) = 0 Inoltre, abbiamo detto che se il rango di A è minore di quello della matrice [A , b] ottenuta aggiungendo ad A il vettore dei termini noti b , non ci sono soluzioni ed ho finito: rank (A) < rank (A , b) Se, invece, trovo che i due ranghi sono uguali: rank (A) = rank (A , b) so che ci sono soluzioni, vediamo come possiamo trovarle. Innanzi tutto, diciamo che la soluzione è il vettore x i cui componenti sono n. Il rango rappresenta il numero di colonne linearmente indipendenti. Poiché A è una matrice quadrata con n colonne e siccome il determinante di A è uguale a zero ciò vuol dire che non tutte le colonne sono linearmente indipendenti; perciò, il rango non può essere n, deve essere un numero più piccolo di n. Cioè, le colonne di A non sono tutte linearmente indipendenti, ma ce ne saranno alcune che sono linearmente dipendenti dalle altre. Ad esempio, se il rango di A è 100 mentre la matrice A ha 101 colonne, questo significa che di queste 101 colonne solo 100 sono indipendenti, mentre una è dipendente dalle altre. Se il rango fosse 90, ciò significherebbe che delle 101 colonne che compongono la matrice A, 90 sono indipendenti e le altre 11 sono dipendenti. Concettualmente ciò vuol dire che le incognite relative a quelle 11 colonne possono essere assegnate in maniera arbitraria. Assegnate queste 11 incognite in maniera arbitraria, poi calcolo le rimanenti 90 ed ottengo una possibile soluzione. Se assegno le 11 incognite in modo diverso otterrò un'altra soluzione e così via. Si scrive ∞11 e si dice che esistono "infinito a 11" modi di risolvere il sistema. Allora, a livello concettuale se la mia matrice A ha 101 colonne ed ha rango 90, so che ci sono 11 colonne linearmente dipendenti; quello che devo fare è trovarle! Concettualmente è chiaro, poi bisogna vedere in pratica come si fa a trovarle! L'idea concettuale è che io ho una certa matrice fatta da tante colonne, alcune di queste sono dipendenti. Poiché, io posso scambiare la disposizione delle colonne senza alterare la matrice, immaginiamo di portare le colonne dipendenti tutte in fondo a destra e di lasciare quelle indipendenti tutte a sinistra: 5/18
  • 6. Appunti d’esame: le matrici e matlab Visto su: Profland n colonne Colonne Colonne indipendenti dipendenti Tutta la matrice A aveva n colonne ed n righe perché era quadrata, ma il pezzo di matrice formato dalle colonne indipendenti non è più una matrice quadrata, perché ha un numero di colonne minore di n ed un numero di righe ancora pari ad n. Dalla teoria sappiamo, però, che il numero di colonne linearmente indipendenti è sempre uguale al numero di righe linearmente indipendenti! Cioè, dalla teoria sappiamo che il rango è un numero che rappresenta contemporaneamente sia il numero di colonne sia il numero di righe linearmente indipendenti! Nel nostro esempio vuol dire che se ci sono 11 colonne dipendenti ci saranno anche 11 righe dipendenti. Che vuol dire che una riga è dipendente? Una riga è una delle equazioni del sistema, dire che è dipendente, vuol dire che essa non fornisce nessuna informazione utile, è in più, è ridondante. Perciò si può cancellare! Tutte le righe dipendenti si possono portare in basso e si possono cancellare, perché tanto non servono. Otterremo così ancora una matrice quadrata, più piccola di n×n in cui tutte le colonne e tutte le righe sono linearmente indipendenti, per cui il suo determinante è necessariamente diverso da zero. Ciò vuol dire che tale matrice può essere invertita. n colonne Matrice con colonne e righe tutte indipendenti Le colonne dipendenti che ho messo in fondo a destra posso portarle fuori dalla matrice dei coefficienti e metterle nel termine noto del sistema, perché sono valori che posso assegnare arbitrariamente. Questa è la strategia che si usa. Per trovare la sottomatrice formata da tutte colonne e righe linearmente indipendenti, devo andare a valutare le varie sottomatrici estraibili da A, finché non ne trovo una che ha determinante diverso da zero. Quando l'ho trovata so che questa sottomatrice è 6/18
  • 7. Appunti d’esame: le matrici e matlab Visto su: Profland quella su cui devo operare. Ovviamente questa ricerca è possibile su una matrice di piccole dimensioni, mentre diventa sempre più difficile man mano che crescono le dimensioni. Quindi, anche se a livello concettuale abbiamo chiaro cosa dobbiamo fare, il problema resta complesso! Se la matrice fosse molto grande, le possibili sottomatrici da indagare sarebbero talmente tante che trovare quella giusta sarebbe un'impresa lunga e complessa. Comunque, si potrebbe lasciare che un calcolatore trovi tale matrice, è solo una questione di tempo! Fortunatamente, noi risolveremo solo sistemi che nascono da qualche modello economico-finanziario progettato per risolvere situazioni concrete. Un modello viene progettato per risolvere un problema; pertanto, un modello per essere utile deve necessariamente portare ad un sistema che ammetta una soluzione, cioè deve portare ad una matrice in cui il determinante sia diverso da zero. Non avrebbe senso costruire un modello che non porta ad alcuna soluzione! Quindi, noi ci troveremo sempre in situazioni in cui il determinante è diverso da zero. Solo, per esercizio, talvolta risolveremo qualche situazione in cui c'è una matrice con determinante nullo. E vi ho detto come procedere a livello matematico. Fin d'ora, però, vi deve essere chiaro che quando tratteremo matrici legate a modelli economico-finanziari, esse avranno sempre determinante non nullo. Adesso, ritorniamo al discorso di partenza. Abbiamo il nostro sistema: Ax = b e supponiamo che il determinante sia diverso da zero: det (A) ≠ 0 In queste condizioni, abbiamo detto che la soluzione esiste ed è unica e si può scrivere così: x = A− 1 b Abbiamo detto che, assegnata la matrice A, possiamo calcolare con Matlab il determinante. Se esso è diverso da zero possiamo calcolare la matrice inversa A -1 e moltiplicarla per il vettore b ottenendo il vettore x . Tutto ciò sembra semplice, ma dobbiamo ricordarci che i calcoli eseguiti con un calcolatore sono inevitabilmente affetti da piccoli errori. La presenza di questi piccoli errori rende il problema, che appariva semplice, un po' più delicato! Supponiamo che il determinante sia diverso da zero, ma sia molto piccolo; ad esempio, supponiamo che sia 10-20. In tal caso, quando Matlab esegue i calcoli potrebbe commettere un errore, potrebbe addirittura far uscire zero! Oppure, potrebbe accadere che il determinante è veramente zero, Matlab lo calcola e, invece di zero, fa uscire 10-20. Come faccio a sapere se quel 10 -20 rappresenta un numero piccolo, ma 7/18
  • 8. Appunti d’esame: le matrici e matlab Visto su: Profland diverso da zero oppure è uscito così perché Matlab ha fatto un troncamento? La matematica distingue in maniera precisa e netta matrici con determinante nullo da matrici con determinante molto piccolo, ma diverso da zero. Un calcolatore, invece, potrebbe confondere questi due tipi di matrici! Oltre a questo problema, ce n'è anche un altro legato alle perturbazioni. Cioè assegnando i dati in un certo modo piuttosto che in un altro potremmo avere soluzioni diverse! Quindi, nei calcoli col calcolatore c'è qualche problema di cui bisogna tener conto in qualche modo. Vi dico fin d'ora che alcuni artifici per risolvere questi problemi già sono stati inseriti in Matlab. A questo punto vediamo quali sono gli artifici che si possono studiare per risolvere questi problemi. Iniziamo a calcolare la matrice inversa A -1. Dalla teoria matematica sappiamo che la matrice inversa è uguale alla matrice trasposta dei complementi algebrici divisa per il determinante di A, cioè: 1 A− 1 = ( complementi algebrici ) T det A La matrice trasposta dei complementi algebrici è detta comunemente "matrice aggiunta" di A. Il complemento algebrico A11 è il determinante della matrice che si ottiene da A cancellando la riga 1 e la colonna 1. In generale, il complemento algebrico Aij è il determinante della matrice che si ottiene da A cancellando la riga i- sima e la colonna j-sima. Vi ricordate in matematica come si fa a calcolare un determinante? Tenete presente che il determinante è un concetto che si può applicare solo a matrici quadrate! Il determinante è la somma dei prodotti ottenuti moltiplicando gli elementi di una riga (o di una colonna) per i rispettivi complementi algebrici. Cioè, si moltiplica ogni elemento di una riga (o di una colonna) per il determinante di ordine n-1 che si ottiene cancellando la riga e la colonna cui l'elemento appartiene. Si tratta di un processo induttivo. Per calcolare un determinate di ordine n devo calcolare dei determinanti di ordine n-1 e così via a ritroso fino ad arrivare a determinanti di ordine 2. Questi ultimi si calcolano moltiplicando gli elementi della diagonale principale e sottraendo il prodotto degli elementi della diagonale secondaria: a a  A =  11 12  a  det A = a11 ⋅ a22 − a12 ⋅ a21  21 a22  Per calcolare un determinante di ordine 2 sono necessarie quindi 2 moltiplicazioni. Ma, per calcolare un determinante di ordine 3 sono necessarie 3 moltiplicazioni per determinanti di ordine 2, cioè in tutto 3×2 moltiplicazioni. Per calcolare un determinante di ordine 4 sono necessarie 4 moltiplicazioni per determinanti di ordine 3, cioè in tutto 4×3×2 moltiplicazioni. Per calcolare un determinante di ordine 5 dovremo fare 5×4×3×2 moltiplicazioni. Per calcolare un determinante di ordine n 8/18
  • 9. Appunti d’esame: le matrici e matlab Visto su: Profland dovremo fare n! moltiplicazioni. Per cui, come vedete, più grande è la matrice, più crescono i calcoli. Notate, inoltre, che il numero di moltiplicazioni cresce in maniera estremamente rapida; pensate che per calcolare il determinante di una matrice di ordine 14 sono necessarie 14! moltiplicazioni, cioè circa 87 miliardi di moltiplicazioni; per calcolare il determinante di una matrice di ordine 15 sono necessarie 15! moltiplicazioni, cioè circa 1300 miliardi di moltiplicazioni. Le CPU oggi raggiungono i 2Ghz, cioè fanno quasi 2 miliardi di operazioni elementari al secondo (clock). Il prodotto non è un'operazione elementare, è un'operazione complessa che coinvolge più passi elementari. Per fare un prodotto ci vogliono circa 10 clock. Pertanto un calcolatore sarà in grado di fare circa 200 milioni di prodotti al secondo. Perciò per calcolare un determinante di ordine 14 ci metterà circa 7 minuti. Ricordate che per calcolare un determinante di ordine 15 dobbiamo calcolare un determinante di ordine 14 per ogni elemento della matrice aggiunta, cioè dobbiamo calcolare 15×15 determinanti di ordine 14, per cui ci vorranno circa 26 ore! Per calcolare un determinante di ordine 20 ci vorrà più di un secolo! Invece, se accendiamo Matlab ed inseriamo una matrice di ordine 20 riusciamo ad ottenere velocemente il valore del determinante. Come è possibile? La verità è che Matlab per il calcolo non utilizza la strategia che abbiamo descritto che deriva dalla definizione matematica del determinante. Nella matematica si usano delle formule di rappresentazione che quasi mai coincidono con i metodi utilizzati nei calcolatori per eseguire i calcoli. Anche la formula di rappresentazione che abbiamo appena visto per il calcolo della matrice inversa non è quella adottata da Matlab per eseguire il calcolo. Matlab esegue il calcolo della matrice inversa passando attraverso un certo numero di sistemi. Abbiamo il nostro sistema: Ax = b la cui soluzione si può scrivere simbolicamente come: x = A− 1 b se invece di un vettore b di termini noti avessimo una matrice B di termini noti, al posto del vettore x delle incognite si avrebbe una matrice X delle incognite. Avremmo cioè una serie di sistemi che simbolicamente potremmo rappresentare come: A = XB Avremo tanti sistemi per quante sono le colonne della matrice B. Anche la soluzione è una matrice X fatta da tante colonne per quante sono quelle di B. Ciò posto utilizziamo come matrice B la matrice identica I, avremo: A = XI 9/18
  • 10. Appunti d’esame: le matrici e matlab Visto su: Profland da cui si ha: X = A − 1I = A − 1 perché la matrice identica I è l'elemento neutro del prodotto, cioè moltiplicata per qualsiasi matrice dà la matrice di partenza. Allora, siamo giunti ad un paradosso. Per calcolare la soluzione del sistema: Ax = b devo calcolare la matrice inversa A-1 e per calcolare la matrice inversa devo risolvere n sistemi. Questo vuol dire che la teoria matematica che passa per il calcolo dell'inversa è una teoria astratta! Vediamo allora come si fa a risolvere un sistema senza passare attraverso il simbolismo della matematica. Il metodo di Cramer non va bene perché utilizza la divisione per un determinante che è il problema che ci ha bloccato prima. Il metodo di sostituzione non è applicabile perché le incognite coinvolte sono troppe. Non resta che il METODO DI GAUSS Si tratta di effettuare certi calcoli prendendo la prima riga ed addizionandola opportunamente alle successive, allo scopo di far diventare zero gli elementi della prima colonna. Che significa addizionare in maniera opportuna? Vuol dire che per a cancellare, ad esempio, l'elemento a21 devo moltiplicare la riga 1 per il rapporto 21 a11 Ad esempio se ho la matrice:  3 2 1    1 3 2  2 4 3   per azzerare l'elemento 1 nella seconda riga devo sommare ad essa la prima riga dopo averla moltiplicata per -1/3 avrò: 3 2 1     0 73 5  3 2 4 3    per azzerare l'elemento 2 nella terza riga devo sommare ad essa la prima riga dopo averla moltiplicata per -2/3 avrò: 3 2 1    0 7 5   3 3 0 8 7   3 3 Ripetendo il procedimento posso azzerare l'elemento 8/3 nella terza riga, sommando ad essa la seconda riga dopo averla moltiplicata per -8/7 avrò: 10/18
  • 11. Appunti d’esame: le matrici e matlab Visto su: Profland 3 2 1    0 7 5   3 3 0 0 3   7 Quindi, operando in questo modo passo ad un sistema del tipo: Cx = d dove la matrice C è una matrice triangolare. In tal caso il sistema è risolto perché dall'ultima relazione ottengo l'ultima componente. Nota questa posso inserirla nella penultima relazione ed ottenere la penultima componente e così via a ritroso. Ovviamente, il meccanismo descritto rappresenta il caso che esista un'unica soluzione. Il ragionamento fatto si dovrà inceppare da qualche parte quando non ci sono soluzioni o quando le soluzioni sono infinite. Infatti, il ragionamento si inceppa quando l'ultimo elemento in basso è zero: 3 2 1     0 73 5  3 0 0 0    in tal caso se il termine noto è zero avrò infinite soluzioni, se il termine noto è diverso da zero non esistono soluzioni. In Matlab è implementato il metodo di Gauss. Ricordiamo che tra le proprietà dei determinanti ce n'è una che afferma che se prendo una matrice e sommo una riga ad un'altra il determinante non cambia. Pertanto il determinante della matrice triangolare ottenuta col metodo di gauss è lo stesso della matrice di partenza. Ma c'è un grosso vantaggio. Il determinante di una matrice triangolare si calcola semplicemente moltiplicando tra loro gli elementi della diagonale principale! Il Metodo di Gauss non solo risolve il sistema, ma ci aiuta anche a semplificare il calcolo del determinante. Ecco perché Matlab riesce a calcolare rapidamente anche i determinanti di matrici di ordine elevato; le trasforma prima in matrici triangolari col metodo di Gauss e, poi, fa il prodotto degli elementi della diagonale principale. Facciamo un'osservazione importante! Quando operiamo a mano il processo di Gauss dobbiamo tener conto di un'altra proprietà dei determinanti che afferma che se si scambiano due righe in una matrice il determinante cambia segno. Pertanto il valore del determinante dovrà essere preso con il proprio segno o col segno opposto a seconda del numero di scambi operati. Matlab conta gli scambi operati e restituisce il valore giusto. Se strada facendo un elemento lungo la diagonale si annulla il determinate sarà nullo, per cui siamo nel caso in cui il sistema non ha soluzioni o ha infinite soluzioni. 11/18
  • 12. Appunti d’esame: le matrici e matlab Visto su: Profland Andiamo ora a scrivere le formule di Gauss. Abbiamo una prima riga del tipo: a11 a12  a1n b1 questa riga viene sottratta dalle successive. In particolare, se consideriamo la seconda riga che è del tipo: a 21 a 22  a 2 n b2 il nuovo valore assunto da a21 sarà: nuovo a 21 a 21 = a 21 − a11 a11 analogamente, il nuovo valore assunto da a22 sarà: nuovo a 21 a 22 = a 22 − a12 a11 e così via fino a: nuovo a 21 a 2n = a 2n − a1n a11 nuovo a 21 b2 = b2 − b1 a11 Il ragionamento va poi ripetuto iterativamente per triangolarizzare la matrice. Si lascia ferma la prima riga e si utilizza la seconda riga con lo stesso criterio esposto. La formula sarà strutturata sempre allo stesso modo, essa è basata sostanzialmente su una differenza ed un prodotto. I calcoli teorici sono esatti, mentre i calcoli eseguiti dal calcolatore sono affetti da un errore di troncamento, legato alla precisione della macchina che stiamo utilizzando. Nel caso di Matlab l'errore interviene sulla 14ª cifra. Tale errore si trasferisce al calcolo successivo e si può amplificare o ridurre. Se l'errore si riduce, il calcolo rimane stabile; perché il calcolo successivo avrà anche lui un errore a cui si somma l'errore precedente, ma poiché l'errore precedente si è ridotto il calcolo rimane stabile. Se, invece, l'errore si amplifica, avrò una catena di errori che si amplifica che porterà ad un risultato sballato. La moltiplicazione può amplificare o ridurre l'errore, a seconda che il moltiplicatore abbia un valore maggiore di 1 o minore di 1. Il valore di a11, a causa del troncamento introdotto dal calcolatore, non è esatto, è un a11+ε . Se lo moltiplico per 100 avrò 100a11+100ε per cui l'errore si è amplificato di 100 volte. Se, invece, lo moltiplico per 0,01 ottengo 0,01a11+0,01ε per cui l'errore si è ridotto di 100 volte. a21 Nella formula di Gauss il termine che può amplificare o ridurre l'errore è a11 . 12/18
  • 13. Appunti d’esame: le matrici e matlab Visto su: Profland Per cui se tale rapporto assume un valore maggiore di 1 gli errori si propagano amplificandosi, se tale rapporto assume un valore minore di 1 gli errori si propagano riducendosi ed il calcolo si stabilizza. Ecco perché in certi casi il metodo di Gauss, così come lo abbiamo descritto, non funziona e possono uscire dei valori sballati. Questo fatto ci chiarisce anche perché abbiamo avuto risultati diversi quando ieri abbiamo considerato l'esempio del sistema in cui abbiamo invertito i dati. Mettendo i dati in un certo ordine io posso aver moltiplicato per un fattore molto grande. Scambiando i dati è successo che quello che avevo usato come moltiplicatore l'ho usato come divisore, per cui è diventato molto piccolo e questo ha stabilizzato il calcolo. Ora capiamo perché se un sistema lo scrivo con un certo criterio mi dà una risposta e se lo scrivo con un altro criterio ottengo un'altra risposta. Capito il problema, vediamo come lo risolviamo. Il ragionamento che si fa sta alla base di quello che chiamiamo metodo di Gauss modificato o anche metodo di Gauss con il pivot. a21 Se riuscissimo a rendere il rapporto a11 sempre minore di 1, il processo di calcolo sarebbe sempre stabile. Ma per far questo basta fare in modo che il termine a11, oltre ad essere diverso da zero, sia anche il più grande di tutti. Questo è facile, perché basta confrontarlo con gli altri elementi della sua colonna: a21, a31, … fino ad an1 e se, per caso, troviamo un termine più grande possiamo sempre scambiare la riga che lo contiene con la prima riga. In questo modo la prima riga avrà sempre un a11 che è diverso da zero ed è il più grande dei termini, per cui tutti i rapporti che hanno al denominatore a11 saranno minori di 1 ed il calcolo sarà stabile. Analogamente, quando ripeto il procedimento per la seconda equazione, considero a22 e verifico che sia diverso da zero e che sia il più grande degli elementi lungo la sua colonna a scendere, se questo non avviene scambio le righe come prima. In questa maniera il processo viene stabilizzato per questo tipo di errore. Purtroppo anche la differenza introduce un errore. L'idea del pivot ci aiuta ad eliminare l'errore legato alla moltiplicazione, ma non rende il calcolo finale totalmente immune da errore. Per cui dobbiamo avere la consapevolezza che il risultato finale non è mai esatto al 100%, ma è sempre affetto da un errore che noi dovremo cercare di misurare. Ora, utilizziamo Matlab per fare qualche esercizio su quello che abbiamo visto. Iniziamo con inserire una matrice. Per inserire una matrice in Matlab dobbiamo digitare una lettera maiuscola seguita dal segno "=" e racchiudere fra parentesi quadre una serie di numeri separati da virgole o da spazi; per andare a capo alla fine di una riga possiamo usare il tasto "Invio" oppure il punto e virgola. Ad esempio scriveremo: A = [1 2 3 456 7 8 9] 13/18
  • 14. Appunti d’esame: le matrici e matlab Visto su: Profland poi premeremo il tasto "invio" e Matlab memorizzerà la matrice. A questo punto possiamo usare la funzione di Matlab per calcolare il determinante. Scriveremo: det(A) premendo il tasto "invio" Matlab ci risponderà con: ans = 0 ciò vuol dire che se questa fosse la matrice di un sistema di equazioni, noi già sapremmo che il sistema ha infinite soluzioni oppure nessuna a seconda di come è fatto il termine noto. Inoltre, possiamo calcolare il rango di tale matrice. Poiché essa ha tre colonne già sappiamo che il rango può valere al massimo 3 e siccome abbiamo calcolato che il determinante è zero già sappiamo che il rango deve essere minore di 3. Infatti, il rango rappresenta il numero massimo di colonne e di righe linearmente indipendenti e si calcola considerando i minori estraibili dalla matrice che hanno determinante diverso da zero. Ma l'unico minore di ordine 3 estraibile dalla matrice A è il determinante che vale zero, per cui il rango non può essere 3. Quindi, il suo rango è 2 oppure 1. Per saperlo, dovremmo teoricamente estrarre i minori del 2° ordine e vedere se ce n'è almeno uno che ha determinante diverso da zero, nel qual caso il rango è 2. Se non se ne trovano il rango è 1. Per la matrice considerata si vede a occhio che c'è un minore del secondo ordine diverso da zero, per cui il rango è 2. Quindi, le prime due righe o le prime due colonne sono linearmente indipendenti. Verifichiamo se Matlab ce lo conferma, scriviamo: rank(A) premendo il tasto "invio" Matlab ci risponderà con: ans = 2 confermando ciò che ci aspettavamo. Adesso proviamo a calcolare un sistema. Inventiamovi un termine noto, ad esempio: b=[1 2 3]' l'apostrofo che mettiamo serve a far capire a Matlab che si tratta di un vettore colonna. Adesso dobbiamo vedere se il sistema che si può costruire con la matrice A ed il vettore b considerati ammette soluzioni. Per sapere se ammette o non ammette soluzioni dobbiamo valutare il rango di A e lo abbiamo fatto; poi, dobbiamo valutare il rango della matrice che si ottiene aggiungendo ad A il vettore b. Per far questo potremmo materialmente inserire in Matlab una matrice B in cui scriviamo le prime tre colonne uguali ad A e l'ultima uguale a b. Oppure, possiamo vedere se esiste una 14/18
  • 15. Appunti d’esame: le matrici e matlab Visto su: Profland funzione di Matlab che fonde insieme la matrice A ed il vettore b già inseriti. Basta scrivere: B=[A , b] Premendo il tasto "invio" Matlab creerà la matrice B prendendo le tre colonne di A ed affiancandoci in fondo a destra la colonna b. Quindi, il separatore virgola "," fa capire a Matlab che noi vogliamo affiancare due strutture precedentemente definite. Naturalmente perché ciò sia possibile le due strutture devono essere affiancabili, cioè devono avere lo stesso numero di righe, se non ce l'hanno Matlab non le può affiancare. Ad esempio, se scriviamo: C = [A , [1 2 3]] In tal caso sto tentando di affiancare alla struttura A la struttura costituita dal vettore riga [1 2 3]. Ciò non è possibile perché la prima struttura è fatta da tre righe e la seconda e fatta da una sola riga. Se premiamo il tasto "invio" Matlab ci risponderà con un messaggio di errore: ??? All matrices on a row in the bracketed expression must have the same number of rows. Avvertendoci che le strutture da affiancare devono avere lo stesso numero di righe. Oltre ad affiancare due strutture possiamo anche metterne una sotto l'altra, per fare questo dovremo usare la seguente sintassi: C = [A ; [1 2 3]] Quindi, il separatore punto e virgola ";" fa capire a Matlab che noi vogliamo mettere una struttura sotto un'altra precedentemente definita. Questa volta stiamo tentando di aggiungere la riga [1 2 3] in fondo in basso alla matrice A, ciò è possibile perché la riga che stiamo tentando di aggiungere ha lo stesso numero di colonne di A; se non avesse lo stesso numero di colonne di A, Matlab ci avviserebbe con un messaggio di errore, avvertendoci che le strutture da mettere una sotto l'altra devono avere lo stesso numero di colonne. Torniamo al nostro esempio di partenza. Avevamo la matrice A con determinante nullo e rango 2. Ed abbiamo costruito la matrice B=[A , b] affiancando il vettore colonna b ad A. Calcoliamo il rango di B, scriviamo: rank(B) premendo il tasto "invio" Matlab ci risponderà con: 15/18
  • 16. Appunti d’esame: le matrici e matlab Visto su: Profland ans = 2 Questo significa che A e B hanno lo stesso rango per cui il sistema ammette sicuramente soluzione. Quante sono le soluzioni? Se il rango di A fosse stato 3 la soluzione sarebbe stata unica. Poiché il rango di A è 2, le possibilità che avevamo erano: • che il sistema non ammetteva soluzione, se il rango di B fosse stato maggiore di 2, • che il sistema ammetteva infinite, se il rango di B fosse stato anch'esso 2. Poiché abbiamo verificato che B ha rango 2, le soluzioni sono infinite. Come si ottengono tali soluzioni? Per quanto abbiamo detto prima, dobbiamo cancellare una riga di A e spostare una colonna dal lato del termine noto. Siccome il minore: 12 45 è diverso da zero, le prime due righe sono linearmente indipendenti. Per cui possiamo 3 cancellare l'ultima riga di A "7 8 9" e la colonna che resta a destra 6 la portiamo dal lato del termine noto. Pertanto, il sistema che in origine era Ax=b, cioè:  1 2 3   x1   1        4 5 6   x2  =  2   7 8 9  x   3   3   si riduce al seguente sistema:  1 2   x1   1   3  4 5   x  =  2  − x3  6           2     Per trovare le soluzioni si assegna un valore arbitrario ad x3 e, in dipendenza di questo valore, si calcolano i valori delle altre due incognite x1 e x2. Per scrivere tutto ciò in Matlab usiamo la seguente sintassi. La matrice ridotta AA ottenuta da A cancellando l'ultima riga e spostando l'ultima colonna la scriviamo in Matlab come: AA = A(1:2 , 1:2) Cioè stiamo dicendo a Matlab che AA è la sottomatrice ottenuta da A prelevando i primi due elementi di riga e di colonna. Questa sottomatrice ha determinante diverso da zero. Controlliamo che ciò sia vero, scriveremo: det(AA) 16/18
  • 17. Appunti d’esame: le matrici e matlab Visto su: Profland premendo il tasto "invio" Matlab ci risponderà con: ans = -3 Analogamente, possiamo costruire il nuovo termine noto estraendolo dal vecchio termine noto, scriveremo in Matlab: bb = b(1:2) A questo punto, abbiamo tutti i termini per far calcolare a Matlab le soluzioni. Ricordiamo che dobbiamo anche assegnare un valore ad x3, per semplicità scegliamo di porre x3 = 0. In corrispondenza di x3 = 0 calcoleremo i valori delle altre due incognite. Tra tutte le soluzioni, quella ottenuta ponendo uguali a zero le incognite arbitrarie è detta soluzione basica. In tal caso, in Matlab potremo scrivere: x = inv(AA)∗bb premendo il tasto "invio" Matlab ci risponderà con: ans = -0.3333 0.6667 La soluzione completa è quindi: x1 = - 0.3333 x2 = 0.6667 x3 = 0 Per trovare un'altra delle infinite soluzioni, dobbiamo assegnare un altro valore ad x3. Voglio farvi notare che il modo con cui abbiamo scritto la soluzione, passando per il calcolo della matrice inversa inv(AA) non è efficiente. Perché il calcolo della matrice inversa comporta di per sé, come abbiamo già detto, la soluzione di due sistemi. Per rendere il calcolo più efficiente bisogna dire a Matlab di non passare per la matrice inversa, per fare questo in Matlab è possibile scrivere: x = AA bb premendo il tasto "invio" Matlab ci risponderà con: ans = -0.3333 0.6667 Il simbolo back slash "" è un comando di Matlab che ci ricorda che questa è una pseudo-divisione; cioè, è una divisione fra matrici in cui, a differenza di quello che accade nelle divisioni normali, è importante anche la posizione dei termini. 17/18
  • 18. Appunti d’esame: le matrici e matlab Visto su: Profland Il file è stato scaricato/visualizzato in forma gratuita da Profland: http://profland.altervista.org sezione Profstudio http://profland.altervista.org/profstudio/profstudio.htm oppure da qualche mirror, come: www.profland.cjb.net www.profland.135.it o dalla pagina dedicata su slideshare.net: www.slideshare.net/profman 18/18