Tutorial de Matlab Basico

32
Tutorial de Matlab Matlab Básico 1.1 Introducción 1.2 Características Básicas 1.3 Matlab como Calculadora 1.4 Números y Formatos 1.5 Variables 1.6 Caracteres y órdenes especiales en MATLAB 1.7 Explorador del espacio de trabajo (Workspace Browser) 1.8 Almacenar y recuperar datos 1.9 El comando "diary" 1.10 Comandos de lectura y Escritura 1.11 Funciones matemáticas en MATLAB 1.12 Otras funciones en matlab. 1.13 Vectores 1.14 Transposición de vectores 1.15 Matrices (Arrays) 1.16 Visualización de elementos de una matriz 1.17 Matemática de vectores con escalares 1.18 Matemáticas de arrays con arrays 1.19 Operadores Relaciónales y Lógicos en vectores 1.19.1 Operadores Relaciónales 1.19.2 Operadores Lógicos. 1.20 Manipulación de Texto 1.21 Representación ASCII de una cadena 1.22 Álgebra Lineal y Matrices 1.22.1 Adición de matrices: 1.22.2 Sustracción de matrices 1.22.3 Multiplicación de una matriz por un número 1.22.4 Multiplicación de matrices: 1.23 Clases de Matrices 1.23.1 Matriz Transpuesta 1.23.2 Matriz Simétrica 1.23.3 Matriz inversa 1.24 Determinante de una Matriz 1.25 Rango de una Matriz 1.26 Generación de matrices especiales en Matlab 1.26.1 Matriz identidad 1.26.2 Matriz Nula 1.26.3 Matriz Unidad 1.27 Funciones en matrices y vectores 1.28 Sistemas de Ecuaciones Lineales 1.29 Solución de sistemas lineales mediante matlab 1.29.1 Método de descomposición LU 1.29.2 Solución con el operador Slash (\ ) 1.29.3 Solución por la matriz inversa 1.29.4 Método de reducción a la forma canónica 1.30 Funciones Poli nómicas 1.31 Raíces 1.32 Suma de Polinomios 1.33 Multiplicación de Polinomios 1.34 División de Polinomios: Ing. Jaime Miguel Flores Mujica - 1 -

Transcript of Tutorial de Matlab Basico

Page 1: Tutorial de Matlab Basico

Tutorial de Matlab

Matlab Básico

1.1 Introducción 1.2 Características Básicas 1.3 Matlab como Calculadora 1.4 Números y Formatos 1.5 Variables 1.6 Caracteres y órdenes especiales en MATLAB 1.7 Explorador del espacio de trabajo (Workspace Browser) 1.8 Almacenar y recuperar datos 1.9 El comando "diary" 1.10 Comandos de lectura y Escritura 1.11 Funciones matemáticas en MATLAB 1.12 Otras funciones en matlab. 1.13 Vectores 1.14 Transposición de vectores 1.15 Matrices (Arrays) 1.16 Visualización de elementos de una matriz 1.17 Matemática de vectores con escalares 1.18 Matemáticas de arrays con arrays 1.19 Operadores Relaciónales y Lógicos en vectores

1.19.1 Operadores Relaciónales 1.19.2 Operadores Lógicos.

1.20 Manipulación de Texto 1.21 Representación ASCII de una cadena 1.22 Álgebra Lineal y Matrices

1.22.1 Adición de matrices: 1.22.2 Sustracción de matrices 1.22.3 Multiplicación de una matriz por un número 1.22.4 Multiplicación de matrices:

1.23 Clases de Matrices 1.23.1 Matriz Transpuesta 1.23.2 Matriz Simétrica 1.23.3 Matriz inversa

1.24 Determinante de una Matriz 1.25 Rango de una Matriz 1.26 Generación de matrices especiales en Matlab 1.26.1 Matriz identidad 1.26.2 Matriz Nula 1.26.3 Matriz Unidad 1.27 Funciones en matrices y vectores 1.28 Sistemas de Ecuaciones Lineales 1.29 Solución de sistemas lineales mediante matlab 1.29.1 Método de descomposición LU 1.29.2 Solución con el operador Slash (\ ) 1.29.3 Solución por la matriz inversa 1.29.4 Método de reducción a la forma canónica 1.30 Funciones Poli nómicas 1.31 Raíces 1.32 Suma de Polinomios 1.33 Multiplicación de Polinomios 1.34 División de Polinomios:

Ing. Jaime Miguel Flores Mujica - 1 -

Page 2: Tutorial de Matlab Basico

Tutorial de Matlab

1.1 Introducción: El gran avance de la ciencia, en especial de las ramas de la ingeniería crea la necesidad de recurrir a sistemas informáticos para encontrar soluciones rápidas a muchos problemas reales, que se presentan en el área de la ingeniería. MATLAB es un programa interactivo para computación numérica y visualización de datos, ampliamente usado por Ingenieros de todas las especialidades tanto en el análisis y diseño, posee además una extraordinaria versatilidad y capacidad para resolver problemas de matemática aplicada, física, química, ingeniería, finanzas y muchas otras. Está basado en un sofisticado software que permite resolver complicados problemas numéricos sin necesidad de escribir un programa. Es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y visualización gráfica de los mismos. Integra análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente, sin necesidad de hacer uso de la programación tradicional. El nombre de MATLAB proviene de la contracción de los términos Matrrix Laboratory y fue inicialmente concebido para proporcionar fácil acceso a las librerías LINPACK y EISPACK, las cuales representan en la actualidad dos de las librerías más importantes en computación y cálculo matricial. MATLAB es un sistema de trabajo interactivo cuyo elemento básico de trabajo son las matrices. El programa permite realizar de un modo rápido la resolución numérica de problemas en un tiempo mucho menor que otros lenguajes de programación tradicionales como Fortran, Basic o C. MATLAB goza en la actualidad de un alto nivel de aceptación en escuelas colegios y centros universitarios, como también en departamentos de investigación y desarrollo de muchas compañías industriales. En entornos universitarios, por ejemplo, MATLAB se ha convertido en una herramienta básica, tanto para los profesionales e investigadores, como una importante herramienta para cursos universitarios, tales como sistemas e ingeniería de control, álgebra lineal, procesamiento digital de imágenes y señales, etc. En el mundo industrial, MATLAB está siendo utilizado como herramienta de investigación para la resolución de complejos problemas planteados en la realización y aplicación de modelos matemáticos en ingeniería. Los usos más característicos de la herramienta los encontramos en áreas de computación y cálculo numérico tradicional, prototipaje algorítmico, teoría de control automático, estadística, análisis de series temporales para el proceso digital de señal. MATLAB dispone en la actualidad de un amplio abanico de programas de apoyo especializados, denominados Toolboxes, que extienden significativamente el número de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales del mundo de la ingeniería y la simulación, destacando entre ellos el 'toolbox' de proceso de imágenes, control robusto, estadística, análisis financiero, matemáticas simbólicas, redes neuronales, lógica difusa, identificación de sistemas, simulación de sistemas dinámicos, etc. Además dispone del programa Simulink que es un entorno gráfico interactivo con el que se puede analizar, modelizar y simular la dinámica de sistemas no lineales. MatLab emplea matrices porque con ellas se puede describir infinidad de situaciones de una forma altamente flexible y matemáticamente eficiente. Una matriz de pixeles puede ser una imagen o una película. Una matriz de fluctuaciones de una señal puede ser un sonido o una voz humana. Y tal vez más significativamente, una matriz puede describir una relación lineal

Ing. Jaime Miguel Flores Mujica - 2 -

Page 3: Tutorial de Matlab Basico

Tutorial de Matlab

