Dom::Matrix()
pour les matrices de dimension quelconque,
soit avec
Dom::SquareMatrix(n)
pour les matrices carrées
de dimension n
.
La somme et le produit matriciel sont notés naturellement par les symboles
+
et *
.
Des fonctions permettant de manipuler lignes et colonnes, et d'effectuer les
décompositions classiques figurent dans le module d'algèbre
linéaire linalg
, qu'il vaut mieux charger par
export(linalg)
pour éviter d'avoir à répéter linalg::
.
Voici les fonctions matricielles principales.
Traitement de matrices | |
linalg::transpose |
Transposée |
linalg::det |
Déterminant |
linalg::rank |
Rang |
linalg::eigenValues |
Valeurs propres |
linalg::eigenvectors |
Vecteurs propres |
A^n |
Puissance d'une matrice |
exp(A) |
Exponentielle d'une matrice |
linalg::linearSolve |
Résout un système linéaire |
1/A |
Matrice inverse |
M:=Dom::Matrix(): m1:=M(5,3,2); m2:=M([[1,2,3],[4,5,6],[7,8,9]]); m1*m2; m2*m1; a:=M(10,1,func(i,i,j)); b:=M(10,1,func(x^i,i,j)); m:=M(10,10,1); ?linalg export(linalg): scalarProduct(a,b); a+b; transpose(a)*m; m*a; transpose(a)*m*b; m:=M(5,5,func((if i=j then a else b end_if),i,j)); Factor(det(m)); eigenValues(m); eigenValues(m, Multiple); m:=subs(m,a=1.0,b=2.0); 1/m; m^10; linalg::linearSolve(m, M(5,1,1)); identite:= M(5,5,func((if i=j then 1 else 0 end_if),i,j)); identite:= M(5,5,[1$5],Diagonal); MS5:=Dom::SquareMatrix(5); identite:= MS5([1$5],Diagonal); identite:= MS5::one;La différence principale avec d'autres systèmes est que MuPAD permet de définir précisément dans quel domaine sont les coefficients d'une matrice, et ce domaine peut contenir une fonction de normalisation qui est effectuée à chaque étape (voir la section 6).
A:=M([[a,b],[c,d]]): 1/A; M2:=Dom::Matrix(Dom::ExpressionField(normal)): A2:=M2(A): 1/A2; M3:=Dom::SquareMatrix(3,Dom::IntegerMod(23)): A3:=M3::random(): A3^10; B:=M([[cos(x), sin(x)], [ln(x), exp(x)]]); C:=map(B, series, x, 3); 1/C;