MATLAB es un lenguaje de alto nivel y un entorno interactivo para el clculo
numrico, la visualizacin y la programacin. Mediante MATLAB, es posible analizar datos, desarrollar algoritmos y crear modelos o aplicaciones. El lenguaje, las herramientas y las funciones matemticas incorporadas permiten explorar diversos enfoques y llegar a una solucin antes que con hojas de clculo o lenguajes de programacin tradicionales, como pueden ser C/C++ o Java.
2. Para qu sirve Matlab? MATLAB se puede utilizar en una gran variedad de aplicaciones, tales como procesamiento de seales y comunicaciones, procesamiento de imagen y vdeo, sistemas de control, pruebas y medidas, finanzas computacionales y biologa computacional. Ms de un milln de ingenieros y cientficos de la industria y la educacin utilizan MATLAB, el lenguaje del clculo tcnico.
3. Cmo se usa Matlab? Se necesitan unos pocos comandos bsicos para empezar a utilizar MATLAB. Habr que definir vectores y matrices para poder modificarlos y operar con ellos. Se trata de comandos cortos de alto nivel, porque MATLAB trabaja constantemente con matrices. Creo que les gustarn las posibilidades que les ofrece este software para realizar operaciones de lgebra lineal mediante una serie de instrucciones cortas:
La palabra eye designa a la matriz identidad. La submatriz u = E(:,1) toma la primera columna de la anterior. La instruccin E(3, 1) = 5 coloca un 5 en el elemento (3, 1). El comando E* u multiplica las matrices E y u. Todos estos comandos se repiten en la lista que aparece a continuacin. Aqu se presenta un ejemplo de cmo invertir una matriz y resolver un sistema lineal:
Se sum una matriz formada por unos a eye(3), y b es su tercera columna. A continuacin, inv(A) genera la matriz inversa (normalmente en decimales, ya que para las fracciones se usa format rat). El sistema Ax = b se resuelve mediante x = inv(A) * b, el mtodo lento. El comando de la barra inversa x = A\b realiza la eliminacin gaussiana si A es cuadrada y nunca calcula la matriz inversa. Cuando la parte derecha de b sea igual a la tercera columna de A, la solucin para x tiene que ser [0 0 1]'. (El smbolo de la transpuesta ' convierte a x en un vector de columna.) Entonces A*x elige la tercera columna de A, y tenemos que Ax = b.
A continuacin aparece una serie de comentarios, precedidos por el smbolo %: Los smbolos a y A son diferentes: MATLAB distingue por defecto entre unos casos y otros. Escribir help slash para obtener una explicacin del modo de utilizar el smbolo de la barra inversa. La palabra help (ayuda) puede ir seguida de un smbolo o del nombre de un comando o de un archivo (de extensin .m) de MATLAB. Nota: El nombre del comando aparece con una mayscula inicial en la explicacin que da help, pero debe escribirse en minsculas al utilizarlo. La barra inversa A\b acta de forma distinta cuando A no es cuadrada. Para ver los nmeros con 16 dgitos, escribir format long (formato largo). El formato normal, format short (formato corto), muestra 4 dgitos decimales. Si se pone un punto y coma tras un comando, el programa no mostrar su resultado. A = ones(3); no mostrar la matriz identidad de 3 x 3. Utilizar la flecha del desplazamiento hacia arriba del cursor para volver a comandos anteriores.
Cmo introducir un vector de filas o de columnas u = [2 4 5] tiene una fila con tres elementos (matriz de 1 x 3). v = [2; 4; 5] tiene tres filas separadas por puntos y comas (matriz de 3 x 1). v = [2 4 5]' o v = u' transpone u para generar la misma v. w = 2:5 define el vector de filas w = [2 3 4 5] mediante valores que aumentan sucesivamente en una unidad. u = 1:2:7 asigna valores que aumentan en dos unidades para obtener u = [1 3 5 7]
Cmo definir una matriz (introduciendo las filas una por una) A = [1 2 3; 4 5 6] tiene dos filas (el punto y coma siempre separa unas filas de otras). A = [1 2 3 4 5 6] tambin genera la matriz A, pero es ms difcil de escribir. B = [1 2 3; 4 5 6]' es la transpuesta de A. As pues, AT es A' en MATLAB.
Cmo generar matrices especiales diag(v) genera una matriz diagonal con el vector v como diagonal. toeplitz(v) define una matriz simtrica de diagonal constante con v como primera fila y primera columna. toeplitz(w, v) define una matriz simtrica de diagonal constante con w como primera columna y v como primera fila. ones(n) genera una matriz de n n con todos los valores iguales a uno. zeros(n) genera una matriz de n n con todos los valores iguales a cero. eye(n) genera una matriz identidad de n n. rand(n) genera una matriz de n n con elementos de valor aleatorio entre 0 y 1 (distribucin uniforme). randn(n) genera una matriz de n n cuyos elementos siguen una distribucin normal (media 0 y varianza 1). 2 ones(m, n), zeros(m, n), rand(m, n) generan matrices de m n. ones(size(A)), zeros(size(A)), eye(size(A)) generan matrices de la misma forma que A.
Cmo cambiar elementos en una matriz A dada A(3, 2) = 7 coloca un 7 en el elemento (3, 2). A(3,:) = v sustituye los valores de la tercera fila por los de v. A(:, 2) = w sustituye los valores de la segunda columna por los de w. El smbolo de los dos puntos : significa todo (todas las columnas o todas las filas). A([2 3],:) = A([3 2],:) intercambia las filas 2 y 3 de A.
Cmo crear submatrices de una matriz A de m n A(i, j) muestra el elemento (i, j) de la matriz A (escalar = matriz de 1 1). A(i, :) muestra la fila i-sima de A (como vector de fila). A(:, j) muestra la columna j-sima de A (como vector de columna). A(2: 4,3: 7) muestra las filas de la 2 a la 4 y las columnas de la 3 a la 7 (en forma de matriz de 3 5). A([2 4],:) muestra las filas 2 y 4 y todas las columnas (en forma de matriz de 2 n). A(:) muestra una sola columna larga formada a partir de las columnas de A (matriz de mn 1). triu(A) coloca ceros en todos los elementos por debajo de la diagonal (triangular superior). tril(A) coloca ceros en todos los elementos por encima de la diagonal (triangular inferior).
Multiplicacin e inversin de matrices A * B da la matriz resultante del producto AB (si dicha operacin es posible). A. * B da el producto elemento por elemento (si size(A) = size(B), es decir, si tienen el mismo tamao) inv(A) da A-1 si A es cuadrada e invertible. pinv(A) da la pseudoinversa de A. A\B da inv(A) * B si existe inv(A): la barra inversa es la divisin por la izquierda. x = A\b da la solucin de Ax = b si existe inv(A).
Nmeros y matrices asociados a A det(A) es el determinante (si A es una matriz cuadrada). rank(A) es el rango (nmero de pivotes = dimensin del espacio de filas y del espacio de columnas). size(A) es el par de nmeros [m n]. trace(A) es la traza =suma de los elementos de la diagonal = suma de autovalores. null(A) es una matriz cuyas columnas n - r forman una base ortogonal para el espacio nulo de A. orth(A) es una matriz cuyas columnas r forman una base ortogonal para el espacio de columnas de A.
Archivos .m incluidos en el programa para realizar la factorizacin de matrices [L, U, P ] = lu(A) produce tres matrices donde PA = LU. e = eig(A) es un vector en el que se encuentran los valores propios de A. [S, E] = eig(A) produce una matriz diagonal de autovalores E y una matriz de autovectores S donde AS = SE. Si A no es diagonalizable (no tiene suficientes autovectores), S no es invertible. [Q, R] = qr(A) produce una matriz ortogonal Q de m m y una triangular R de m n, siendo A = QR.
Creacin de archivos de extensin .m Son archivos con la terminacin .m que MATLAB utiliza para trabajar con funciones y scripts. Un script es una secuencia de comandos que se pueden ejecutar a menudo y que se pueden guardar en un archivo de extensin .m para no tener que escribirlos de nuevo. Las demostraciones de MATLAB son un ejemplo de estos scripts. Fijmonos en la que lleva por nombre house (casa). La mayora de las funciones de MATLAB estn en realidad en archivos .m, y se pueden visualizar escribiendo type xxx, donde xxx es el nombre de la funcin. Para elaborar sus propios scripts o funciones, debern generar un nuevo archivo de texto con el nombre que ustedes quieran, siempre y cuando termine en .m, para que MATLAB lo reconozca. Este tipo de archivos se pueden crear, editar y guardar con cualquier editor de textos, como emacs, EZ, o vi. Un archivo de script es simplemente una lista de comandos de MATLAB. Cuando se escribe el nombre del archivo en el prompt de MATLAB, su contenido se ejecuta. Para que un archivo .m sea una funcin, tiene que empezar por la 4 palabra function seguida de las variables de salida entre parntesis, el nombre de la funcin y las variables de entrada.
Ejemplos function [C]=mult(A) r=rank(A); C =A' A; Guardar los comandos que aparecen arriba en un archivo de texto llamado mult.m. Esta funcin tomar la matriz A y mostrar solamente la matriz resultado C. La variable r no se muestra porque no se introdujo como variable de salida. Al final de los comandos se ha puesto ";" para que no aparezcan en la ventana de MATLAB cada vez que se ejecutan. Esto resulta til para trabajar con matrices grandes.
Guardar variables y matrices La instruccin diary graba tanto los comandos introducidos como la salida de MATLAB, pero no graba los valores de las variables y matrices. La orden whos elabora un lista de dichas variables, as como de las dimensiones de las matrices. El comando save xxx guarda las matrices y variables de esta lista en un archivo denominado xxx. MATLAB etiqueta estos archivos con una extensin .mat, en lugar de con la .m que usa para scripts y 5 funciones. MATLAB podr leer posteriormente los archivos xxx.mat mediante la orden load xxx.
Grficos El comando ms simple es plot(x, y), que utiliza dos vectores, x e y, de la misma longitud. ste dibujar los puntos (xi, yi) y los unir mediante rectas continuas. Si no se le da ningn vector x, MATLAB asume que x(i) = i. A continuacin plot(y) recibe el mismo espacio en el eje de las x: los puntos son (i, y(i)). Se pueden cambiar el tipo y color de la lnea que une los puntos mediante un tercer argumento. Si este argumento no existe, MATLAB dibuja por defecto una lnea continua de color negro "-". Introduciendo help plot se obtienen muchas opciones, aqu slo indicamos unas pocas: MATLAB 5: plot(x, y,'r+ :') dibuja r en rojo, los puntos en forma de + y unidos por lnea de puntos. MATLAB 4: plot(x, y,' --') dibuja una lnea discontinua y plot(x, y,''), una lnea de puntos. Se pueden omitir las lneas y representar slo los puntos discretos de distintas formas: plot(x, y,' o') dibuja crculos. Otras opciones son '+', 'x' o '*'. Para obtener dos grficas en los mismos ejes, utilizar plot(x, y, X, Y). Sustituyendo plot por loglog, semilogy o semilogx, se cambian uno o ambos ejes a la escala logartimica. El comando axis([a b c d]) ajusta el tamao del grfico al del rectngulo a x b, c y d. Para dar ttulo al grfico o marcar los ejes de las x o de las y, se escribe entre comillas la etiqueta deseada, como en los ejemplos siguientes: title (altura del satlite) xlabel (tiempo en segundos) ylabel (altura en metros')
El comando hold conserva el grfico anterior mientras se dibuja uno nuevo. Al repetir hold, se borra la pantalla. Para imprimir o guardar la pantalla de grficos en un archivo, vase help print o ejectese print Pnombre de la impresora print d nombre del archivo.
4. Cmo funciona? MATLAB puede almacenar informacin en variables tales como: a = 100 " <Ctrl> <ENTER> para evaluar la celda " Cada vez que capturamos informacin en MATLAB y presionamos <ENTER> sta es desplegada inmediatamente (letras en color azul), pero si ponemos un punto y coma al final de la instruccin MATLAB omite el desplegado de informacin. Por ejemplo: b = 50 ; Si se quiere saber el valor de alguna variable capturada slo se tiene que poner el nombre de la variable y <ENTER> y MATLAB lo despliega. Estas variables residen en el espacio de trabajo de MATLAB. b Las variables son sensibles a las maysculas, por lo que las siguientes variables son diferentes: Variable = 1 variable = 1 Las variables pueden contener hasta 19 caracteres. stas deben empezar con una letra, seguida por cualquier nmero de letras, dgitos o guiones de subrayado. Los caracteres de puntuacin no son permitidos en las variables. Cuando se trabaja con muchas variables estas son difciles de recodar. El comando who muestra un desplegado de todas aquellas variables que se han estado utilizando. who whos Muestra las variables con informacin adicional.
Caracteres especiales [ ] Son usados para formar vectores y matrices [ 1 2 3 ; 4 5 6 ] ( ) Usados para expresiones matemticas. sqrt(2) = Usado para hacer asignaciones. x = 5 ' Transpuesta de una matriz A' Usado para separar texto 'texto' . Punto decimal 3.1415 ... Al final de una lnea indican que continua 2,3,4,5,6 .... en el siguiente rengln. 7,8,9,10 ] , Para separar elementos [1,2,3,4] ; Para separar filas en las matrices. [ 1 2; 3 4] % Para hacer comentarios % este programa,etc. ! Para ejecutar un comando del Ms-dos !dir
Operaciones bsicas SUMA C = a + b RESTA d = a - b MULTIPLICACION e = a * b DIVISION F = a / b F = a \ b POTENCIA a ^ 2 Como este ltimo clculo no tena variable asignada, la respuesta se guarda en la variable ans (answer).
Borrado de variables. Para borrar el valor de una variable simplemente ponemos clear a Borra la variable " a " clear a b c Borra las variables " a ", " b " y " c " " CLEAR " Borra todas las variables y no se pueden recuperar.
Funciones trigonomtricas sin (0.5) Seno de (0.5) As mismo COS (X), TAN (X). Inversa: ASIN (X), ACOS (X), ATAN (X). Hiperblica: SINH (X), COSH (X), TANH (X). Inversa- Hiperblica: ASINH (X), ACOSH (X), ATANH (X).
Funciones matemticas especiales. abs ( -3) Valor absoluto o magnitud de un nmero complejo ceil ( 123.123123) Redondea hacia ms infinito FLOOR (X) Redondea hacia menos infinito FIX (X) Redondea hacia cero ROUND (X) Redondea hacia el entero ms prximo imag ( 30 - 5j ) Parte imaginaria de un nmero complejo REAL (X) Parte real de un nmero complejo ANGLE (X) Angulo de un nmero complejo CONJ (X) Complejo conjugado sign (-5) Funcin signo : Devuelve el signo del argumento (1 si es positivo, -1 si es negativo ) exp (1) Exponencial. REM (X,Y) Resto despus de la divisin (x / y) sqrt (2) Raz cuadrada
Operaciones Lgicas En MATLAB se pueden hacer operaciones lgicas, por ejemplo. 1 < 2 Como 1 es menor que 2, la respuesta es cierta por lo que obtenemos un 1. 1 < 1 Obtenemos un 0, porque 1 no es menor que 1. Como se puede observar las nicas respuestas posibles con las operaciones lgicas son: Cierto = 1 y Falso = 0.
Operadores relacinales: > Mayor que < Menor que >= Mayor o igual a <= Menor o igual a == Igual a ~= No igual a Existen tres operadores lgicos: AND & OR | NOT ~ Para que la operacin AND sea verdadera las dos relaciones deben ser verdaderas. Recordemos AND = 0 0 | 0 Falso 0 1 | 0 Falso 1 0 | 0 Falso 1 1 | 1 Verdadero ( 1 < 2 ) & ( 2 < 3) Verdadero. ( 1 < 2) & ( 2 < 1 ) Falso.
Para la operacin OR : 0 0 | 0 0 1 | 1 1 0 | 1 1 1 | 1 ( 1 < 2 ) | ( 2 < 1 ) Verdadero. Para la operacin NOT : ~ 0 | 1 ~ 1 | 0 ~ ( 2 < 1) Verdadero.
La variable NaN (Not a Number) Cuando en un lenguaje de programacin como basic, pascal o C, se da una situacin que el programa no pueda manejar, como una divisin como 0/0 el programa se detiene, marcando un error. Cuando en MATLAB se presenta una situacin similar el programa no se detiene, slo da una pequea advertencia de que se present una divisin entre cero. Y el resultado es un NaN, que es una variable interna no es un nmero).
5. Qu limitaciones o restricciones tiene? Durante mucho tiempo hubo crticas porque MATLAB es un producto propietario de The Mathworks, y los usuarios estn sujetos y bloqueados al vendedor. Recientemente se ha proporcionado una herramienta adicional llamada MATLAB Builder bajo la seccin de herramientas "Application Deployment" para utilizar funciones MATLAB como archivos de biblioteca que pueden ser usados con ambientes de construccin de aplicacin .NET o Java. Pero la desventaja es que el computador donde la aplicacin tiene que ser utilizada necesita MCR(MATLAB Component Runtime) para que los archivos MATLAB funcionen correctamente. MCR se puede distribuir libremente con los archivos de biblioteca generados por el compilador MATLAB. LabVIEW GNU Octave, software libre similar a matlab. SAS Scilab Mathcad SciPy & Numerical Python Lenguaje R lgebra computacional:
6. Sistemas de ecuaciones lineales Hay dos clases diferentes de mtodos de sistemas de ecuaciones lineales simultneas resolver: Los mtodos directos son por lo general las variantes de eliminacin de Gauss. Estos mtodos implican los elementos de matriz individuales directamente, a travs de operaciones de la matriz tales como LU o factorizacin de Cholesky. MATLAB implementa mtodos directos a travs de la divisin de matrices operadores / y \, que se puede utilizar para resolver sistemas lineales. Los mtodos iterativos producen slo una solucin aproximada despus de un nmero finito de pasos. Estos mtodos implican la matriz de coeficientes de manera indirecta, a travs de un producto matriz-vector o un operador lineal abstracto. Los mtodos iterativos se aplican generalmente slo para matrices dispersas. Mtodos directos Los mtodos directos son generalmente ms rpido y de aplicacin ms general que los mtodos indirectos, si hay suficiente almacenamiento disponible para llevarlos a cabo. Los mtodos iterativos son generalmente aplicables a los casos restringidos de ecuaciones y dependen de las propiedades como la dominancia diagonal o la existencia de un operador diferencial subyacente. Los mtodos directos se aplican en el ncleo del software MATLAB y se hacen tan eficiente como sea posible para las clases generales de matrices. Los mtodos iterativos se implementan normalmente en archivos MATLAB-lenguaje y pueden utilizar la solucin directa de subproblemas o pre acondicionadores. El uso de un preordering diferente. Si A no es diagonal, en bandas, triangular, o una permutacin de una matriz triangular, la barra invertida (\) reordena los ndices de A a reducir la cantidad de relleno-in, es decir, el nmero de entradas no nulas que se agregan a la escasa matrices de factorizacin. El nuevo ordenamiento, llamado pre orden, se lleva a cabo antes de la factorizacin de A. En algunos casos, puede ser capaz de proporcionar un mejor pre orden que el utilizado por el algoritmo de la barra invertida. Para utilizar un pre orden diferente, primero apague ambos preorderings automticos que barra invertida podra realizar de forma predeterminada, utilizando los spparms funcin de la siguiente manera: defaultParms = spparms ('autoamd', 0); spparms ('autommd', 0); Ahora, suponiendo que haya creado una permutacin vector p que especifica un preorden de los ndices de A, se aplica la barra invertida a la matriz A (:, p), cuyas columnas son las columnas de A, permutado segn el vector p. x = A (:, p) \ b; x (t) = x; spparms (defaultParms); Los spparms comando (defaultParms) restablece los controles a su estado anterior, en caso de que utilicen A \ b tarde sin especificar una pre orden apropiado. Mtodos iterativos Once funciones estn disponibles que implementen mtodos iterativos para sistemas dispersos de sistemas lineales simultneos.
7. Sistema de ecuaciones no lineales
De manera ms fcil podemos utilizar las rutinas internas de MATLAB, que encuentran races de ecuaciones no lineales. Algunas de estas son:
fzero(fun,x0): Encuentra una raz de la funcin f (x) = f un, que debe ser definida antes o all mismo con la instruccin inline. Esta instruccin busca un cero de f un cerca del punto x0 especificado por el usuario, y se basa en los mtodos de la secante, biseccin e interpolacin cuadrtica inversa, por lo que la funcin ingresada debe ser continua.
Por ejemplo, para el ejemplo 1 podemos digitar: >> x=fzero(inline(0.5*exp(x/3)-sin(x)),0) con la cual obtenemos: x = 6.7721e-001 roots(p): Encuentra todas las races de un polinomio p, tanto reales como complejas. Para usarla es necesario tener en cuenta que en MATLAB, un polinomio se representa por medio de un vector de coeficientes Por ejemplo, para calcular todas las races del polinomio P (x) = x5 + 3x3 2x + 1, Debemos digitar la instruccin: >> r=roots([1 0 3 0 -2 1]) (donde el vector [1 0 3 0 -2 1] representa al Polinomio P).con la cual obtenemos: r =8 -3.3865e-002 +1.8892e+000i -3.3865e-002 -1.8892e+000i -9.0261e-001 4.8517e-001 +2.7374e-001i 4.8517e-001 -2.7374e-001i Que como vemos coincide con lo que esperbamos: Las races complejas siempre vienen por pares conjugados y hay al menos una raz real.
8. Sistema de ecuaciones diferenciales ordinarias En la siguiente tabla se muestran los solucionadores de problemas iniciales de valor, el tipo de problema que pueda ser resuelto con cada programa de solucin, y el mtodo utiliza cada solucionador.
Evaluacin y Extensin Puede utilizar las siguientes funciones para evaluar y ampliar soluciones a ecuaciones diferenciales ordinarias.
Una estructura de opciones contiene propiedades con nombre, cuyos valores se pasan a solucionadores ODE, y que afectan la solucin del problema. Utilice estas funciones para crear, modificar o acceder a una estructura de opciones.
Funciones de salida Si se especifica una funcin de salida, el solucionador llama a la funcin especificada despus de cada paso de integracin exitosa. Usted puede utilizar odeset para especificar una de estas funciones de ejemplo como la propiedad OutputFcn, o puede modificarlos para crear sus propias funciones
EDOs de primer orden Una ecuacin diferencial ordinaria (ODE) contiene uno o ms derivados de una variable dependiente y con respecto a una nica variable independiente t, normalmente se conoce como tiempo. La derivada de y con respecto a t se denota como Y ', la segunda derivada como Y'', y as sucesivamente. A menudo, y (t) es un vector, que tiene elementos de y1, y2, ..., yn. Solucionadores de MATLAB manejar los siguientes tipos de ecuaciones diferenciales ordinarias de primer orden: EDOs explcitos de la forma y '= f (t, y) EDO lineal implcitos de la forma M (t, y) y '= f (t, y), donde M (t, y) es una matriz ODEs totalmente implcitos de la forma f (t, y, y ') = 0 (ode15i solamente)
ODEs de orden superior Solucionadores ODE MATLAB slo aceptan las ecuaciones diferenciales de primer orden. Para usar los solucionadores con ODEs de orden superior, debe reescribir cada ecuacin como un sistema equivalente de primer orden ecuaciones diferenciales de la forma y '= f (t, y) Usted puede escribir cualquier ecuacin diferencial ordinaria y (n) = f (t, y, y ', ..., y (n - 1)) como un sistema de ecuaciones de primer orden al hacer las sustituciones y1 = y, y2 = y ', ..., yn = y (n - 1) y1 = y, y2 = y ', ..., yn = y (n - 1) El resultado es un sistema equivalente de n ODEs de primer orden.
Reescribe la ecuacin de van der Pol de segundo orden
Como un sistema de ODEs de primer orden. Los valores iniciales Generalmente hay muchas funciones y (t) que satisfacen una ODE dado, y la informacin adicional es necesaria para especificar la Solucin de su inters. En un problema de valor inicial, la solucin de inters satisface una condicin inicial especfica, es decir, y es igual a y0 en un tiempo t0 inicial dada. Un problema de valor inicial para una EDO es entonces
Si la funcin f (t, y) es suficientemente lisa, este problema tiene una y slo una solucin. Generalmente no hay una expresin analtica para la solucin, por lo que es necesario aproximar y (t) por medio numricos.
9. Ejemplos de problemas de la ingeniera qumica para resolverse con estos sistemas.