entre los componentes de un modelo matemático. En este último sentido, una matriz puede describir el comportamiento de un sistema extremadamente complejo. Por ejemplo una matriz puede representar el vuelo de un avión a 40.000 pies de altura, o un filtro digital de procesamiento de señales. MatLab está disponible para una amplio número de plataformas: estaciones de trabajo como SUN, Apollo, VAXstation y HP, VAX, MicroVAX, Gould, Apple Macintosh y PC AT compatibles 80386 o superiores. Opera bajo sistemas operativos UNIX, Macintosh y Windows. 1.2 Características Básicas Luego de instalar el software en su computadora. Al ejecutarse MATLAB aparece en la pantalla una ventana como se muestra en la figura. Desde esta ventana es dónde interactuamos con MATLAB.

El prompt " >> " es el indicativo de petición de órdenes de MATLAB, el cual indica que MATLAB está esperando una orden. Al lado de este símbolo ">>" aparecerá el cursor parpadeando. Cuando MATLAB da una respuesta, lo hará precedida de las letras "ans=" (que es la abreviatura de answer). Para empezar a utilizar MATLAB se debe conocer una serie de características, como que MATLAB no tiene en cuenta los espacios en blanco a la hora de operar. Además, las operaciones se evalúan de izquierda a derecha, con la operación de potencia teniendo el orden de preferencia más alto, seguido por la multiplicación y la división (ambas con igual preferencia), y seguidas por último por la suma y la resta (estas dos también con igual preferencia). 1.3 Matlab como Calculadora. Como se indico anteriormente, MATLAB realiza operaciones matemáticas simples, de la misma forma que si fuera una calculadora científica. Veamos un pequeño ejemplo de cómo realizar cálculos en MATLAB. Comenzaremos por operaciones sencillas, como sumas y multiplicaciones:

Ing. Jaime Miguel Flores Mujica - 3 -

Page 4: Tutorial de Matlab Basico

Tutorial de Matlab

>>4+6+2 >>4*25+6*22+2*99 >>2^2+1

Si introducimos las anteriores operaciones en MATLAB, obtenemos los siguientes resultados: >> 4 + 6 +2 ans = 12 >> 4*25+6*22+2*99 ans = 430 >> 2^2+1 ans = 5 Las operaciones aritméticas básicas en MATLAB son:

OPERACIÓN SÍMBOLO EJEMPLO Suma ( a + b ) + 5 + 3 = 8 Resta ( a - b ) - 32 - 12 = 11

Multiplicación ( a x b ) * 5 * 4 = 20

División (a / b) / ó \ 10 / 2 = 5 = 2 \ 10

2 / 10 = 0,2 = 10 \ 2 Potencia ( a b ) ^ 5 ^ 2 = 25

Es importante resaltar que la división en MATLAB puede hacerse en dos sentidos, dependiendo de hacia que lado esté inclinada la barra (se realiza la división del número que se encuentre "encima" de la barra entre el que esté "debajo", "encima / debajo" ó "debajo \ encima").

Se pueden emplear paréntesis para alterar la preferencia en las operaciones, en cuyo caso la evaluación se inicia dentro del paréntesis más interno y procede hacia afuera: Como ejemplo tenemos lo siguiente:

>> 3^2-5-6/3*2 ans = 0 >> 3^2-5-6/ (3*2) ans = 3 >> 4*3^2+1 ans = 37 >> (4*3)^2+1 ans = 145 1.4 Números y Formatos. MATLAB sigue algunas reglas para visualizar resultados numéricos. Por defecto, si un resultado es entero, MATLAB lo visualiza como un número entero. Cuando un resultado es un número real, MATLAB lo visualiza con cuatro dígitos a la derecha del punto decimal. Si los

Ing. Jaime Miguel Flores Mujica - 4 -

Page 5: Tutorial de Matlab Basico

Tutorial de Matlab

dígitos significativos en el resultado están fuera de este rango, se visualiza el resultado en notación científica. Aparte de estas conductas por defecto, se puede especificar un formato numérico diferente usando la opción "Numerical Format", en el menú "Options", o escribiendo la orden apropiada en MATLAB:

ORDEN DE MATLAB RESULTADO QUE SE

VISUALIZA ACLARACIÓN

format long 35.83333333333334 16 dígitos format short e 3.5833e+01 5 dígitos + exponente format long e 35.83333333333334e+01 16 dígitos + exponentes format hex 4041eaaaaaaaaaab hexadecimal format bank 35.83 2 dígitos decimales

format + + indica si un número es

positivo, negativo o cero format rat 215 / 6 aproximación racional format short 35.8333 visualización por defecto

A pesar de todos estos formatos de visualización, MATLAB no cambia la representación interna de un número cuando se cambian los diferentes formatos: sólo se modifica la visualización en pantalla. 1.5 Variables. Una forma de realizar cálculos es almacenando la información en variables. MATLAB lo hace de forma muy sencilla, como se muestra a continuación, en el siguiente ejemplo. >> A = 4; >> B = 6; >> C = A + B C = 10 >> manzanas = 4; >> plátanos = 6; >> fruta = manzanas + plátanos fruta = 10 MATLAB tiene reglas acerca de los nombres de las variables y estas son:

• a).- Los nombres de variables deben tener una sola palabra. Si se quiere usar dos o más palabras se utiliza el guión de subrayado para unirlas, por ejemplo:

"coste_fruta" en lugar de "coste fruta"

• b).-Las variable son sensibles a las mayúsculas, por ejemplo, las siguientes variables son totalmente distintas:

"fruta”, "Fruta”, "FrUta”, "FRUTA”...

• c).-Las variables pueden contener hasta 19 caracteres (los caracteres más allá de 19 se ignoran).

Ing. Jaime Miguel Flores Mujica - 5 -

Page 6: Tutorial de Matlab Basico

Tutorial de Matlab

• d).- Las variables deben comenzar con una letra, seguida por un número de letras, dígitos o guiones de subrayado. No se permiten los caracteres de puntuación, que muchos tienen un significado especial en MATLAB.

Además de estas reglas de denominación, MATLAB tiene variables especiales. Estas variables especiales también pueden redefinirse, pero cuando volvamos a arrancar MATLAB se reestablecen los valores iniciales. Algunas de ellas son: ans Nombre por defecto de la variable usada para los resultados pi Razón de una circunferencia a su diámetro

eps Número más pequeño tal que cuando se le suma 1, crea un número en coma flotante mayor que uno en el computador

inf Infinito, por ejemplo, 1/0 NaN Magnitud no Numérica (Not a Number), por ejemplo, 0/0 i y j i = j = sqrt (-1) realmin El número real positivo más pequeño que es utilizable realmax El número real positivo más grande que es utilizable

Las variables en el espacio de trabajo de MATLAB se borran con la orden "clear":

>> clear manzanas Borra solo la variable manzanas >> clear A B Borra ambas variables A y B

>> clear Borra todas las variables en el espacio de trabajo, y no se pueden recuperar (cuidado, no se pide confirmación para esta orden)

1.6 Caracteres y órdenes especiales en MATLAB Algunos caracteres especiales en MATLAB son:

• ; El punto y coma al final de la línea le indica a MATLAB que evalúe la línea, pero que no se visualice la repuesta, como ejemplo:

>> A = 4; >> B = 6 B = 6 >>

• , El símbolo de coma permite escribir varias sentencias en una sola línea, visualizando el resultado de todas ellas.

>> A = 4 , B = 6 A = 4 B = 6 >>

• ... Los puntos suspensivos indican a MATLAB que la sentencia continúa en la línea siguiente, como ejemplo tenemos:

>> A = 4 ; B = 6 ; C = 2 ; >>D = A*2 + B*1………… C*2

Ing. Jaime Miguel Flores Mujica - 6 -

Page 7: Tutorial de Matlab Basico

Tutorial de Matlab

D = 18 >>

