Programa matrix, permite manipular matrices de m*n, pudiéndose utilizar más de una matriz durante la ejecución.
Los elementos de las matrices pueden ser floatBCD, rationalBCD, complex o expresiones de los anteriores tipos (use la orden type).
Este programa extiende la funcionalidad del programa simplify, agregando el tipo matrix y permitiendo usar funciones propias de las matrices. Por lo anterior, se recomienda leer el manual del programa simplify (simplifymanual.txt).
Las funciones del tipo base usadas sobre una matriz se traducen en la aplicación de dichas funciones a cada elemento de la matriz.
El indicador (símbolo que significa que se está esperando una orden o expresión del teclado) para el programa es ':', que se convierte a '#:' cuando se trabaja en modo calculadora.
Si es una matriz de un sólo elemento, puede teclearse dicho elemento sólo, por ejemplo:
256
Pero si los elementos de las matrices son considerados expresiones (use la orden type) se deberán usar los corchetes:
[256]
Si consta de más de un elemento, deberá de encerrarse entre corchetes y separar los elementos
por medio de tabuladores:
[1 2 3
4 5]
donde:
- La tecla (CRLF) significa el fin de una fila de la matriz
- Se toma como ancho de la matriz el tamaño de la fila más larga que se encuentre
- Los elementos no definidos en un fila se inicializan con el valor 0
Lo anterior es válido cuando las matrices se obtiene de un flujo de entrada distinto a la entrada estándar (por ejemplo, archivos). Cuando la matriz se obtiene de la entrada estándar se debe considerar lo siguiente:
La orden (o expresión o matriz) puede ser de una a varias líneas, para finalizar la orden sólo debe teclear cuando haya terminado de teclear. Para indicar al intérprete que la orden continúa en la siguiente línea, debe teclear ';' (punto y coma) al final de la línea que pretende continuar, seguido de la tecla . Ejemplo:
: det([1 2;
3 4])
Lo anterior devuelve -2, que es el determinante de la matriz tecleada.
Es posible teclear expresiones con las matrices:
[1 2]+[2 3]
cuyo resultado será:
[1+2 2+3]
Las siguientes funciones se aplican (en general, se pueden aplicar todas las funciones del tipo base) a cada elemento de la matriz A, donde A es una variable que contiene una matriz (el programa crea las variables desde m1 hasta m9 automáticamente).
abs(A), calcular valor absoluto
fact(A), calcular factorial
real(A), obtener parte real
imag(A), obtener parte imaginaria
conj(A), obtener conjugado
norm(A), obtener la norma
isComplex(A), determinar si estamos trabajando con números complejos
exp(A), calcular e^a[i][j]
log(A), calcular logaritmo base 10
ln(A), calcular logaritmo base e
sin(A), calcular seno
sinh(A), calcular seno hiperbólico
asin(A), calcular arco seno
cos(A), calcular coseno
cosh(A), calcular coseno hiperbólico
acos(A), calcular arco coseno
tan(A), calcular tangente
tanh(A), calcular tangente hiperbólica
atan(A), calcular arco tangente
cot(A), calcular cotangente
acot(A), calcular arco cotangente
sec(A), calcular secante
asec(A), calcular arco secante
csc(A), calcular cosecante
acsc(A), calcular arco cosecante
sqrt(A), calcular la raíz cuadrada
eval(A), aplica la función eval a los elementos de A, tiene sentido cuando los elementos son expresiones
simplify(A), aplica la función simplify a los elementos de A, tiene sentido cuando los elementos son expresiones. Debe usarla sólo en un entorno multihilo y con matrices pequeñas, ya que se consumen muchos recursos con esta operación.
decimal(A), indica que los elementos de A se imprimirán en formato decimal
fraction(A), indica que los elementos de A se imprimirán en formato de fracción
reducef(A), indica que se aplicará reducción a los elementos de A, si son fracciones
primeFactors(A), calcular los factores primos
isInteger(A), determinar si es entero
isFraction(A), determinar si tiene decimales
isPositive(A), determinar si es positivo
isNegative(A), determinar si es negativo
isZero(A), determina si A es equivalente a la matriz cero, es decir, si cada elemento es cero
isEqual(A,B), determina si A y B son iguales
Y tenemos funciones que usan dos matrices escalares como argumentos:
min([...],[...]) //si son matrices escalares, devuelve el mínimo de sus únicos elementos
max([...],[...]) //similar a la función anterior
pow(nth,[...]) //nth debe ser una matriz escalar y entera; se eleva el último argumento a la nth potencia
root([...],nth) //nth debe ser una matriz escalar y entera; se extrae la raíz nth al primer argumento
Contamos también con las siguientes funciones, propias de las matrices:
gauss(A), realiza la eliminación gaussiana a la matriz A
gj(A), realiza la eliminación de Gauss-Jordan a la matriz A
inv(A), calcula la matriz inversa de A
trans(A), contruye la traspuesta de A
det(A), calcula el determinante de A
tr(A), calcula la traza de A
muld(A), calcula el producto de los elementos de la diagonal de A
conmutan(A,B), determina si las dos matrices conmutan
diag(A), devuelve una matriz fila cuyos valores son tomados de la diagonal de A
isDiag(A), determina si A es una matriz es diagonal
makeDiag(A), construye una matriz diagonal con los valores de la primer fila de A
isTriangle(A), determina si A es triangular superior
isDownTriangle(A), determina si A es triangular inferior
isSymetric(A), determina si A es simétrica
isAntisymetric(A), determina si A es antisimétrica
isOrtogonal(A), determina si A es ortogonal
isNormal(A), determina si A es normal
a_h(A), devuelve la traspuesta conjugada de A
isHermitic(A), determina si A es hermítica
isAntihermitic(A), determina si A es antihermítica
isUnitary(A), determina si A es unitaria
Todas las funciones devuelven matrices nuevas con los resultados, es decir, no modifican los valores de la matriz que es pasada como argumento.
A las órdenes que procesa el programa simplify (y que también procesa este programa) se suman o modifican las siguientes:
vars
Muestra las variables existentes y sus valores para cada tipo de datos (matrix, expression y number)
funcs
Muestra las funciones existentes para cada tipo de datos (matrix, expression y number)
type
Muestra los tipos de datos que intervienen en las expresiones, es decir, matrix, expression (si es el tipo de los elementos de las matrices), y el tipo base de las expresiones.
matrix nombre_de_matriz
Declara una nueva matriz. Después de declararla (por ejemplo "matrix A") puede asignarle un valor de la siguiente manera: A=[2 3]
load nombre_de_matriz from nombre_de_archivo
Lee una matriz desde el archivo nombre_de_archivo y la coloca en la variable nombre_de_matriz. La variable nombre_de_matriz debe haber sido declarada (o debe ser una de las que el programa crea automáticamente, es decir, desde m1 hasta m9) y el nombre de archivo debe terminar en .mtx, aunque en el programa no se teclea .mtx. Los archivos con matrices se guardan y se leen en el subdirectorio llamado 'datos' ubicado en el directorio del programa.
reload nombre_de_matriz
Vuelve a leer los datos de la matriz nombre_de_matriz desde el archivo del que se leyeron la primera vez.
save nombre_de_matriz to nombre_de_archivo
Guarda la matriz nombre_de_matriz al archivo nombre_de_archivo. Si ya existía tal archivo será sobreescrito. El nombre de archivo no necesita finalizar con .mtx, ya que el programa se lo agrega automáticamente.
edit nombre_de_matriz
Abre el programa Notepad con el archivo fuente de la matriz nombre_de_matriz. Si desea ver los cambios realizados a ese archivo en la matriz, deberá usar la función reload.
Ariel Medina V. - Facultad de Ingenieria de la UAC - Campeche, Cam., MX