Section : Listes et matrices
Précédent : Manipulation de listes
Suivant : Programmation

Matrices

Les matrices sont plus que des listes de listes. On les construit soit à l'aide du constructeur 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;


Section : Listes et matrices
Précédent : Manipulation de listes
Suivant : Programmation