• % Este símbolo al inicio de una sentencia indica que lo que viene detrás es un comentario, y que MATLAB lo ignora. Esta característica nos permite facilitar la comprensión de lo que se esta haciendo, documentando cada paso si fuera necesario:

>> manzanas = 2 % Definimos el numero de manzanas manzanas = 2 >> También se puede encontrar una serie de comandos especiales como:

Quit o exit

Las órdenes "quit" o "exit" terminan la ejecución de MATLAB

clear Borra todas las variables de la memoria, aunque no afecta a lo que vemos en pantalla

clc Despeja la ventana de comandos

clf Despeja la ventana de gráficos, borrando la figura actual

1.7 Explorador del espacio de trabajo (Workspace Browser) El espacio de trabajo de MATLAB es un área de memoria accesible desde la línea de comandos de MATLAB. Para ver el contenido de ese espacio de memoria, se puede usar dos comandos: who y whos. La diferencia entre ellos es:

Who: muestra una lista corta de las variables que se definieron en Matlab.

• Por ejemplo, si a definido las siguientes variables: A=25, B=2, y C=2*A+B, al teclear who en la línea de comandos de MATLAB se obtendrá lo siguiente:

>> A = 25; >> B = 2; >> C = 2* A+B; >> who Your variables are: A B C Whos: muestra la lista de variables, el tamaño que ocupan, e información de como está almacenada la variable.

• Cuando usamos estas órdenes, MATLAB no nos indica el valor de las variables, simplemente da sus nombres. Para encontrar el valor de cada variable hay que introducir el nombre de la variable en el indicativo o prompt de MATLAB, y presionar Enter.

>> A = 25; >> B = 2; >> C = 2* A+B; >> whos Name Size Bytes Class A 1x1 8 double array

Ing. Jaime Miguel Flores Mujica - 7 -

Page 8: Tutorial de Matlab Basico

Tutorial de Matlab

B 1x1 8 double array C 1x1 8 double array Grand total is 3 elements using 24 bytes >> En MATLAB es posible recordar las órdenes previas que se han usado en el espacio de trabajo mediante las teclas de flechas o cursores. Por ejemplo, pulsando la tecla de flecha hacia arriba una vez, se obtiene la orden más reciente que se ha tecleado en MATLAB. Pulsando la misma tecla repetidas veces, se obtendrán las órdenes anteriores en sentido inverso una a una.

De forma similar, pulsando la flecha hacia abajo volvemos a desplazarnos hacia adelante. En cualquier momento, se pueden emplear las teclas izquierda y derecha para mover el cursor dentro de la orden y modificarla. De esta forma, se puede editar las órdenes, lo cual es muy útil a la hora de corregir errores.

Para borrar todas las variables del espacio de trabajo de MATLAB, basta con teclear clear. Sin embargo, si lo que queremos es borrar alguna variable concreta, pondremos clear seguido del nombre de la variable, por ejemplo, >> clear A

Existe una forma de ver el espacio de trabajo de MATLAB, de igual forma que si utilizáramos la orden whos, pero de una forma gráfica. Esto se consigue con el Explorador del espacio de trabajo. Para ello, basta con ir a la opción Show Workspace del menú File o el botón de la barra de herramientas Workspace Browser, como muestra la grafica.

El aspecto del workspace browser es el siguiente:

Desde aquí podemos borrar variables de forma directa.

Ing. Jaime Miguel Flores Mujica - 8 -

Page 9: Tutorial de Matlab Basico

Tutorial de Matlab

Para renombrar una variable, basta con seleccionarla con el ratón y volver a clickar sobre ella. Escribimos encima el nuevo nombre y pulsamos Enter.

1.8 Almacenar y recuperar datos Además de recordar variables, MATLAB puede guardar y cargar datos en un archivo. La orden "Save Workspace As…" en el menú "File" abre un cuadro de diálogo estándar para guardar todas las variables actuales.

La orden "Load Workspace" en el menú "File" abre un cuadro de diálogo para cargar variables de un espacio de trabajo guardado previamente.

Si cargamos variables que poseen el mismo nombre que las que se encuentran en el espacio de trabajo de MATLAB, se cambian los valores de las variables a aquellos cargados en el archivo.

También es posible teclear por pantalla las órdenes "Save" y "Load" para salvar o cargar el espacio de trabajo, pero con especificaciones concretas, por ejemplo:

• Save. Almacena todas las variables del espacio de trabajo con formato

binario en un archivo llamado "matlab.mat". Los datos pueden recuperarse con "Load"

• save nombre archivo. Usa el archivo "nombrearchivo. mat" en lugar del

archivo por defecto "matlab.mat"

• save nombre archivo variables. Guarda una selección de las variables del espacio de trabajo actual que le indiquemos después del nombre del archivo.

• save nombre archivo keywords. Especifica las características de los

datos a ser guardados en formato ASCII, en lugar del formato binario -MAT. Las palabras clave (keywords) válidas son:

• ascii (usa la forma ascii de 8 dígitos) • double (usa la forma ascii de 16 dígitos) • abs (indica que los datos están separados por tabuladores)

Load. Recupera todas las variables que están almacenadas en el archivo "matlab.mat" Load nombrearchivo. Recupera las variables desde el archivo "nombrearchivo" Load nombrearchivo.extensión. Lee el archivo "nombrearchivo.extensión" que puede ser un archivo ASCII con un array rectangular de datos. El resultado es una matriz de tamaño "m x n" con el mismo nombre que el archivo. Los datos ASCII deben estar en formato de matriz, o MATLAB será incapaz de usarlos cuando se recuperan. Si no salvamos el espacio de trabajo de ninguna forma, cuando reiniciemos MATLAB se perderán todas las variables e información existentes que no hayamos guardado anteriormente.

1.9 El comando "diary" El comando diary crea un "diario" de las diferentes sesiones de MATLAB en un archivo que se puede ver o modificar con cualquier procesador de texto. Este "diario" incluirá todos los

Ing. Jaime Miguel Flores Mujica - 9 -

Page 10: Tutorial de Matlab Basico

Tutorial de Matlab

