sparse
) que nous n'aborderons pas.
Il est important de garder à l'esprit que tous les calculs
numériques dépendent de la représentation des nombres réels en
machine, et que donc les résultats ``exacts'' n'existent pas.
La détection de singularités dépend d'une précision
prédéfinie et n'est donc pas infaillible.
rank([1,1;1,1]) rank([1.00000000000001,1;1,1]) rank([1.000000000000001,1;1,1]) inv([1,1;1,1]) A=[1,2,3;4,5,6;7,8,9] det(A) rank(A) inv(A) // le calcul est effectue A*inv(A) // ce n'est pas l'identiteSi
A
et B
sont deux matrices, alors A\B
retourne
une matrice X
telle que A*X=B
, et B/A
une matrice
X
telle que X*A=B
pourvu que les dimensions
de A
et B
soient compatibles. Si A
n'est pas une
matrice carrée inversible, ces commandes retourneront un résultat,
qu'il y ait une infinité de solutions ou qu'il y en ait aucune.
A=[1,2,3;4,5,6;7,8,9] b=[1;1;1] x=A\b // le systeme a une infinite de solutions A*x b=[1,1,1] x=b/A // le systeme a une infinite de solutions x*A b=[1;1;2] x=A\b // le systeme n'a pas de solution A*x b=[1,1,2] x=b/A // le systeme n'a pas de solution x*APour résoudre un système linéaire quand on craint une singularité, il vaut mieux utiliser
linsolve
, qui détecte
les impossibilités et peut retourner une base du noyau de la matrice
en cas de solutions multiples. Attention, linsolve(A,b)
résout
A*x=-b
.
A=[1,2,3;4,5,6;7,8,9] b=[1;1;1] [x,k]=linsolve(A,b) A*x A*k b=[1;1;2] [x,k]=linsolve(A,b) // erreurLa commande
[D,U]=bdiag(A)
retourne (en théorie) une matrice diagonale
D
et une matrice inversible U
telles que
U*D*inv(U)=A
.
A=diag([1,2,3]); P=rand(3,3); A=P*A*inv(P) spec(A) [D,U]=bdiag(A) // matrice diagonalisable inv(U)*A*U U*D*inv(U)-A A=[1,0,0;0,1,1;0,0,1]; P=rand(3,3); A=P*A*inv(P) spec(A) [D,U]=bdiag(A) // matrice non diagonalisable inv(U)*A*U U*D*inv(U)-A
Opérations matricielles | |
A' |
transposée de A |
rank |
rang |
inv |
inverse |
expm |
exponentielle matricielle |
det |
déterminant |
trace |
trace |
poly(A,"x") |
polynôme caractéristique de A |
spec |
valeurs propres de A |
bdiag |
diagonalisation |
svd |
décomposition en valeurs singulières |
A\b |
solution de A*x=b |
b/A |
solution de x*A=b |
linsolve(A,b) |
solution de A*x=-b |