sistemas lineales para automatización: u2: solucion … · web viewsistemas lineales para...

28
Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 Introducción a MATLAB Objetivo: Aprender a utilizar el Software de Matlab, para resolver sistemas lineales. Introducción Matlab es la abreviatura de Matrix Laboratory (laboratorio de matrices). Creado en 1984 por The MathWorks, es un software de cálculo muy usado en universidades, centros de investigación y por ingenieros. En los últimos años ha incluido muchas más capacidades, como la de programar directamente procesadores digitales de señal, crear código, etc. A continuación se muestran una serie de ejercicios “guiados” para permitir al alumno conocer y manejar la interfaz de este programa. 1. Interfaz de Matlab Mtro. Jorge Adalberto Barreras García

Upload: doantuyen

Post on 17-Apr-2018

223 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Introducción a MATLAB

Objetivo: Aprender a utilizar el Software de Matlab, para resolver sistemas lineales.

Introducción

Matlab es la abreviatura de Matrix Laboratory (laboratorio de matrices). Creado en 1984 por TheMathWorks, es un software de cálculo muy usado en universidades, centros de investigación y por ingenieros. En los últimos años ha incluido muchas más capacidades, como la de programar directamente procesadores digitales de señal, crear código, etc.A continuación se muestran una serie de ejercicios “guiados” para permitir al alumno conocer y manejar la interfaz de este programa.

1. Interfaz de Matlab

2. Ayuda de Matlab.

Básicamente, existen dos formas de utilizar la ayuda de Matlab: a través de la ayuda en línea; o bien, a través del navegador de ayuda.

Mtro. Jorge Adalberto Barreras García

Page 2: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Para acceder a la ayuda en línea basta con teclear en la línea de comandos:

>> help función

Donde “función” sería el nombre de la función sobre la que necesitamos la ayuda.

Por otro lado, para acceder a la ayuda a través del navegador, es necesario seleccionar la opción “Matlab help” (ver figura). Este segundo modo de ayuda resulta bastante más potente y eficaz que la primera añadiendo en muchos casos ejemplos de utilización.

3. Variables y Matrices:

En lo que se refiere a la nomenclatura de las variables. Matlab distingue entre mayúsculas y minúsculas (“Variable” es distinto de “variable”) permitiendo nombres de variables que contengan al menos una letra.

Las variables generadas durante una sesión se van almacenando en el "espacio de trabajo" del propio programa. Si se saliera de éste sin salvarlas previamente las variables se perderían. Para guardarlas se utiliza el comando "save + nombre-archivo". Por ejemplo:

» save prac_00

Matlab no requiere ningún tipo de declaración de variables sino que, una vez que se utiliza una variable, Matlab crea la respectiva variable reservando el espacio de memoria necesario. Por tanto, si la variable ya existe, Matlab únicamente cambia su contenido.

MatLab automáticamente agrega la extensión *.mat. Para recuperar los resultados de una sesión anterior se teclea el comando:

» load prac_00

Mtro. Jorge Adalberto Barreras García

Page 3: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

y coloca su contenido en el "espacio de trabajo". Para consultar el contenido del "espacio de trabajo" se teclea el comando:

» who ("whos" proporciona información adicional a cada variable)

Si se desea borrar alguna de las variables del "espacio de trabajo" se utilizará:

» clear variable 1

Si sólo se teclea » clear se borrarían todas las variables existentes.

Para consultar los archivos que están contenidos en el "directorio de trabajo" desde el cual se inicia la sesión de MATLAB ( c:>matlab\trabajo ) se usa el comando:

>> d i r

Para salir del programa basta con teclear:

>> e x i t ó >> quit

En Matlab, una variable consiste en una matriz de las dimensiones correspondientes. En cuanto al tipo de variables a utilizar puede ser: entero, real, complejo, carácter, etc., y al igual que en la definición, Matlab lo asigna de forma automática.

Los operadores aritméticos básicos son:

Ejemplo de utilización de una variable

>> a = 5a =5>> a = a*aa =25

Mtro. Jorge Adalberto Barreras García

Page 4: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

4. Operar con variables

Definir una variable:

>> A = 7A =7

