Matrices [avanzado] en la TI-nSpire CX CAS

El Splashscreen del Student Software

El Splashscreen del Student Software

Pasaron los días, semanas y meses… y por fin encontré la manera de trabajar con matrices que había esperado. Como había escrito en una entrada anterior, no estaba seguro de cómo accesar miembro a miembro, como se hace en los diferentes lenguajes que he manejado (C, C++, C#, Pic-C, Python, Java, PHP). Busqué en Google y no encontré mucho -o mejor dicho nada- que se acercara a lo que necesitaba, únicamente encontré algunos pocos tutoriales, incluso desde la página de TI, no encontré satisfacción a mi problema, antes de ponerme a estudiar de pasta a pasta el manual de la calculadora, pude hayar la forma de trabajar 🙂 Así que vamos a ello.

Para empezar, hay que saber lo básico sobre las matrices, y es que éstas son ‘arreglos rectangulares’ de datos -en programación, en matemáticas es algo muy similar, pero no exactamente igual-. Pueden ser uni-dimensionales (llamadas vectores, de n-elementos) o tener varias dimensiones. La calculadora trabaja con Vectores y Matrices de nxm elementos, lo cual ya se vio en la entrada acerca de las “Listas”.

Ahora, ¿cómo se crean las matrices en la calculadora? Hay varios métodos. Dentro de una hoja de Calculadora, debemos apretar la tecla menú, ir a 7. Matrices y Vectores y añadir una nueva. Luego, escogemos las dimensiones. Es un poco incómodo, pero hay otras formas.

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Tras ello, tendremos una matriz de 3×3 ‘en blanco’ lista para ser llenada por literales (números) o variables. Yo uso otro método, más veloz, el cual dejaré en un gif animado:

Click en la Imagen Animada para Ampliar

Click en la Imagen Animada para Ampliar

Podemos efectuar diferentes operaciones sobre las matrices, primero que nada, me gustaría tomar la matriz de 3×3 que hice en una variable, llamada ‘a’, así que utilizaré la sintaxis que me gusta ( := ) para hacerlo.

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Empecemos con las multiplicaciones, multiplicación escalar y multiplicación matricial. Veremos el resultado de multiplicar a ‘a’ por 2. Lo cual, según las propiedades del producto escalar, nos dará como salida cada miembro multiplicado por 2, lo cual guardaremos en otra matriz, llamada ‘b’, con la sintaxis que no me gusta (->).

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Ahora tenemos 2 matrices, ‘a’ y ‘b’, donde ‘b’ es la matriz ‘a’ multiplicada por 2. Tenemos otra sintaxis para poder hacer asignaciones de matrices -o listas- a variabes. Ahora declararemos una matriz llamada ‘c’ que sea la multiplicación de ‘a’ y ‘b’ (en ese orden, pues la multiplicación de matrices no es conmutativa). La sintaxis es ‘Define variable = matriz’:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

¿Qué pasa si queremos Operar Matrices y no solo escalares? Solamente basta indicar la operación, ya sea en notación matricial o con las variables que las representan, así como se hizo para obtener C como A*B, ejemplos:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Vamos a operaciones sobre las matrices que requieren un poco más que los operadores básicos. Empecemos con la matriz inversa. Para ello se necesita únicamente elevar (la matriz o la variable) a -1, lo cual nos dará el inverso tal cual lo hace con reales o complejos. hay que recordar que la matrices singulares (aquellas matrices cuadradas cuyo determinante es 0) no tienen matriz inversa, así como tampoco aquellas que no son cuadradas. Así que declararé una matriz ‘d’ totalmente nueva:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

¿Cómo sacar el determinante? Esto es válido solamente para matrices cuadradas, lo cual se debería saber de antemano, pero reitero. No importa la dimensión de estas; a mano, una matriz de 5×5, 10×10… serían un poco tardadas, hay diferentes métodos (que luego explicaré), pero de momento me quedaré con la función ‘det’ para este fin. Como se puede ver:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Transponer una matriz o vector es realmente simple, cambiar renglones por columnas, pero también poseemos una manera simplificada, con una pequeña ‘T’ que podemos encontrar en nuestro menú de símbolos. Esto es, más que por dificultad, porque al hacer programas a veces necesitamos transponer y así nos facilitamos el trabajo de crear una función que lo haga.

Click en la Imagen Animada para Ampliar

Click en la Imagen Animada para Ampliar

Existen muchas funciones, cuyos nombres explican su función, algunas comunes como intercambiar renglones, otros como las operaciones permitidas en el método de Gauss: multiplicar un renglón por un escalar y sumarlo a otro renglón, como se ve aquí, La función multiplica el rengón 1 de la matriz ‘a’, y se lo suma al renglón 2:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Para lograr automatizar procesos iterativos, tenemos diferentes herrramientas, algunas de las más cómodas son la “Notación Sigma” o los Ciclos (For, While). Pero hasta la fecha, no sabía cómo aprovechar las matrices en este lenguaje, dado que lo máximo que había hecho era obtener un renglón de la matriz, al igual que con las listas, accediendo con la notación “[índice]”, como se ve en esta imagen del viejo post:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Lo que se obtiene en la imagen se conoce, al parecer, como sub-matrices, las cuales no solamente se pueden acceder así, sino también hay una función específica para ello, pero a mí, en este momento, no me sirve para nada útil. Ahora, lo que yo deseaba era obtener acceso a cada elemento por separado, ya sea para tomar el dato o para guardar un nuevo dato en en ese espacio de la matriz. La Sintaxis de C, C#, Python, Java, suele ser “Matriz[índice1][índice2]”, pero para la TI-nSpire CX CAS utilizaríamos “Matriz[índice1,índice2]”, por ejemplo:

Click en la Imagen para Ampliar

Click en la Imagen para Ampliar

Si bien, tenemos una función para obtener la traza de la matriz, por poner un ejemplo, podemos utilizar la notación sigma para obtenerla, lo cual nos da una idea de cómo, con ciclos For, por ejemplo, podemos aprovechar las matrices en nuestros programas:

Click en la Imagen Animada para Ampliar

Click en la Imagen Animada para Ampliar

Todo esto funciona para números reales y para números complejos. Con Fracciones, enteros o números en coma flotante. Pronto, más ejemplos (asociados a Análisis de Circuitos Eléctricos).  De momento, espero que haya sido útil para alguna persona. Saludos.

 

 

 

Anuncios

~ por wkats en octubre 26, 2013.

12 comentarios to “Matrices [avanzado] en la TI-nSpire CX CAS”

  1. Trabajo muy bueno. Por favor saquen la publicidad, que además de ser de mal gusto, le resta prestancia a la página.

  2. y como seria para de una matriz 6×6 por ejemplo extraer toda la submatriz 3×3 de la esquina superior izquierda?? Muchas gracias

  3. Recién adquirí la TI, por lo que no sé mucho aún, así es que te agradezco mucho hayas publicado lo que te has demorado en encontrar! Saludos!

  4. Excelente aporte, muy digno de felicitaciones, espero algún momento ver ejemplos de aplicación de matrices para sistemas de control.

  5. Es un buen aporte

  6. Como puedo ver el procedimiento paso a paso de la matriz inversa en la TI Nspire CX Cas ?

  7. Busca algún algoritmo para sacar la matríz inverza (por ejemplo, con la matriz adjunta) y en tu programa vas imprimiendo con disp los pasos que te agraden. Directamente la TI Nspire no tiene funciones del tipo “hacer x procedimiento paso a paso” pero como es programable no resulta problemático hacer nuestras propias funciones que sí lo hagan. Yo he hecho muchas funciones así para hacer mis tareas más rápidas.

  8. Apenas tengo 1 día con la TI Nspire, no se como hacer esas funciones que mencionas, me gustaría saber si me podrías decir como hacerlas o que necesito para hacerlas, en si las operaciones que quiero realizar son resolver matrices por el método de Gauss y Gauss Jordan paso a paso, no solamente ver el resultado final.

  9. Ok, entonces lo que deberías hacer es buscar un pseudocódigo del algoritmo Gauss-Jordan (https://es.scribd.com/doc/51580302/Gauss-Jordan-Programa) (http://acodigo.blogspot.mx/2014/03/gauss-jordan.html) y hacer tus propias funciones, hay un par de tutoriales básicos para la programación de esta calculadora, si necesitas más información del algoritmo, en google seguramente encuentras algo más, no es nada complicado.

  10. Ok, 1000 Gracias.

  11. No prometo nada, tal vez haga algo pronto, ya que pudiera ser algo muy útil. Sin embargo, si buscas en inglés, creo que ya están programados esos algoritmos paso por paso, si no lo recuerdo mal. Suerte

  12. Hola, estoy buscando por todos lados como cambiar un elemento de una matriz por otro por ejemplo y=[1,2,3;4,5,6;7,8,9] quiero cambiar el elemento y23 o cualquier elemento que desee por un número (ejemplo:5) … ojalá puedas ayudarme

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: