Sei sulla pagina 1di 31

INSEGNAMENTO DI APPLICAZIONI

INFORMATICHE PER L'INGEGNERIA


INDUSTRIALE
Corso di Laurea in Ingegneria Meccanica

a.a. 2021/2022

Docente: Ing. Domenico Amalfitano


Dipartimento di Ingegneria Elettrica e delle Tecnologie
dell’Informazione (DIETI) – Università degli Studi di Napoli
Federico II. Via Claudio 21, 4° Piano – Room 4.17
Sistemi di equazioni lineari
Rappresentazione matriciale di sistemi di
equazioni algebriche lineari
• Un sistema di n equazioni in m incognite le x

𝑎!!𝑥! + 𝑎!"𝑥" + ⋯ + 𝑎!# 𝑥# = 𝑏!


𝑎"!𝑥! + 𝑎""𝑥" + ⋯ + 𝑎"# 𝑥# = 𝑏"
⋮ ⋱ ⋮
𝑎$!𝑥! + 𝑎$"𝑥" + ⋯ + 𝑎$# 𝑥# = 𝑏$

Ax = b;
• Può essere espresso in forma matriciale come:
Esempio
• Ad esempio il sistema di equazioni

• Può essere espressa in forma matriciale A*x = b come:


In generale
• A è una matrice m x n

• x è un vettore (colonna) n x 1

• b è un vettore (colonna) m x 1
Risoluzione di sistemi in n equazioni in n
incognite
• Dato un sistema di n equazioni in n incognite à A
quadrata

• Si possono applicare diversi algoritmi risolutivi.


• Metodo di Gauss
• Metodo di Cramer
• Matrice Inversa
• Matrice pseudo inversa (per sistemi indeterminati)
Osservazioni
• Il metodo inv(A) funziona sicuramente se
abbiamo n equazioni ed n incognite (A quadrata)
e det(A) diverso da 0.

• Se det(A) = 0 o se A non è quadrata dobbiamo


usare altri metodi (anche se in certi casi la
divisione sinistra funziona ugualmente).

• Restituisce un risultato con imprecisione


numerica
Metodo di Gauss in MATLAB
• Si usa l’operatore divisione sinistra: x = A\b.
• Esempio:

>> A = [6, -10; 3, -4]; b = [2; 5];


>> x = A\b
x =
7
4
Matrice inversa
• Il comando inv(A) calcola l’inversa della matrice A
• Per risolvere il sistema di equazioni
2𝑥 + 9𝑦 = 5
)
3𝑥 − 4𝑦 = 7

>>A = [2,9;3,-4];
>>b = [5;7]
Se A è singolare inv(A) ci restituisce un
>>x = inv(A)*b messaggio di errore!!!
x =
2.3714
0.0286
Sistemi indeterminati
• Un sistema è indeterminato se ci sono meno equazioni
che incognite (in generale)
• In pratica non ci sono abbastanza informazioni per
risolverlo.
• Possono esistere infinite soluzioni, in cui una o più
incognite dipendono dalle altre
Esempio
• Dato il sistema

• Abbiamo infinite soluzioni.


• MATLAB propone una tra le infinite soluzioni.
• Fissa alcune variabili a zero e ricava le altre.
[5 58 -25 ]\8 =
ans =
0
0.1379
0
Risoluzione di sistemi indeterminati con la
matrice pseudo inversa
• Un sistema può essere indeterminato anche
• con A quadrata e det(A)=0.
• Anche in questo caso potremmo avere infinite soluzioni
(oppure nessuna)
• In questo caso Cramer non funziona, e la divisione
sinistra ci da un messaggio di errore (A è singolare)
• Possiamo usare la pseudo-inversa:
• In MATLAB il comando
x = pinv(A) * b
• Ci fornisce la soluzione di norma minima.
Esempio
• Dato il sistema:

