
![]() |
|
![]() |
Cálculo matricialCálculo matricialAdemás del cálculo escalar, iBASIC soporta de forma nativa el cálculo matricial. Solo lenguajes o entornos más específicos soportan esta característica, como FORTRAN o Matlab. Con iBASIC, el uso de vectores o matrices es igual de fácil que usar números escalares. Modo de operacióniBASIC dispone de dos modos de funcionamiento, escalar (el tradicional) y matricial. El modo es seleccione por código, y se puede cambiar de uno a otro cuantas veces se quiera:
Por defecto, iBASIC funciona en modo escalar. Sólo es en el modo matricial en donde se podrán realizar las operaciones sobre matriciales y usar la extensión de funciones matriciales. La razón de disponer de estos son modos es la velocidad de ejecución del programa BASIC. En el modo matricial, todos los números y expresiones son tratrados como matriciales, por lo que la velocidad de ejecución se ve sensiblemente mermada, entorno al 10% más despacio que en el modo escalar. Es por ello, que se puede conmutar a modo matricial (matrix mode) cuando se requieran hacer cálculos matriciales para luego volver al escalar (scalar mode). Definición de matricesLa definición de vectores y matriciales se hace de la forma habitual en BASIC, usando la orden DIM, y opcionalmente, con la orden OPTION BASE para definir el índice inicial:
Debido al funcionamiento de la orden DIM, en donde el índice comienza en cero, es aconsejable usar la orden OPTION BASE 1 para definir el índice inicial a uno:
Operaciones con matricesSe disponen de todas las operaciones y funciones matemáticas escalares pero reinterpretadas al ámbito matricial. Se pueden hacer cosas como las siguientes:
Paso a paso:
Todas las operaciones y funciones matématicas presentes en el modo escalar, en el modo matricial se pueden seguir usando pero aquí, operarán sobre cada elemento de los operandos. MXRND es una de las funciones matriciales que se disponen. Todas ellas empiezan por MX y solo se pueden usar en modo matricial. Compatibilidad de matricesCuando se hacen operaciones con matrices, iBASIC comprueba que éstas sean compatibles, esto es, que la operación se pueda realizar. Siguiendo el ejemplo anterior, no se puede hacer la igualdad b=a porque tienen distintas dimensiones, sin embargo sí que es posible la asignación de las submatrices b(1, *) = a(2..3) ya que ambas (submatrices) tienen la misma dimension (1) y tamaño (2 elementos). Un caso particular son las matrices que se definen como "dinámicas", como el caso de la matriz "c" del ejemplo anterior (DIM c). Estas matrices, cuando se usan en una orden de asignación, se adaptan a las dimensiones de la matriz resultante del cálculo. SubmatricesComo se ha visto en el ejemplo, iBASIC permite especificar submatrices, tanto a la izquierda como a la derecha de las expresiones, esto es, se pueden extraer o asignar zonas de una matriz. La sintaxis para especificar submatrices es muy sencilla, y para explicar mejor, unos ejemplos:
Las submatrices pueden usarse en cualquier expresión, tanto como operando y como destino de los cálculos:
Funciones matricialesEn el modo matricial se disponen de un conjunto de funciones para trabajar con matrices, comenzando todas ellas con el prefijo MX:
|
Free web design software by PersonalWebKit |