Program Matrix, allows handling m*n matrices, you can use more than one matrix during the execution. Matrix items can be floatBCD, rationalBCD, complex or expressions of the formers types (use the command type). This program extends the operation of the program Simplify, adding the type Matrix and allowing to use functions appropriate to the matrices.Therefore, it is recommended to read the manual of the program Simplify (simplifymanual_en.txt). The functions of the base type that are used over a matrix, provoke the application of those functions over every item of the matrix. The prompt (symbol that prompts the program is waiting for a command or expression from the keyboard) is ':', which is becomed to '#:' when you are working in calculator mode. If the matrix has only one item, you can type this item as it is, for example: 256 But, if the items are considered as expressions (use the command type) you should use the brackets: [256] If It has more than one item, you should close these ones with brackets and separate with Tabs: [1 2 3 4 5] where: - The key (CRLF) means the end of a matrix row - It takes as width of the matrix the size of the longest row found - The items not defined in a row are initialized with the value 0 The latter is valid when the matrices are obtained from a input stream which is different to the standar input (for example, files). When the matrix is obtained from standar input, you should consider this: The command (or expression or matrix) can have one or more lines, to finish the command you only should type when you have finished of typing. In order to say to the shell that the command continues at the next line, you must type ';' (semicolon) at end of the line you want to continue, followed for the key . Example: : det([1 2; 3 4]) The latter yields -2, what the determinant of the typed matrix is. It is possible to type expressions with the matrices: [1 2]+[2 3] whose the result will be: [1+2 2+3] The next functions applies (generally, All funtions of the base type can be applied) to every item of the matrix A, where A es a variable that contains a matrix (the program automatically creates variables from m1 to m9). abs(A), calculates the absolute value fact(A), calculates the factorial real(A), gets the real part of a complex number imag(A), gets the imaginary part of a complex number conj(A), gets the conjugate of a complex number norm(A), gets the absolute value of a complex number isComplex(A), let us know if we are working with complex numbers exp(A), calculates e^a[i][j] log(A), calculates logarithm of the base 10 ln(A), calculates logarithmo of the base e sin(A), calculates sine sinh(A), calculates hyperbolic sine asin(A), calculates arc sine cos(A), calculates cosine cosh(A), calculates hyperbolic cosine acos(A), calculates arc cosine tan(A), calculates tangent tanh(A), calculates hyperbolic tangent atan(A), calculates arc tangent cot(A), calculates cotangent acot(A), calculates arc cotangent sec(A), calculates secant asec(A), calculates arc secant csc(A), calculates cosecant acsc(A), calculates arc cosecant sqrt(A), calculates the squared root eval(A), applies the function eval to every item of A, It has sense when the items are expressions simplify(A), applies the function simplify to every item of A, it has sense when the items are expressions. You should use it only on a multi-thread environment and with small matrices, because this operation consumes too much resources. decimal(A), prompts to the program to print items of A in decimal format (iiii.dddd) fraction(A), prompts to the program to print items of A in fraction format (nn/dd) reducef(A), promts to the program to reduce the items of A, if they are fractions primeFactors(A), calculates the prime factors isInteger(A), let us know if is integer isFraction(A), let us know if has decimals isPositive(A), let us know if is positive isNegative(A), let us know if is negative isZero(A), let us know if A is equal to the matrix zero, it means, if every item is zero isEqual(A,B), let us know if A and B are equals each other And we have functions that use two scalar matrices as arguments: min([...],[...]) // if they are two scalar matrices, yields the minimum of their unique items max([...],[...]) // alike to the previous function pow(nth,[...]) // nth must be a scalar and integer matrix; it raises the last argument to the power of nth root([...],nth) // nth must be a scalar and integer matrix; it calculates the root nth of the first argument Aside we have the next functions, appropriate to the 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 matrix_name from file_name 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 matrix_name Read again the data of the matrix matrix_name from the file whose it was read the first time. save matrix_name to file_name Saves the matrix matrix_name to the file archivo file_name. If a such file exists, it will be overwritten. The name of the file does not need to end with .mtx, because the program automatically adds it. edit matrix_name Opens the programa Notepad with the source file of the matrix matrix_name. If you want to see the made changes to that file in the matrix, you should use the function reload. Ariel Medina V. - Engineering faculty of the Autonomous University of Campeche - Campeche, Cam., MX