Equazioni matriciali (lineari) e inversa di una matrice
Il comando linsolve può essere usato anche per risolvere equazioni matriciali lineari: date due matrici
e
di dimensioni rispettivamente
x
e
x
ci si può chiedere se esiste una matrice
x
tale che
.
>
A := matrix(3,4,
[8, -2, 7, -6,
3, 4, -3, 7,
3, 2, -5, -6]):
B := matrix(3,5,
[9, -5, -7, -1, -6,
-1, -1, 6, 0, -6,
0, 0, -3, -2, -1]):
linsolve(A,B);
>
A := matrix(3,4,
[8, -2, 7, -6,
3, 4, -3, 7,
3, 2, -5, -6]);
b:=vector(3,0);
> gaussjord(A);
> linsolve(A,b);
>
A := matrix(4,3,
[5, -4, -3,
1, -7, -1,
7, 4, 3,
-8, 2, 4]):
B := matrix(4,5,
[-1, 9, 7, -3, -8,
-7, 3, 4, -7, 3,
8, -9, 0, -5, 0,
-4, -8, 2, 3, 5]):
{linsolve (A,B)};
>
A := matrix(4,4,
[-2, -7, -8, -9,
-7, -5, 8, -7,
8, 7, 2, -5,
9, 9, -2, 8]):
B := matrix(4,5,
[-2, 2, 7, 2, 9,
-6, -8, -4, 0, -8,
7, -6, 8, 4, 5,
-2, -1, -5, -2, 2]):
linsolve (A,B);
Ci si può chiedere in particolare quando, data
esiste una matrice
tale che
(una tale
si chiama una
inversa destra
di
).
>
A := randmatrix(3,5):
linsolve(A,id(3));
>
A := randmatrix(5,3):
{linsolve(A,id(5))};
>
A := randmatrix(5,5):
linsolve(A,id(5));
Facciamo un esperimento: facciamo generare matrici casuali di dimensione 5 x 7 e vediamo per quante di esse esiste un'inversa destra.
>
successi := 0:
B := id(5):
for i from 1 to 500 do
A := randmatrix(5,7):
C:={linsolve(A,B)}:
if not C = {} then successi := successi + 1 end if:
end do:
successi;
Osservazioni
Si può dimostrare che una tale
non esiste se
è una matrice
x
con
, ma anche quando
non è detto che esista (contrariamente a quanto mostrerebbe l'esperimento).
>
A := matrix(5,7,
[-24, -55, -93, -70, 10, -55, -89,
-21, -93, -77, -57, 4, 89, -33,
15, 31, 23, -6, 42, -84, 51,
939, 192, 346, 38, -432, 1551, -1346,
90, 49, 59, 16, -20, 84, -78]):
{linsolve(A,id(5))};
quello che si può dimostrare è però che la probabilità che una tale matrice (
x
con
) non abbia una inversa destra è nulla.
Prendiamo una matrice quadrata
a caso, troviamo una sua inversa destra
(
siamo sicuri che esiste) e verifichiamo quanto fa
>
A := randmatrix (5,5):
C:=linsolve (A,id(5)):
evalm (A &* C );
Non poteva essere altrimenti. Ma quanto fa
?
> evalm (C &* A ) ;
Questo è un fatto generale:
se
è una matrice quadrata che ha un'inversa destra
allora tale
è unica e anche
.
Tale matrice
è detta l'
inversa
di
.
Maple può calcolare l'inversa di una matrice per mezzo dell'istruzione inverse
> inverse(A);
> equal(inverse(A),C);