Soluzione di sistemi di equazioni lineari
Si consideri un sistema di 3 equazioni in 3 incognite:
esso può essere scritto in forma matriciale
con
ora, se A-1 è la matrice inversa di A è possibile scrivere
ma poiché
si ricava che
e quindi per risolvere il sistema è sufficiente calcolare l'inversa della matrice A.
Con Matlab questa operazione è molto semplice. Viene qui sotto riportato m-file che risolve il problema:
clear
close all
A = [ 2 1 -1; ...
3 -1 4; ...
-1 -1 2]
b = [5 -3 -5].'
x = A\b
l'output è il seguente
A =
2 1 -1
3 -1 4
-1 -1 2
b =
5
-3
-5
x =
1.0000
2.0000
-1.0000
e quindi la soluzione del sistema iniziale è x=1, y=2 e z=-1.
Per capire se un sistema è determinato o indeterminato è possibile determinare il rango della matrice A:
>> rank(A)
ans =
3
se il rango della matrice A è uguale al numero di righe del sistema allora il sistema è determinato, se è minore del numero di righe il sistema è indeterminato.
APPROFONDIMENTO
Ci si potrebbe chiedere per quale motivo al posto di x = A\b non si è calcolata la matrice inversa di A con la funzione inv(A) e quindi risolto il problema scrivendo:
>> x = inv(A)*b
ans =
1.0000
2.0000
-1.0000
la risposta è legata al fatto che Matlab risolve il problema per via numerica e per un sistema di equazioni espresso nella forma A*x = b in generale si dovrebbe usare x = inv(A)*b solo se la matrice A è di rango pieno ed è ben condizionata. L'inverso di A esiste solo per matrici di rango pieno ben condizionate. Qualora questo non sia vero è preferibile usare x=A\b.
Per un sistema ben definito, tuttavia entrambi i metodi produrranno lo stesso risultato.
Ulteriori informazioni sulla risoluzione dei sistemi lineari possono essere trovate nell'Help Center di Matlab all'indirizzo https://it.mathworks.com/help/matlab/ref/mldivide.html.