Definir vector renglón, vector columna y una matriz:

El elemento básico en MATLAB es una matriz de orden n x m. Esto incluye también a los vectores reales y complejos, y a los valores escalares, e incluso se hacer extensible, solo con fines de manejo de datos, a polinomios y funciones de transferencia.

Los vectores "renglón" para asignar datos a un vector se introducen utilizando corchetes separando sus valores ya sea por comas o por espacios en blanco. Por ejemplo:

>> x = [ 1 2 3 ] >> y= [l+j,2+pi*i,-sqr t( - l ) ]

Para crear un vector columna se utiliza el símbolo " ' " que significa transpuesto al final de los corchetes,o bien se separan los elementos mediante " ; ". Por ejemplo:

» a = [4 5 6 ] '» b = [1+j; 2+pi*i; -sqrt(-l) ]

Definición de una matriz nxm:Para generar una matriz se deben de separar las columnas mediante el símbolo " ; ". Ejemplo 1:

Ejemplo 2:

o como:

Mtro. Jorge Adalberto Barreras García

Page 5: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Ejemplo 3: Encontrar la transpuesta de la matriz A del ejercicio anterior:

Ejemplo 4: Encontrar la sumatoria de A + B:

Ejemplo 5: Realizar las siguientes Operaciones:

Mtro. Jorge Adalberto Barreras García

Page 6: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Comprobar el estado de una variable: Para comprobar el valor de una variable se puede, bien mirar en la parte superior izquierda dedicada a las variables activas (Fig. 1), bien introduciendo su nombre.

Eliminar una variable de memoria:

Acceder a un elemento de una matriz: tomando la matriz B, queremos acceder al valor de la posición (1,2):

Nótese que “ans” equivale a la respuesta (del inglés “answer”).

Acceder a todos los elementos de una fila o columna:

Acceder a todos los elementos de una fila:

Mtro. Jorge Adalberto Barreras García

Page 7: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Mostrar componentes consecutivos (p.ej.: del 1 al 2 de la columna 1):

Añadir elementos a una matriz:

Producto Escalar:

Producto matricial:

5. Sentencias de control

La sintaxis de las sentencias de control utilizadas dentro del entorno de Matlab es la siguiente:

Bucles:

FORfor variable = valor_inicial:valor_finalsentencias…End

Ejemplo:

>> for i=1:3display('hola Barreras')end

ans =

Mtro. Jorge Adalberto Barreras García

Page 8: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

hola Barreras

ans =hola Barreras

ans =hola Barreras

WHILEwhile variable expresiónsentencias…end

Ejemplo:

>> i = 1;while i < 3display('hola Barreras')i = i+1;end

ans =hola Barreras

ans =hola Barreras

IFif expresionsentenciasend

Ejemplo:

>> aa =1

>> bb =1

>> if (a=b)display('hola Barreras')end

ans =hola Barreras

Mtro. Jorge Adalberto Barreras García

Page 9: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Solucion de Ecuaciones

Matriz inversa y Determinantes

Considere el siguiente sistema de ecuaciones:

o en forma matricial: AX = B ; donde:

Mtro. Jorge Adalberto Barreras García

Page 10: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

A es una matriz cuadrada y se conoce como la matriz de coeficiente, mientras que X y B, son vectores. X es el vector solución al que se deseas llegar. Existen dos formas de encontrar X en MATLAB. Primero, se puede utilizar el operador diagonal invertida (\), de tal forma que:

X = A \ B

Segundo, se puede encontrar X como:

X = A-1B

Que en MATLAB, es lo mismo que:

Ejemplo 1: Utilice MATLAB para resolver el siguiente sistema de ecuaciones:

Solucion:

Mtro. Jorge Adalberto Barreras García

Page 11: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

A partir de las ecuaciones anteriores se obtiene la matriz A y el vector B y se ingresan en MATLAB en la forma siguiente:

Mtro. Jorge Adalberto Barreras García

Page 12: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Por lo tanto,

Ejemplo 2: Utilice el análisis nodal para encontrar las tensiones en los nodos del circuito de la siguiente figura:

Solucion:

En el nodo 1:

En el nodo 2:

Como: ; entonces:

Mtro. Jorge Adalberto Barreras García

Page 13: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Nodo 3:

Mtro. Jorge Adalberto Barreras García

Page 14: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Nodo 4:

Combinando las ecuaciones, se obtiene el arreglo matricial:

o sea: AV = B

ahora se utiliza MATLAB para determinar las tensiones de los nodos contenidos en el vector V.

De aquí que:

Mtro. Jorge Adalberto Barreras García

Page 15: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Problema de práctica 1: Encuentre las tensiones en los nodos del circuito de la figura, utilizando MATLAB.

Mtro. Jorge Adalberto Barreras García

Page 16: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Solucion: V1 = 14.55; V2 = 38.18; V3 = -34.55; V4 = -3.636

Ejemplo 2: Utilice MATLAB para encontrar las corrientes de malla del circuito de la siguiente figura.

Solucion.

Malla 1:

Malla 2:

Mtro. Jorge Adalberto Barreras García

Page 17: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Malla 3:

Mtro. Jorge Adalberto Barreras García

Page 18: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Malla 4:

Mtro. Jorge Adalberto Barreras García

Page 19: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Colocando en forma matricial, tenemos:

o AI = B, donde el vector I contiene las corrientes de mallas desconocidas. Se utilizara MATLAB para determinar I en la forma siguiente:

Por lo tanto: I1 = 0.5203; I2 = -0.3555; I3 = 1.0682; I4 = 0.0522

Mtro. Jorge Adalberto Barreras García

Page 20: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Problema de práctica 2: Encuentre las corrientes de malla del circuito de la figura, utilizando MATLAB.

Solucion: I1 = 0.2222; I2 = -0.6222; I3 = 1.1778, I4 = 0.2222

NOTA IMPORTANTE: Realizar los ejercicios prácticos para Determinantes, utilizando la instrucción “det (A)”

6. Creación de una función a través de un fichero .m

Mtro. Jorge Adalberto Barreras García

Page 21: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Con Matlab también es posible crear nuestras propias funciones. Para ello se puede utilizar bien el editor de texto de Matlab (ver figura) o bien cualquier otro editor de texto (bloc de notas, Wordpad…).

La estructura a seguir a la hora de implementar una función es la siguiente:

Ejemplo:

Mtro. Jorge Adalberto Barreras García

Page 22: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

A continuación se muestra una función que calcula la inversa de una matriz.

función a= inversa (b)% Función = Calcula la inversa de una matriz% Parámetro de entrada = b;% Parámetro de salida = a;%

a = inv(b);

Si guardamos el texto anterior en un fichero .m (con el mismo nombre de la función, es decir, inversa.m) y lo ejecutamos para la matriz f tenemos:>> f

f =

>> inversa(f)

ans =

Método Gauss-Jordan

Las ecuaciones de malla que describen a este circuito son:

Definiendo R, i, y v:

Mtro. Jorge Adalberto Barreras García

Page 23: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

Implementación en MATLAB del método Gauss-Jordan para solución de sistemas deecuaciones lineales.

function x = GaussJ(A,b)% Implementacion del metodo Gauss−Jordan% para resolver sistemas de ecuaciones% lineales.%%x = GaussJordan(A,b)%%Regresa x, la solucion del sistema Ax=b.% 24 Octubre 2011% Jorge Barreras% Se crea la matriz aumentadaA = [A b];n = size(A,1);for i=1:n% Dividir renglon entre el pivoteA(i ,:) = A(i,:)/A(i, i );% Hacer ceros en la columna ifor j=1:nif i˜=jA(j ,:) = A(j,:) − A(i,:)∗A(j, i );endendendx = A(:,n+1);

Mtro. Jorge Adalberto Barreras García

Page 24: Sistemas Lineales Para Automatización: U2: Solucion … · Web viewSistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB 24 de octubre de 2011 19Mtro. Jorge

Sistemas Lineales Para Automatización: U2: Solucion de Matrices en MATLAB

24 de octubre de 2011

A continuación se muestra la solucion del circuito eléctrico:

Pseudocódigo que implementa EL METEDO, para la solución de sistemas lineales.

Mtro. Jorge Adalberto Barreras García