Documente Academic
Documente Profesional
Documente Cultură
Maple permite trabajar con matrices y sus operaciones tanto a nivel numérico como simbólico. Se
utilizan los algoritmos de librerías especiales, como NAG, LaPACK, ATLAS y MKL, para
proporcionar cálculos numéricos precisos en relación con las operaciones matriciales. Usando la paleta
de comandos especiales para generar matrices, podemos definir fácilmente cualquier matriz de tipo,
por ejemplo, 1000x1000 con coeficientes numéricos en forma de números decimales. El comando
esencial para las definiciones matriciales es el siguiente:
> Matrix(r, c, init, ro, sc, sh, st, o, dt, f, a)
Todos los parámetros del comando son opcionales. Sin embargo, el sistema necesita la información
suficiente para crear la estructura matricial. Si no hay especificaciones incluidas, la respuesta del
sistema es una matriz de tipo 0x0.
El comando
> Matrix(r)
genera una matriz cuadrada de orden r con coeficientes cero.
> Matrix(2);
El comando
> Matrix(r,c)
Genera una matriz de tipo rxc con coeficientes cero.
> Matrix(2,3);
> Matrix([[1,2,3],[4,5,6]]);
> with(LinearAlgebra):
V := <<1,2,3>|<4,5,6>|<7,8,9>|<10,11,12>>;
> MA := Matrix([[9,9,9,9],[9,9,9,9],[9,9,9,9],[9,9,9,9]]);
> C:=(3/2)*A;
La operación puede realizarse simbólicamente con una variable formal, por ejemplo λ/c., pero usando
un comando diferente:
> with(LinearAlgebra):
F:=ScalarMultiply(A,lambda/c);
Suma, producto y diferencia de matrices
Vamos a definir matrices con coeficientes variables y vamos a calcular su suma, producto y diferencia.
> M1:=Matrix([[cos(k*Pi*v),sin(k*Pi*v),0,0],[-sin(k*Pi*v),cos(k*Pi*v),0,0],
[0,0,1,0],[0,0,0,1]]);
> M2:=Matrix([[1,0,0,0],[0,cos(l*Pi*v),sin(l*Pi*v),0],[0,-sin(l*Pi*v),cos(l*Pi*v),0],
[0,0,0,1]]);
> M:=M1+M2;
> N:=M1.M2;
> K:=M1-M2;
Las operaciones con matrices, vectores y escalares pueden hacerse también por medio del paquete
LinearAlgebra.
> with(LinearAlgebra):
Ax := <1.00004,1.99987,-0.00012>:
b := <1.,2.,0.>:
Add(Ax,b,1,-1);
> s := <3|-2|7>;
> b := <x,y,z>;
> K:=Matrix([[1,1,0,0],[0,0,1,1],[1,1,1,0],[0,1,0,1]]);
> L:=K^(-1);
> E:=K.L;
El cálculo de la matriz inversa puede realizarse también con el comando Inverse en módulo n, o por
medio del comando MatrixInverse del paquete Linear Algebra:
> X := Matrix([[1,2,3],[1,3,0],[1,4,3]]);
> Z := X.Y;
> with(LinearAlgebra):
MatrixInverse(<<a,b>|<c,d>>);
> with(LinearAlgebra):
R := Matrix([[cos(alpha),-sin(alpha)],[sin(alpha),cos(alpha)]]);
> MatrixMatrixMultiply(R, Transpose(R));
> Map(simplify,%);
Matriz traspuesta
La función Transpose devuelve la matriz traspuesta de la matriz de entrada. Para ilustrar el cálculo de
la matriz traspuesta usaremos la matriz V definida anteriormente:
> Transpose(V);
Los mismos pasos pueden dares usando el paquete LinearAlgebra. Después de la definición de la
matriz M, con coeficientes generados aleatoriamente, la matriz traspuesta se calcula usando las
funciones Create, Transpose
> with(LinearAlgebra:-Modular):
M := Create(30,3,3,random,integer);
> Transpose(30,M,inplace): M;
El determinante de una matriz cuadrada es un número que puede calcularse usando el sistema de
reducción de Gauss. Maple realiza todos esos cálculos con una simple función: la función Determinant.
En el ejemplo siguiente, definimos en primer lugar una matriz triangular inferior M de la que
calculamos su determinante. En el último ejemplo, se calcula el determinante de una matriz N y se
muestra que el determinante puede calcularse definiendo la matriz en el interior de la función:
> with(LinearAlgebra):
M := Matrix(3,[[a],[b,c],[d,e,f]],shape=triangular[lower]);
> Determinant(M);
> N:=Matrix([[3,2,1,0],[7,6,5,4],[1,0,9,8],[5,4,3,2]]);
> Determinant(N);
> Determinant(Matrix([[3,2,1,0],[7,6,5,4],[1,0,9,8],[5,4,3,2]]));