comandos que hayamos usado, así como su salida. Lo único que no mostrará serán las gráficas. Para empezar a grabar el diario, teclearemos >> diary, y para finalizar >>diary off. Si se quiere usar un nombre determinado en el fichero, se realizara con: >>diary nombre_archivo 1.10 Comandos de lectura y Escritura Matlab provee una forma sencilla de leer variables desde el teclado y visualizar mensajes en la pantalla a través de las siguientes funciones: Input: Permite el ingreso de datos al programa a través del teclado asignándolo a una variable, esta orden puede usarse con un mensaje en la línea de comandos. Luego de imprimir el mensaje, la orden espera que el usuario digite el valor numérico, vector, matriz o cualquier expresión valida de matlab. >> z = imput ( ); o >> z = input (´ Ingrese un número ´); Es decir asigna a la variable z el número ingresado. Pero también es posible ingresar una cadena, esto se realiza con el siguiente comando: >> z = imput (`ingrese su nombre`, `s `) Es decir a la variable z le asigna la cadena ingresada, en donde s indica que la entrada que se realizara por teclado es una cadena. fprintf: Permite la visualización de un valor numérico o el resultado de una expresión guardada por el usuario. >> vol = 49; >> fprintf ( `el volumen de la esfera es: ´ %12.0 f \ n ´, vol ) En esta expresión (\ n ) indica que la impresión de la variable vol será en la siguiente línea Además: % 12.0 f : formato de un numero entero % 12.5 f : formato de un numero real con 5 decimales disp: Permite visualizar en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad disp siempre imprime vectores y/o matrices, lo que quiere decir que las cadenas de caracteres se consideran un caso particular de vectores. Ejemplo: >> disp ( `Esto es una prueba ´) ; >> disp (pi); >>disp (`El programa ha terminado) >> A = rand( 4,4) >> disp(A) 1.11 Funciones matemáticas en MATLAB

Ing. Jaime Miguel Flores Mujica - 10 -

Page 11: Tutorial de Matlab Basico

Tutorial de Matlab

MATLAB ofrece un sin número de funciones, las que aceptan como argumento variables reales y/o complejas sin discriminación, así como argumentos matriciales. Funciones Trigonométricas.

Función Descripción sin(x) Seno de x asin(x) Arcoseno de x sinh(x) Seno hiperbolico de x asinh(x) Arcoseno hiperbolico de x cos(x) Coseno de x acos(x) Arcoseno de x acos(x) Arcocoseno(x) cosh(x) Coseno hiperbolico de x acosh(x) Arcocoseno hiperbolico de x tan(x) Tangente de x atan(x) Arco tangente de x tanh(x) Tangente hiperbolico de x

atanh(x) Arcotangente hiperbolico de x

cot(x) Cotangente de x sec(x) Secante de x csc(x) Cosecante de x

Ejemplo: >> x = [1, 2,3; 9, 8,7] >> sin (x) Devuelve como resultado 0.8415 0.9093 0.1411 0.41121 0.9894 0.6570 Los corchetes se utilizan para definir una variable con múltiples valores: >> x = [0.8 0.9 0.1; 0.8 0.9 0.1; 0.4 0.9 0.6] >>z = asin(x) Devuelve 0.9273 1.1198 0.1002 0.9273 1.1198 0.1002 0.4115 1.1198 0.6435 >> x = 5* cos (pi /6), y = 5* sin (pi /6) x = 4.3301 y = 2.500 1.12 Otras funciones en matlab.

Funcion Descripción abs(x) Valor absoluto de x

Ing. Jaime Miguel Flores Mujica - 11 -

Page 12: Tutorial de Matlab Basico

Tutorial de Matlab

sqrt(x) Raíz cuadrada de x real(x) Parte real del numero complejo x imag(x) Parte imaginaria del numero complejo x sign(x) Función signo de x exp(x) Exponencial de x log(x) Logaritmo natural de (x) Log10(x) Logaritmo decimal de x Log2(x) Logaritmo en base 2 de x min(x) Devuelve el valor mínimo de un arreglo x max(x) Devuelve el valor máximo de un arreglo

sort(x) Ordena los elementos del arreglo x en forma ascendente

sum(x) Calcula la suma de todos los elementos del arreglo x

Num2str(x) Convierte en cadena el numero x Str2double(x) Convierte en numero real la cadena x

Ejemplo: >> x = [-3 4 -11 0] >> abs( x)

3 4 11 0 >> x = [2 1 5] >> sort(x)

1 2 5 >>sort( [2 1 5]´ ) 1 2 5 1.13 Vectores Una variable que representa un vector de longitud "n" se define en MATLAB introduciendo entre corchetes los elementos del vector, separados por comas o por espacios en blanco: Según su orientación, es posible hablar de vectores fila: >>vector = [1, 2, 3, 4,5] % vector fila separado por comas vector = 1 2 3 4 5 >> vector = [ 1 2 3 4 5 ] % vector fila, separado por espacios vector = 1 2 3 4 5 O vectores columna, separando las columnas por puntos y comas: >> vector 2 = [ 1 ; 2 ] vector 2 = 1 2 Al aplicar la mayoría de los comandos y funciones de MATLAB sobre una variable vectorial, el resultado que se obtiene es la aplicación del comando o función sobre cada elemento del vector:

Ing. Jaime Miguel Flores Mujica - 12 -

Page 13: Tutorial de Matlab Basico

Tutorial de Matlab

>> vector1 = [1 2 3 4 5]; >> vector 1*2 ans =

2 4 6 8 10

Existen diferentes formas de definir una variable vectorial sin necesidad de explicitar entre corchetes todos sus elementos separados por comas o espacios en blanco. Estas otras formas crean vectores cuyos elementos siguen una relación dada:

Vector = [primer _ elemento: último _elemento] Define el vector cuyos primero y último elementos son los especificados, y los

elementos intermedios se diferencian en una unidad. Entre el primer y último elemento se utiliza el símbolo " : "

>> vector1 = [1: 10] vector1 = 1 2 3 4 5 6 7 8 9 10 La instrucción:

Vector = [primer elemento: incremento: último elemento]. Define el vector cuyos primero y último elementos son los especificados, y los

elementos intermedios se diferencian en la cantidad especificada por el incremento. También los separamos por " : "

>> vector2 = [0: 5: 20] vector2 = 0 5 10 15 20

La instrucción: vector = linspace (primer elemento, último elemento , n) Define el vector cuyos primero y último elementos son los especificados, y que tiene

en total "n" elementos uniformemente espaciados entre sí. En este caso, los datos son separados por comas, y en lugar de corchetes, utilizamos paréntesis:

>> vector3 = linspace ( 0,20,6) vector3 = 0 4 8 12 16 20 % Se obtiene 6 números entre 0 y 20 uniformemente espaciados

1.14 Transposición de vectores Matlab puede convertir vectores fila a vectores columna y viceversa con mucha facilidad utilizando para ello (‘). Ejemplo: >> W, W’ >> W = [1 -2 3] W = 1 -2 3 ans = 1 -2 3

Ing. Jaime Miguel Flores Mujica - 13 -

Page 14: Tutorial de Matlab Basico

Tutorial de Matlab

Cuando los vectores son números complejos se realiza de la misma forma, Ejemplo: >> X = [1+3i, 2-2i ]; >> X , X' X = 1.0000 + 3.0000i 2.0000 - 2.0000i ans = 1.0000 - 3.0000i 2.0000 + 2.0000i En el ejemplo se realizo la transposición del vector fila a un vector columna pero obtenemos el conjugado de los números complejos, para realizar la transposición sin la conjugada se utiliza lo siguiente, (.’). En el ejemplo: >> X=[1+3i, 2-2i]; >> X , X.' X = 1.0000 + 3.0000i 2.0000 - 2.0000i ans = 1.0000 + 3.0000i 2.0000 - 2.0000i 1.15 Matrices (Arrays) Para definir una matriz en MATLAB, basta con introducir entre corchetes todos sus vectores fila separados por punto coma. A su vez, los vectores fila se pueden introducir separando sus componentes por espacios en blanco o por comas, tal como se vio anteriormente.

>> matriz1=[a11 a12 a13 ; a21 a22 a23 ; a31 a32 a33 ] >> matriz1=[a11 , a12 , a13 ; a21 , a22 , a23 ; a31 , a32 , a33 ]

Ejemplo: >> X= [1, 4, 5,8; 5, 0, 0,2; 0, 1,-7,3] X = 1 4 5 8 5 0 0 2 0 1 -7 3 1.16 Visualización de elementos de una matriz En MATLAB, los elementos individuales de una matriz (array) se acceden utilizando "subíndices". Por ejemplo, para el caso de un vector x(1) es el primer elemento en "x", x(2) es el segundo elemento en "x", etc... >> x = [2 4 6 8 10]; >> x(1) ans = 2 >>x(3) ans = 6

Ing. Jaime Miguel Flores Mujica - 14 -

Page 15: Tutorial de Matlab Basico

Tutorial de Matlab

Esta instrucción funciona tanto para elementos de vectores fila como de vectores columna. Para el caso de elementos de una matriz tenemos X (i, j). >> X= [1, 4, 5,8; 5, 0, 0,2; 0, 1,-7,3] X = 1 4 5 8 5 0 0 2 0 1 -7 3 >> X(2,3) ans = 0 Es decir se esta visualizando el elemento de la matriz que se encuentra ubicado en la fila 2 y la columna 3, si se quiere visualizar el elemento que se encuentra en la fila 3 y columna 4 tendremos: >> X(3,4) ans = 3 Pero en una matriz también es posible visualizar todos los elementos de una fila o de una columna, para ello hacemos X( i,:) >> X(2,:) ans = 5 0 0 2 En este caso con la instrucción se visualizo todos los elementos de la fila 2. De la misma forma para visualizar todos los elementos de una columna se realiza X(:, j ). >> X(:,3) ans = 5 0 -7 Es decir se visualiza los elementos de la columna 3 Es posible acceder al mismo tiempo a un bloque cualquiera de elementos, Ejemplo: >> X= [1, 4, 5,8; 5, 0, 0,2; 0, 1,-7,3] X = 1 4 5 8 5 0 0 2 0 1 -7 3 >> X(2:3) ans = 5 0 >> X(2:4) ans = 5 0 4

Ing. Jaime Miguel Flores Mujica - 15 -

Page 16: Tutorial de Matlab Basico

Tutorial de Matlab

1.17 Matemática de vectores con escalares La suma, resta, multiplicación, división y potencia de un vector por un escalar, simplemente aplica la operación a todos los elementos del vector: >>x = [2 4 6 8 10]; >> x-2 % Resta 2 a cada elemento de x ans = 0 2 4 6 8 >>2* x-1 % multiplica por 2 cada elemento de x, y le resta 1 ans = 3 7 11 15 19 En las operaciones entre vectores y escalares, existe el mismo orden de preferencia que en las expresiones de solo escalares. 1.18 Matemáticas de arrays con arrays Las operaciones matemáticas entre arrays no son tan simples como las que ocurren entre escalares y arrays. Las operaciones entre arrays de diferentes longitudes son difíciles de definir.

Cuando dos arrays tienen la misma longitud, la suma, la resta, la multiplicación y la división pueden aplicarse de la forma elemento a elemento. Por ejemplo:

>> a = [1 2 3 4 5]; >> b = [1 3 5 7 9]; >> a + b % Suma los dos vectores elemento a elemento ans = 2 5 8 11 14 >> ans-b % Resta b del resultado mas reciente. ans = 1 2 3 4 5

La multiplicación y división elemento a elemento utiliza una notación ligeramente distinta. Hay que poner un punto antes del símbolo de multiplicación o división, para indicar que es elemento a elemento:

>> a.*b % Multiplica elemento a elemento ans = 1 6 15 28 45 >> a./b % División elemento a elemento ans = 1.000 0.6000 0.5714 0.5556 Si lo que se quiere es realizar una multiplicación matricial, no utilizamos el punto

antes del símbolo " * “: >> c = [1:2;3:4]; >> d = [5:6;7:8]; >> c*d % Multiplicación matricial ans =

Ing. Jaime Miguel Flores Mujica - 16 -

Page 17: Tutorial de Matlab Basico

Tutorial de Matlab

19 22 43 50 Al igual que ocurre en la multiplicación y la división, el símbolo "^" se reserva

para la potencia de una matriz, y ".^" se utiliza para denotar potencia elemento a elemento:

>> a= [1 2 3 4 5] >> b= [1 3 5 7 9] >> a.^2 % Eleva al cuadrado los elementos de a ans = 1 4 9 14 25 >> b.^a % Eleva los elementos de b a los elementos de a ans = 1 9 125 2401 59049

Podemos hacer un resumen de las operaciones básicas con arrays:

a= [a1 a2 ...an ] ; b= [b1 b2 ...bn ] ; c= escalar

Suma escalar a + c = [a1+c a2+c ...an+c ] Multiplicación escalar a*c =[a1*c a2*c ...an*c ] Suma de arrays a+b =[a1+b1 a2+b2 ... an+bn ] Multiplicación de arrays a.*b=[a1*b1 a2*b2 ... an*bn ] División a derechas de arrays a./b=[a1/b1 a2/b2 ... an/bn ] División a izquierdas de arrays a.\b=[a1\b1 a2\b2 ... an\bn ] Potencia de arrays a.^c =[a1^c a2^c ... an^c ] a.^b=[a1^b1 a2^b2 ... an^bn ]

1.19 Operadores Relaciónales y Lógicos en vectores Además de las operaciones aritméticas tradicionales, MATLAB permite utilizar operaciones relacionales y lógicas. El objetivo de estos operadores y funciones es proporcionar respuesta a cuestiones Verdadero/Falso. Un uso importante de esta capacidad es controlar el flujo u orden de ejecución de una serie de órdenes de MATLAB basado en los resultados de estas cuestiones verdadero/falso. Como entradas a todas las expresiones relacionales y lógicas, MATLAB considera que cualquier número distinto de cero es verdadero, y si es igual a cero es falso. La salida de todas las expresiones relacionales y lógicas produce 1 si es verdadero, y 0 si es falso. 1.19.1 Operadores Relaciónales. Los operadores relacionales de MATLAB incluyen todas las comparaciones comunes:

OPERADOR DESCRIPCIÓN < menor que

<= menor o igual que

> mayor que

>= mayor o igual que

== igual a ~= no igual a

Ing. Jaime Miguel Flores Mujica - 17 -

Page 18: Tutorial de Matlab Basico

Tutorial de Matlab

Los operadores relacionales de MATLAB se pueden utilizar para comparar dos

vectores del mismo tamaño o para comparar un vector con un escalar. En este último caso, el escalar se compara con todas los elementos del vector, y el resultado tiene el mismo tamaño que el vector. Ejemplo: >> A= [1: 8] A = 1 2 3 4 5 6 7 8 >> B = [2:9] B = 2 3 4 5 6 7 8 9 >> % Vamos a encontrar los elementos de A que son mayores que 4 >> % Donde A>4, aparecerá un uno, y donde A< 4 aparecerá un cero >> mayor = A>4 mayor 0 0 0 0 1 1 1 1 >> % Ahora los elementos de A que son iguales a los elementos de B >> igual = A == B igual 0 0 0 0 0 0 0 0 1.19.2 Operadores Lógicos. Los operadores lógicos proporcionan un medio de combinar o negar expresiones relaciónales. MATLAB incluye los siguientes operadores lógicos:

OPERADOR DESCRIPCIÓN & AND | OR ~ NOT

Algunos ejemplos del uso de operadores lógicos en MATLAB son:

>> A = [1 : 9] A = 1 2 3 4 5 6 7 8 9 >>no_mayor = (A>4) % Niega los números mayores que 4 del vector A no_mayor = 1 1 1 1 0 0 0 0 0 >> mayor_menor= (A>2)&(A<6) % Devuelve unos donde A>2 y A<6 a la vez mayor_menor = 0 0 1 1 1 0 0 0 0 Además de las operaciones relacionales y lógicas básicas anteriores, MATLAB

proporciona una serie de funciones relacionales y lógicas adicionales, que incluyen:

FUNCIÓN DESCRIPCIÓN xor(x) Operación OR exclusiva any(x) Devuelve 1 si algún elemento del vector "x" es no nulo. Si se

trata de una matriz, devuelve 1 para cada columna de la

Ing. Jaime Miguel Flores Mujica - 18 -

Page 19: Tutorial de Matlab Basico

Tutorial de Matlab

matriz que tiene elementos no nulos all(x) Devuelve 1 si todos los elementos del vector "x" son no

nulos. Si se trata de una matriz, devuelve 1 cuando todos los elementos de cada columna son no nulos.

El orden de preferencia en MATLAB para operadores aritméticas, relacionales y lógicas es, de mayor a menor preferencia:

Mayor preferencia

^ .^ ' .'

* / \ .* ./ .\ + - ~ : > < >= <= = = ~ = Menor preferencia

| &

1.20 Manipulación de Texto Hay veces en MATLAB que es deseable manipular texto, por ejemplo, para poner etiquetas o títulos en las gráficas. A este texto, MATLAB le llama "cadena de caracteres" o simplemente "cadenas". Una cadena de caracteres es simplemente texto rodeado por comillas simples. Las cadenas de caracteres se manejan como vectores fila, y se pueden manipular de la misma forma que si se tratara de arrays. Aquí podemos ver algunos ejemplos: Primero se introducirá una cadena de caracteres: >> t = ‘Esto es un ejemplo de cadena de caracteres’ t = Esto es un ejemplo de cadena de caracteres

Si se quiere mostrar los elementos del 23 al 28, se realiza de la misma forma que cuando tratamos vectores fila: >> u = t(23:28) u = cadena

Si se quiere mostrar los elementos del 23 al 28, pero en orden inverso, se realiza de la misma forma que cuando tratamos vectores fila:

>> u = t(28:-1:23) u = anedac

Como con las matrices, las cadenas de caracteres pueden tener múltiples filas, pero cada fila debe tener un número igual de columnas. Por tanto, si no coincide el número de caracteres en todas las filas, será necesario completar con espacios en blanco:

>> v = [‘ En la cadenas de caracteres todas las ‘ ;…… ‘filas deben tener el mismo numero de ‘;……. ‘columnas, como las matrices ‘] v = En las cadenas de caracteres todas las Filas deben tener el mismo numero de

Ing. Jaime Miguel Flores Mujica - 19 -

Page 20: Tutorial de Matlab Basico

Tutorial de Matlab

Columnas, como las matrices

También son posibles las operaciones matemáticas sobre cadenas, sin embargo, una vez que se realiza una operación matemática sobre una cadena, ésta no se visualiza ya como una cadena, sino como un array de números en el estándar ASCII. 1.21 Representación ASCII de una cadena

Para ver la representación ASCII de una cadena, podemos tomar el valor absoluto o sumarle cero. Por ejemplo, para ver la representación ASCII de la cadena "m":

>> m = ‘ABCDEFG’ m = ABCDEFG >> n = abs(m) n = 65 66 67 68 69 70 71 >> n = m+0 n = 65 66 67 68 69 70 71 Luego de que una cadena ha sido convertida a su representación ASCII, la cadena

puede ser restaurada de manera que se pueda volver a ver como una cadena de caracteres, utilizando la orden “setstr”.

>> setstr (n) ans = ABCDEFG Además de este manejo básico de cadenas de caracteres, existen multitud de

comandos dirigidos a cadenas. Podemos ver algunos mediante la ayuda de MATLAB, si tecleamos

>>help strfun 1.22 Álgebra Lineal y Matrices Históricamente, MATLAB fue escrito para simplificar los cálculos, de cálculo lineal que aparece en muchas aplicaciones. Existiendo los operadores aritméticos de matrices, que en matlab están definidas como las operaciones usuales. 1.22.1 Adición de Matrices: Dadas las matrices A = ( a ij ) y B= ( b ij ) la suma de A y B se define como una matriz C tal que c ij = a ij + b ij , es decir se realiza la suma de los elementos de las matrices de acuerdo a su posición. >>A = [ 0 6 0 ; 8 6 8 ; 3 2 2]; >>B = [29 -21 27; 11 13 5; -19 19 19]; >> C = A + B C = 29 -15 27 19 19 13 -16 21 21

Ing. Jaime Miguel Flores Mujica - 20 -

Page 21: Tutorial de Matlab Basico

Tutorial de Matlab

1.22.2 Sustracción de matrices: De la misma forma que en la suma, se realiza la resta de las matrices de acuerdo a su posición. >> X = [1 -3 5; 4 1 6; 6 -1 2]; >>Y = [2 3 2; 6 0 3; 4 1 -1]; >> Z = X-Y Z = -1 -6 3 -2 1 3 2 -2 3 1.22.3 Multiplicación de una matriz por un número: Realiza el producto de cada elemento de la matriz por el número dado. >> D = [3 -2 7; 6 5 4]; >> E = 2 * D E = 6 -4 14 12 10 8 1.22.4 Multiplicación de matrices: La multiplicación de matrices se realiza considerando filas de la primera matriz por columnas de la segunda matriz entre los elementos correspondientes, luego se realiza la suma ubicando el resultado en la posición de acuerdo a la fila y columna que se multiplicaron. Es decir sean A = (a ij) una matriz de orden mxn, B = (b ij) una matriz de orden nxp, entonces la matriz C = (c ij) es el producto de A con B resultando una matriz de orden mxp.

baC jk

n

kkiji ∑=

Ejemplo:

A = y B = entonces A x B =

⎥⎥⎥

⎢⎢⎢

110021203

⎥⎥⎥

⎢⎢⎢

011012

⎥⎥⎥

⎢⎢⎢

113238

En matlab tenemos: >> F = [3 -2 7; 6 5 4; 0 4 9] >>G = [1 7; 0 4; 2 9] >> H = F x G H = 17 76 14 98 18 97 1.23 Clases de Matrices:

Ing. Jaime Miguel Flores Mujica - 21 -

Page 22: Tutorial de Matlab Basico

Tutorial de Matlab

Ing. Jaime Miguel Flores Mujica - 22 -

Por los conocimientos adquiridos en álgebra lineal, existen varias clases de matrices que es posible trabajarlas en Matlab. 1.23.1 Matriz Transpuesta:

La matriz transpuesta es aquella que se obtiene a partir de una matriz dada intercambiando las filas por las columnas y se la denota como At .

Ejemplo:

Si tenemos la matriz A = entonces la matriz transpuesta será: ⎥⎦

⎤⎢⎣

⎡ −523412

At=

⎥⎥⎥

− 542132

⎢⎢⎢

En matlab la matriz transpuesta se obtiene utilizando el apostrofe A´ como

ejemplo tenemos: >> A = [ 1 -3 0 -2; 3 -12 -2 -6;-2 10 2 5; -1 6 1 3] A = 1 -3 0 -2 3 -12 -2 -6 -2 10 2 5 -1 6 1 3 >> Y = A' Y = 1 3 -2 -1 -3 -12 10 6 0 -2 2 1 -2 -6 5 3 1.23.2 Matriz Simétrica: Una matriz dada es simétrica cuando la matriz transpuesta es igual a la matriz dada. A = A' 1.23.3 Matriz inversa: En álgebra lineal el concepto de matriz inversa es muy importante, ya que a partir de ella se puede obtener soluciones a muchas aplicaciones. En matlab se puede obtener la matriz inversa de una matriz mediante la orden inv(A) >> A = [ 1 -3 0 -2; 3 -12 -2 -6;-2 10 2 5; -1 6 1 3] A = 1 -3 0 -2 3 -12 -2 -6 -2 10 2 5 -1 6 1 3 >> P = inv (A)

Page 23: Tutorial de Matlab Basico

Tutorial de Matlab

P = 0 1.0000 0.0000 2.0000 1.0000 -1.0000 -2.0000 2.0000 0 1.0000 3.0000 -3.0000 -2.0000 2.0000 3.0000 -2.0000 1.24 Determinante de una Matriz: En matlab es posible calcular el determinante de una matriz cuadrada a través de la instrucción det (A). Ejemplo: >> A = [ 1 -3 0 -2; 3 -12 -2 -6;-2 10 2 5; -1 6 1 3] A = 1 -3 0 -2 3 -12 -2 -6 -2 10 2 5 -1 6 1 3 >> det(A) ans = -1 1.25 Rango de una Matriz: Por álgebra lineal conocemos que el rango de una matriz es igual al número de filas no nulas que quedan en la última iteración de las sucesivas transformaciones elementales que se hacen con la matriz. En matlab se puede hallar el rango de una matriz mediante la instrucción rank(A). Ejemplo: >> C = [0 2 -4; 1 4 -5; 3 1 7; 0 1 -2; 2 3 0] C = 0 2 -4 1 4 -5 3 1 7 0 1 -2 2 3 0 >> Z= rank(C) Z = 2 1.26 Generación de matrices especiales en Matlab: 1.26.1 Matriz identidad: Para generar la matriz identidad en matlab se utiliza el comando eye (m). >> A = eye(3) A = 1 0 0 0 1 0 0 0 1

Ing. Jaime Miguel Flores Mujica - 23 -

Page 24: Tutorial de Matlab Basico

Tutorial de Matlab

>> B=eye(4) B = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1.26.2 Matriz Nula: Matriz donde todos los elementos son nulos, en matlab generamos una matriz nula con el comando A = zeros (m,n) , donde m es el numero de filas y n el numero de columnas. >> B = zeros (3,2) B = 0 0 0 0 0 0 1.26.3 Matriz Unidad: Matriz en donde todos los elementos son unos, y se obtiene con el comando ones( m,n). >> B = ones (3,2) B= 1 1

1 1 1 1

1.27 Funciones en matrices y vectores: diag(A) .Este comando permite obtener los elementos de la diagonal de una matriz dada. Ejemplo: >> A = [1 -3 0; 3 -2 -6; 10 2 5] A = 1 -3 0 3 -2 -6 10 2 5 >> diag(A) 1 -2 5 rand(p) : Este comando genera una matriz de orden nxn en forma aleatoria donde sus elementos son uniformemente distribuidos en el intervalo ( 0, 1). >> X = rand(2) X = 0.447 0.7919 0.6154 0.9218 norm(v,p): Este comando calcula la norma de un vector v. donde p>1, los valores comunes son 1 , 2 ,inf , esto significa que : p = 1; calcula la suma de los valores absolutos de todos sus elementos p = 2; corresponde a la norma euclidiana. Matlab lo considera por defecto p = inf; calcula el máximo valor absoluto de sus elementos. Ejemplo: >> A = [2 0 1 -4]

Ing. Jaime Miguel Flores Mujica - 24 -

Page 25: Tutorial de Matlab Basico

Tutorial de Matlab

>> norm(A,1) 7 >> norm(A,2) 4.5826 >> norm(A, inf) 4 norm(A.p); Este comando permite calcular la norma de una matriz A. >> A =[2 0;1 -4] A = 2 0 1 -4 >> norm(A,1) ans = 4 >> norm(A,2) ans = 4.1594 >> norm(A,inf) ans = 5 cross(u,v); Este comando calcula el producto vectorial entre dos vectores u y v de

R3

>> u = [2 -5 1] >> v = [3 1 -4] >> cross(u,v) 19 11 17 eig(A);Este comando calcula los valores y vectores propios de la matriz A >>A = [1 2; 3 4] >>[ V, D] = eig(A) V = -0.8246 -0.4160 0.5658 -0.9094 D = -0.3723 0 0 5.3723 Donde V es una matriz que contiene a los vectores propios ordenados en columnas y D es una matriz diagonal que contiene los valores propios. Length(u); Este comando calcula la dimensión del vector u. >> u = [13 -5 1] >> length(u) 3 size (A); Este comando calcula la dimensión de la matriz A. >> A = [4 1 3;-5 2 1] >> size (A) 2 3 1.28 Sistemas de Ecuaciones Lineales.

Ing. Jaime Miguel Flores Mujica - 25 -

Page 26: Tutorial de Matlab Basico

Tutorial de Matlab

Una de las aplicaciones del álgebra lineal es la solución de ecuaciones lineales, así por ejemplo, si disponemos del siguiente sistema de ecuaciones:

366287 1

80436224 1

36633221

=++

=++

=++

xx

xxx

xxx

Estas ecuaciones se pueden organizar en una ecuación matricial, de la forma "A X = B":

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

351804366

087654321

3

2

1

xxx

x

Para encontrar la solución a este sistema, nos encontramos con numerosos métodos. Analíticamente, como A X = B, la solución se escribe como X = A-1 · B, donde A-1 es la matriz inversa de A. Para resolver este problema de esta forma, es necesario introducir directamente las matrices A y B, que ya hemos definido anteriormente: >> A = [1 4 7; 2 5 8; 3 6 0] A = 1 2 3 4 5 6 7 8 0 >>B =[366;804;351] B = 366 804 351 Primeramente realizamos un análisis del tipo o tipos de solución que el sistema de ecuaciones ha de tener, para ello tememos que hallar el determinante de la matriz A, y esto se halla mediante el comando det(A), visto anteriormente, es decir si el determinante de la matriz es distinto de cero tendrá Una solución única. >> det ( A) ans = 27 La solución la podremos calcular de dos maneras: calculando ( x = A-1 · b ), o calculando ( x = b / A). Para calcular A-1 hacemos la inversa de la matriz A. Con cualquiera de los dos métodos, la solución es la misma. >> x = inv(A) * B x = 25.0000 22.0000 99.0000

Cuando difieren el número de ecuaciones y el número de incógnitas, normalmente no existe una única solución. Sin embargo, MATLAB puede encontrarla.

Ing. Jaime Miguel Flores Mujica - 26 -

Page 27: Tutorial de Matlab Basico

Tutorial de Matlab

Cuando hay más ecuaciones que incógnitas: Cuando utilizamos el operador de división / ó \, automáticamente encuentra la solución que minimiza el error al cuadrado en (A x – b = 0). A esta solución, de gran valor práctico, se la llama "solución de mínimos cuadrados". Cuando hay menos ecuaciones que incógnitas: Existe un número infinito de soluciones. Sin embargo, MATLAB calcula de forma directa. El uso del operador de división da una solución que da cero para algunos elementos de x. Alternativamente, si calculamos "x = pinv (A) * b" (donde pinv (A) = pseudoinversa de A), se obtiene una solución donde la longitud o norma euclídea de "x" es más pequeña que todas las otras posibles soluciones. Esta solución, que también tiene un gran valor práctico, se llama "solución de norma mínima". 1.29 Solución de sistemas lineales mediante matlab Tal como se menciono anteriormente matlab tiene diversas formas de resolver un sistema de ecuaciones lineales de la forma A X = B. Consideremos como ejemplo el siguiente sistema de ecuaciones:

3x + 4 y + z + 2w = -3 3x + 5 y + 3z + 5w = -6 6x + 8y + z +5 w = -8 3x + 5 y + 3 z +7 w = -8

1.29.1 Método de descomposición LU: El procedimiento de descomposición LU, transforma a la matriz de coeficientes A en un producto de matrices triangulares uno superior (U ) y el otro inferior ( L ) , es decir A = L U >> A = [3 4 1 2; 3 5 3 5;6 8 1 5; 3 5 3 7] A = 3 4 1 2 3 5 3 5 6 8 1 5 3 5 3 7 >> [L,U,P]=lu (A) L = 1.0000 0 0 0 0.5000 1.0000 0 0 0.5000 0 1.0000 0 0.5000 1.0000 0 1.0000 U = 6.0000 8.0000 1.0000 5.0000 0 1.0000 2.5000 2.5000 0 0 0.5000 -0.5000 0 0 0 2.0000 P = 0 0 1 0

Ing. Jaime Miguel Flores Mujica - 27 -

Page 28: Tutorial de Matlab Basico

Tutorial de Matlab

0 1 0 0 1 0 0 0 0 0 0 1 Donde P es una matriz unitaria de tal manera que: P * A = L * U Entonces el sistema original se escribe como: P * A X = P * B Luego como: L * U * X = P * B >> X = inv (L * U)*(P * B) X = 2 -2 1 -1 1.29.2 Solución con el operador Slash (\). El operador slash se utiliza en los casos donde la matriz desconocida se encuentra en la izquierda o derecha de la matriz de coeficiente, esto es indica a pensar que se puede dividir en ambos lados de la ecuación, ósea: A X = B ó X A = B por A Lo que quiere decir que:

• X = A \ B denota la solución para la ecuación de la matriz A X = B. • X = B/A denota la solución para la ecuación de la matriz X A =B

En el primer caso se requiere que las dos matrices A y B tengan el mismo numero de filas, por lo que la solución de X tendrá el mismo numero de columnas de B, la dimensión de la fila es igual a la dimensión de la columna de A. En el segundo caso, los papeles de filas y las columnas son intercambiables. Generalmente en la práctica es mas frecuente el uso del operador (\). Por lo general si el sistema m x n es cuadrado, Matlab presenta una solución exacta, si el sistema m x n es Overdetermined matlab presenta una solución por mínimos cuadrados, por otra parte si el sistema es uderdetermined. Matlab presenta una solución básica con la mayoría de componentes ceros, veamos ahora unos ejemplos. Sea: 3 x +4 y + z + 2 w = -3 3 x + 5 y + 3 z + 5 w = -6 6 x + 8 y + z + 5 w = -8 3 x + 5 y + 3 z + 7 w = -8 >> A = [3 4 1 2; 3 5 3 5; 6 8 1 5; 3 5 3 7] A = 3 4 1 2 3 5 3 5 6 8 1 5 3 5 3 7

Ing. Jaime Miguel Flores Mujica - 28 -

Page 29: Tutorial de Matlab Basico

Tutorial de Matlab

>> B = [-3;-6;-8;-8] B = -3 -6 -8 -8 >> X =A \ B X = 2 -2 1 -1 Consideremos ahora el sistema de ecuaciones: 3 x + 4 y + 2 z = 9 3 x + y + 5 z = 9 6 x + y + 5z = 12 -2 x + 3 y + 7 z = 8 >> A = [3 4 2; 3 1 5; 6 1 5; -2 3 7] A = 3 4 2 3 1 5 6 1 5 -2 3 7 >> B = [9; 9; 12; 8] B = 9 9 12 8 >> X = A \B X = 1.0000 1.0000 1.0000 Consideremos ahora el caso del siguiente sistema de ecuaciones:

3 x + 4 y + 2 z = 8 3 x + y + 5 z = 11 >> A = [3 4 2; 3 1 5] A = 3 4 2 3 1 5 >> B = [8; 11;] B = 8 11

Ing. Jaime Miguel Flores Mujica - 29 -

Page 30: Tutorial de Matlab Basico

Tutorial de Matlab

>> X = A \ B X = 0 1.0000 2.0000

1.29.3 Solución por la matriz inversa: Consideremos el siguiente sistema de ecuaciones:

4x + 4 y + z + 2 w = -3 3 x +5 y + 3 z + 5 w = -6 6 x +8 y + z + 5 w = -8 3 x + 5 y + 3 z + 7 w = -8

>> A =[ 3 4 1 2;3 5 3 5 ;6 8 1 5;3 5 3 7]; >> B =[-3;-6;-8;-8]; >> X = inv(A)*B X = 2 -2 1 -1 1.29.4 Método de reducción a la forma canónica.

4 x + 4 y + z + 2 w = -3 3 x +5 y + 3 z + 5 w = -6 6 x +8 y + z +5 w = -8 3 x + 5 y + 3 z +7 w = -8

>> A =[ 3 4 1 2 -3;3 5 3 5 -6 ;6 8 1 5 -8;3 5 3 7 -8]; >> X = rref(A) X = 1 0 0 0 2 0 1 0 0 -2 0 0 1 0 1 0 0 0 1 -1 Veamos ahora otros comandos que permiten la manipulación de matrices

A.' Transpuesta de la matriz A A' Transpuesta compleja conjugada de A *, \ y / Multiplicación y división matriciales det(A) Determinante de la matriz cuadrada A inv(A) Inversa de la matriz cuadrada A pinv(A) Pseudoinversa de la matriz rectangular A d=eig(A) Devuelve los valores propios asociados con la matriz [V,D]=eig(A) Devuelve los vectores propios de la matriz V y los valores

propios como los elementos diagonales en la matriz D. [L,U]=lu(A) Calcula la factorización LU de la matriz cuadrada A [Q,R]=qr(A) Calcula la factorización QR de la matriz A

[U,S,V]=svd(A) Calcula la descomposición en valores singulares de la matriz A

Ing. Jaime Miguel Flores Mujica - 30 -

Page 31: Tutorial de Matlab Basico

Tutorial de Matlab

rank(A) Devuelve el rango de la matriz A cond(A) Devuelve el número de condición de la matriz A norm(A) Calcula la norma de la matriz A poly(A) Encuentra el polinomio característico asociado con la

matriz cuadrada A polyvalm(v,A) Evalúa el polinomio característico "v" usando la matriz

cuadrada A 1.30 Funciones Polinómicas. MATLAB permite el trabajo ágil con polinomios. El programa habilita varios comandos para el manejo algebraico de las expresiones poli nómicas. Estas expresiones pueden tratarse también como expresiones algebraicas en general, pero MATLAB también incluye comandos específicos. 1.31 Raíces. MATLAB resuelve el problema de encontrar las raíces de un polinomio, es decir, los valores para los que el polinomio es cero. En MATLAB, un polinomio se representa por un vector fila con sus coeficientes en orden descendente. Por ejemplo, el polinomio X 4 - 12x 3 + 0x 2 + 25x + 116 En matlab se introduce como: >> p = [1 -12 0 25 116] p = 1 -12 0 25 116 >>

Obsérvese que se deben incluir los términos con coeficientes nulos, poniendo un cero en su lugar. Las raíces de un polinomio se encuentran utilizando la función roots: >> r = roots(p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 – 1.4672i >>

Como ambos, el polinomio y las raíces, son vectores en MATLAB, se adopta el convenio de que los polinomios son vectores fila, y las raíces son vectores columna.

También es posible construir un polinomio cuando nos dan sus raíces, con la orden "poly". 1.32 Suma de Polinomios MATLAB no proporciona una función directa para sumar polinomios. La suma de arrays estándar funciona si ambos vectores polinomios son del mismo tamaño. Si queremos sumar los polinomios a(x) y b(x): a(x)=x3 + 2x2 +3x + 4 b(x)=x3 + 4x2 +9x + 16:

Ing. Jaime Miguel Flores Mujica - 31 -

Page 32: Tutorial de Matlab Basico

Tutorial de Matlab

Ing. Jaime Miguel Flores Mujica - 32 -

Obtenemos d(x)=2x3 + 6x2 + 12x + 20. >> d = a + b d = 2 6 12 20 >> Cuando dos polinomios son de diferente grado, el que tiene menor orden debe

rellenarse en la parte delantera con ceros para hacer que tenga el mismo grado efectivo que el polinomio de mayor grado.

1.33 Multiplicación de Polinomios La multiplicación polinomial se realiza mediante la función conv, que efectúa la convolución de dos arrays. Ejemplo: Considérese el producto de los dos polinomios a(x)=x3 + 2x2 +3x + 4 b(x)=x3 + 4x2 +9x + 16: >> a = [1 2 3 4]; b = [1 4 9 16]; >> c = conv (a, b) c = 1 6 20 50 75 84 64 El resultado es c(x)=x6 + 6x5 + 20x4 + 50x3 +75x2 + 84x + 64. La multiplicación de más de dos polinomios requiere el uso repetido de "conv". 1.34 División de Polinomios: En algunos casos especiales es necesario dividir un polinomio por otro. En MATLAB, esto se consigue con la función deconv. Utilizando los polinomios "b" y "c" anteriores: >> [ q , r ] = deconv( c , b ) q = 1 2 3 4 r = 0 0 0 0 0 0 0 Este resultado dice que "b" dividido entre "c" da el polinomio cociente "q" y el resto "r", que es cero en este caso, puesto que el producto de "b" y "q" es exactamente "c" ("c" se formó previamente como el producto de "b" y "q" = "a")