𝑥! + 5𝑥" = 1
!
5𝑥! + 25𝑥" = 3
• A è quadrata ma le tre soluzioni presentate non sono
applicabili in quanto il determinante è nullo.
• Applichiamo il metodo della matrice inversa
A=[1 5;5 25]; b=[1;3];
x=pinv(A)*b
x =
0.0237
0.1183
La funzione rref

• In genere si può calcolare una soluzione esprimendo


alcune incognite in funzione delle altre.
• Si può sempre ridurre un sistema in questa forma
(reduced row Echelon form, matrice a righe ridotte)
• Il comando rref([A b]) fornisce in uscita la matrice [C d]
che identifica il sistema ridotto C x = d
• Il sistema ridotto dovrà essere risolto con i metodi visti in
precedenza.
Forma di Echelon di un sistema che
ammette una ed una sola soluzione
Tipica matrice in forma di echelon che
ammette infinite soluzioni
Matrice in forma di echelon inconsistente
• In questo caso non ci sono soluzioni (sistema
inconsistente)
Esempio rref 1
• Vogliamo risolvere il seguente sistema utilizzando rref

>> A=[1,-1,0; 2,-1,-1;1,1,1]; b=[2;3;6];


>> rref([A b])
C d Otteniamo il nuovo
1 0 0 3 sistema da risolvere

0 1 0 1
0 0 1 2
Esempio rref 1
>> C=[1 0 0; 0 1 0; 0 0 1]; d=[3;1;2];
>> x=inv(C)*d

Poteva essere risolto anche con i 3 metodi visti in precedenza:


x =
>> A=[1,-1,0; 2,-1,-1;1,1,1]; b=[2;3;6];
>> A\b
3
ans =
1
2 3
1
2
Esempio rref 2
• Vogliamo risolvere il seguente sistema utilizzando rref

>> A=[1 1 -2; 0 1 -1; -1 4 -3]; b=[1;3;14];


>> rref([A b])

ans =

1 0 -1 -2
0 1 -1 3
0 0 0 0
Esempio rref 2
>> C=[1 0 -1; 0 1 -1]; d=[-2;3];
>> x=C\d

x =

-5.0000
0
-3.0000
Esempio rref 3
• Vogliamo risolvere il seguente sistema utilizzando rref

>> A=[1 1 -2; 0 1 -1; -1 4 -3]; b=[1;3;1];


>> rref([A b])

ans =

1 0 -1 0
0 1 -1 0
0 0 0 1 Sistema Inconsistente
Esempio rref 3
• Possiamo usare la pseudoinversa

>> x=pinv(A)*b

x =

0.3951
0.0988
-0.4938
Esistenza e unicità delle soluzioni
• Il seguente test determina se esiste una soluzione oppure
se questa è unica.
• Il test richiede che sia creata la matrice completa [A b]
• Il sistema Ax=b con m equazioni ed n incognite ammette
soluzioni se e soltanto se la matrice A e la matrice
completa [A b] hanno lo stesso rango r.
• r = n à la soluzione è unica
• r < n à esistono infinite soluzioni ed r incognite possono essere
espresse come combinazioni lineari delle restanti n-r incognite.
Regola generale
• Possiamo dire che il sistema A x = b con m equazioni ed n
incognite ha soluzione esatta se e solo se
rank (A) == rank ( [ A b ] )

• Se questa è soddisfatta e:
• Rank(A) = n la soluzione è unica --> inv(A)*b
• Rank(A) < n ci sono infinite soluzioni à A\b
Esempio 1
• Con riferimento a Esempio rref 1

>> rank(A)
ans =
3 Soluzione inv(A)*b
>> rank([A b])
ans =
3
>> size_A=size(A); size_A(2)
ans =
3
Esempio 2
• Con riferimento a Esempio rref 2

>> rank(A)
ans = Soluzione con A\b
In generale
2 Applicate rref
>> rank([A b]) E valutare
C\d
ans =
2
>> size_A=size(A); size_A(2)
ans =
3
Esempio 3
• Con riferimento a Esempio rref 3

>> rank(A)
ans = Soluzione con pinv
2
>> rank([A b])
ans =
3

Potrebbero piacerti anche