ANEXO A

117
15/05/2011 Autores: Jesús Armando Álvarez Machado Cesar Augusto Jiménez Hernández Directores: Ing. Edgar Hidalgo Santos Ing. Feissan Alonso Gerena Mateus Material didáctico para el tutor

description

teoria de control

Transcript of ANEXO A

15/05/2011

Autores:

Jesús Armando Álvarez Machado

Cesar Augusto Jiménez Hernández

Directores:

Ing. Edgar Hidalgo Santos

Ing. Feissan Alonso Gerena Mateus

Material didáctico

para el tutor

Contenido

Introducción.

Vectores/Matrices.

Funciones.

Cadenas de Texto.

Graficas 2D y 3D.

15/05/2011

Introducción a MATLAB

Material didáctico para el tutor

15/05/2011

15/05/2011

• Lenguaje de Programación

• Alto Rendimiento

• Computación Técnica

• Computación, Visualización y Programación

• Problemas y soluciones en notación Matemática (de Matrices).

Que es MATLAB

15/05/2011

Aplicaciones

•Matemáticas y Computación.

•Desarrollo y Test de algoritmos.

•Modelado, Simulación y Prototipos.

•Análisis de Datos, exploración y visualización.

•Gráficas de Ingeniería y Científicas.

•Desarrollo de Aplicaciones finales (GUI)

15/05/2011

Aplicaciones

15/05/2011

MATLAB

•Matrix Laboratory (Laboratorio de Matrices).

•Elemento básico: [Matriz] (en adelante Arreglo) que no

requiere dimensión.

•Problemas que involucran matrices y vectores son

consumidores de tiempo (C, C++, Fortran, etc.)

15/05/2011

Entorno de Trabajo

•Abra MATLAB.

•Identifique:

–Ventana de Comandos.

–Historial de Comandos.

–Directorio Actual.

–Espacio de Trabajo.

–Barra de Menús.

15/05/2011

MATLAB como Calculadora

•Desde la ventana de comandos ingrese:

•>> 2 + 3/4*5

•Verifique la respuesta de MATLAB.

•Verifique el workspace.

15/05/2011

Números

•Por defecto se usa la notación decimal convencional.

•La letra “e” se usa para definir notación científica

(x10).

•Los números imaginarios se definen usando las

letras “i” y “j”.

15/05/2011

Números

•Los números tienen una precisión de 16 dígitos

significativos decimales y un rango entre 10-308 y 10+308 .

•Todas las operaciones en MATLAB se realizan en precisión

doble.

•El formato es la manera en como se muestran los valores

15/05/2011

Formato

•Usando el comando format:

15/05/2011

Variables

•La variable ANS es

básica en MATLAB.

•Ejecute:

•>> 3-2^4

•Verifique el resultado

almacenado en ANS.

•Ejecute:

•>> ans*5

•Verifique el uso de

variables y resultado.

15/05/2011

Variables

•Las variables no requieren de una declaración de tipo o

tamaño.

•>>num_estudiantes = 25

•MATLAB crea el espacio necesario y asocia el tipo adecuado

para definir esa variable, si es que no la encuentra en el

Workspace.

15/05/2011

Variables

•Las variables tienen un limite de tamaño de nombre de 31

caracteres.

•Deben empezar con una letra SIEMPRE.

•NO deben contener caracteres especiales, salvo el “underscore” _

15/05/2011

Las letras “i” y “j”

•“i” y “j” están reservadas para definir números complejos.

•>>i

•>>i=20

•>>i

•Verifique el comportamiento de “i”

15/05/2011

Otras palabras reservadas

•pi 3.14159265...

•i unidad imaginaria

•realmin el número más pequeño, 2-1022

•realmax el número más grande, 21023

•Inf infinito

15/05/2011

Comandos de manejo de Sesión

•clc

•clear

•clear var1, var2

•exist(„nombre‟)

•quit

•who

•whos

15/05/2011

MATLAB Vectores

Material didáctico para el tutor

15/05/2011

Vectores Fila

•Vectores que “se ven como filas”

•Se definen con espacios o comas entre sus

elementos.

•>>v = [ 1 3, sqrt(5)]

•Verifique el resultado en el workspace.

•>> length(v)

•Verifique el resultado en el workspace.

15/05/2011

Vectores Fila

•Puede haber problemas con los

espacios.

•Ejecute:

•v2 = [3+ 4 5]

•Verifique el comportamiento

•Ejecute:

•v3 = [3 +4 5]

•Verifique el comportamiento

15/05/2011

Operaciones Vectores

Fila

•Deben tener la misma dimensión para

la suma.

•>> v + v3

•Pueden multiplicarse por un escalar.

•>> v4 = 3*v

•Pruebe: >> v + v2

15/05/2011

Definición Vectores

•Se pueden formar vectores a partir

de otros vectores (variables) ya

definidos:

•>> w = [1 2 3], z = [8 9]

•>> cd = [2*z,-w], sort(cd)

•Verifique el comportamiento.

15/05/2011

Indice en Vectores Fila

•Se puede recuperar (ver) el valor de

un componente de un vector o

cambiarlo haciendo uso de un índice.

•El índice se define con el nombre de

variable del vector y con los paréntesis

para acceder a la posición del

elemento a cambiar/ver.

•>> w(2) = -2, w(3)

15/05/2011

El operador :

•Ejecute:

•>>1:10

•Verifique el resultado.

•Cual es la función del operador “:”?

•De manera general a : b : c produce

un vector con valor inicial a, valor final

c e incrementos de b.

15/05/2011

El operador :

•Se puede usar el operador : para

definir vectores:

•>> r5 = [1:2:6, -1:-2:-7]

•Para obtener los elementos del 3 al 6

•>> r5(3:6)

•Cual será el resultado de?

•r5(6:-2:1)

15/05/2011

Vectores Columna

•Vectores que se ven como columna.

•Se definen usando “;”

•Pruebe:

•>> c = [ 1; 3; sqrt(5)]

•>> c2 = [3

•4

•5]

15/05/2011

Transpuesta

•Se puede convertir un vector fila en

un vector columna y viceversa.

•>> w, w', c, c'

•Defina el vector complejo:

•>> x = [1+3i, 2-2i]

•La transpuesta para x corresponderá

a la transpuesta conjugada.

15/05/2011

Producto de Vectores

•Multiplicación de Vector Fila x Columna

•>> u = [ 10, -11, 12], v = [20; -21; -22]

•>> prod = u*v

•Es una multiplicación Matricial!.

•>> w = [2, 1, 3], z = [7; 6; 5]

•>> u*w

•Verifique ambos ejemplos.

15/05/2011

Norma de un Vector

•El siguiente muestra dos maneras de

obtener la norma (distancia euclidiana)

de un vector:

•>> [ sqrt(u*u'), norm(u)]

15/05/2011

El operador

•Corresponde al producto Hadamard.

•Trabaja sobre vectores del mismo tipo

(fila o columna).

•>> u.*v'

•Tabulemos la función para

15/05/2011

El operador .

•Se puede usar también para la

división:

•>> a = 1:5, b = 6:10, a./b

•>> a./a

•>> c = -2:2, a./c

•>> a.*b -24, ans./c

•Verifique el resultado.

15/05/2011

MATLAB Matrices

Material didáctico para el tutor

15/05/2011

Ingreso de Matrices

•Ingrese en la ventana de comandos:

•>>A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12;

4 15 14 1 ]

•Verifique el resultado.

•Use la flecha “hacia arriba” y

reemplace los espacios en blanco con

“comas”.

•Verifique el resultado.

•Ejecute: A‟

•Verifique el resultado

15/05/2011

Manejo de Subíndices

•Subíndices será la manera de

acceder a un elemento de una matriz.

•Usa los paréntesis y el nombre de la

variable.

•>>A(1,4)

•Verifique el resultado y la relación con

A.

15/05/2011

El operador :

•>>A(1:4,4)

•Verifique el resultado.

•Ejecute:

•>>A(:,4)

•Verifique el resultado?

•Cual es la función del operador “:”

manejando subíndices?

15/05/2011

El operador :

•Se puede utilizar el operador : para

generar matrices:

•>> D = [1:5; 6:10; 11:2:20]

•Verifique el resultado anterior.

15/05/2011

Vectores y Matrices

•En MATLAB en general todos son

arreglos.

•Un vector columna será una matriz de

mx1.

•Un vector fila será una matriz de 1xn.

15/05/2011

Tamaño de Matrices

•El comando size nos devuelve la

dimensión de la matriz que se usa

como parámetro.

•>> size(A)

•>> size(ans)

•El ultimo comando muestra que el

valor retornado por size es en si

mismo una matriz de 1x2.

15/05/2011

Tamaño de Matrices

•También se puede guardar las

dimensiones de una matriz en

variables separadas.

•>> [r c] = size(A'), S = size(A')

•Verifique los valores de r y c y de S.

•Verifique también los tipos de dato

(arreglo) de dichas variables.

15/05/2011

Matrices Especiales

•MATLAB provee algunas funciones

propias de un tamaño deseado.

•ones(m, n) da una matriz de mxn

llena de unos.

•>> P = ones(2,3)

•zeros(m,n) da una matriz de mxn

llena de ceros.

•Z = zeros(2,3)

15/05/2011

Matriz Identidad

•Es una matriz de ceros pero en su

diagonal principal esta llena de unos.

•>> I = eye(3), x = [8; -4; 1], I*x

•Note que eye(3) es una matriz

cuadrada identidad.

•Verifique el resultado de I*x.

15/05/2011

Matriz Diagonal

•Es una matriz identidad pero su

diagonal principal no es

necesariamente ceros.

•>> D = [-3 0 0; 0 4 0; 0 0 2]

•El comando diag puede generar una

matriz diagonal a partir de un vector.

•>> d = [-3 4 2], D = diag(d)

15/05/2011

Matriz Diagonal

•Por otro lado si A es una matriz el

comando diag(A) extrae la diagonal

principal de dicha matriz, incluso si la

matriz A no es cuadrada.

•>> F = [0 1 8 7; 3 -2 -4 2; 4 2 1 1]

•>> diag(F)

•Verifique la variable ans e identifique

“la diagonal” de F.

15/05/2011

Construcción de Matrices

•A veces es necesario generar

matrices grandes a partir de otras mas

pequeñas (o vectores).

•>> C=[0 1; 3 -2; 4 2]; x=[8;-4;1];

•>> G = [C x]

•Note que C es una matriz y x es un

vector columna.

15/05/2011

Construcción de Matrices

•Se pueden construir matrices usando

también funciones y operaciones

sobre matrices:

•>> J = [1:4; 5:8; 9:12; 20 0 5 4

•>> K = [ diag(1:4) J; J' zeros(4,4)]

•Pruebe el siguiente comando:

•>> spy(K), grid

15/05/2011

El operador end

•Indica el ultimo elemento. •Ejemplo:

•Verifique el resultado.

15/05/2011

MATLAB

Comandos y Funciones Útiles

Material didáctico para el tutor

15/05/2011

Expresiones

•Expresiones Matemáticas

elementales:

•>> help elfun

•Expresiones Matemáticas especiales:

•>>help specfun

•Expresiones de Matrices elementales:

•>>help elmat

15/05/2011

Números Aleatorios

•Para generarlos usamos las

funciones:

•rand, randn, randint.

•Verifique el uso de:

•>> rand(2)

•>> randn(2)

•>> randint(2,2,[-4 4])

15/05/2011

Suma de Elementos

•Se utiliza el comando sum.

•Genere un matriz para probar los

siguientes comandos:

15/05/2011

Manejo de valores

•Se manejan complejos automáticos:

•>> c=15+sqrt(-1)

•Y valores “excepción” correctamente:

•>> a=123/0

•>> b=0/0

•>> Inf-Inf

15/05/2011

Residue

•La función residue, descompone el

cociente de una fracción en fracciones

parciales.

•Teniendo un cociente de la forma:

•La función es:

•>>[r,p,k] = residue(b, a)

15/05/2011

Residue •Entrega los resultados para:

•Descomponga:

15/05/2011

Residue

•En fracciones parciales:

•>> b=[1 1 1 2];

•>> a=[1 0 3 0 2];

•>> [r,p,k]=residue(b, a)

•El resultado será:

15/05/2011

Sistema Lineal

•Use representación en MATLAB para

resolver un sistema lineal del tipo :

15/05/2011

Mostrar y Pedir datos

•La función INPUT imprime un

mensaje en la ventana de comandos y

devuelve el resultado de una

expresión teclada por el usuario.

•INPUT espera hasta que el usuario

ingrese un valor numérico o una

expresión

15/05/2011

Mostrar y Pedir datos

•Cualquier expresión válida de

MATLAB es aceptada por INPUT.

•>> edad = input(„Ingrese la edad: ')

•En el caso que sea una cadena de

texto es recomendable:

•>> nombre = input('¿Cómo te

llamas?','s')

15/05/2011

Mostrar y Pedir datos

•La función DISP imprime un mensaje

en la ventana de comandos, puede ser

un mensaje de texto o variables.

•>> disp('El programa ha terminado')

•>> A=rand(4,4)

•>> disp(A)

15/05/2011

MATLAB

Scripts y Funciones

Material didáctico para el tutor

15/05/2011

Scripts

•Son archivos de texto (.m) que

contienen comandos de MATLAB.

•Para ejecutar los comandos de ese

archivo se debe escribir el nombre del

archivo en la ventana de comandos.

•Las variables y resultados son de

ámbito GLOBAL.

15/05/2011

Scripts

•Debe estar contenido en el directorio

actual para poder ejecutarlo (F5 o

como comando).

•Los nombres de los scripts deben

seguir la regla de las variables de

MATLAB.

•Mucho ojo con los espacios.

15/05/2011

Scripts

•El nombre del script no debería

interferir con alguna función o con una

variable (error común).

•Los comentarios en MATLAB se

generan con el símbolo %:

•>> %Esto es un comentario

15/05/2011

Script de Ejemplo

15/05/2011

Funciones

•Son “user-defined” a diferencia de las

“built-in”, también escritas en .m.

•Las buit-in también son llamadas

funciones de llamada.

•Las user-defined son llamadas funciones

de definición.

•SIEMPRE reciben parámetros para

realizar los cálculos.

15/05/2011

Funciones

•Los comandos dentro de las

funciones operan sobre los

parámetros.

•Las variables y resultados son de

ámbito LOCAL.

•Los .m de funciones deben

encontrarse en el directorio actual

para poder ser llamadas

15/05/2011

Funciones

•Luego de ser creadas y siempre que

estemos en el directorio actual donde

esta contenido el .m de la función de

definición, entonces la función se

convertirá en de llamada.

•También se puede agregar funciones

de definición a MATLAB.

15/05/2011

Funciones

•El nombre de la función no DEBERIA

interferir con alguno de una “buit-in”, ni

de otra variable (error común).

•El nombre del archivo .m conteniendo

a la definición de la función DEBE ser

igual al nombre de la función.

15/05/2011

Funciones •La primera línea del archivo debe tener el

formato:

•Luego de esta línea se puede documentar la

función usando comentarios.

15/05/2011

Ejemplo Funciones

•Escriba desde la ventana de

comandos:

•>> help med_des

15/05/2011

Scripts vs. Funciones

15/05/2011

MATLAB Otros Tipos

de Datos

Material didáctico para el tutor

15/05/2011

Tipos de Datos

15/05/2011

Tipos de Datos

•Nos devuelve el tipo de dato de “x”.

•También existen comandos que nos

dan información lógica sobre cada

tipo:

•isinteger(x), isfloat(x), ischar(x),

islogical(x), iscell(x), isstruct(x).

•isempty(x), isnan(x), isinf(x).

15/05/2011

Tipos de Datos

•El tipo de Dato entero corresponde:

•El tipo de Dato float corresponde:

15/05/2011

Conversión de Tipo

•Para convertir se usa el nombre del

tipo a generar como si fuera función:

•>> a = 522.08

•>> int8(a)

•>> int16(a)

•Verifique el redondeo.

15/05/2011

Funciones de Redondeo

•round: redondea al entero mas

próximo.

•floor: redondea a –inf.

•ceil: redondea a +inf.

•fix: redondea hacia cero.

15/05/2011

Funciones de Redondeo

•>> x = pi*(-1:3), round(x)

•>> fix(x)

•>> floor(x)

•>> ceil(x)

•>> sign(x), rem(x,3)

15/05/2011

Caracteres, Cadenas y Texto

•MATLAB maneja el tipo Carácter.

•Una cadena es un vector de caracteres.

•Un Texto es una matriz de caracteres.

•>> t1 = 'A'

•Asigna el valor de „A‟ al arreglo de carácter 1x1

t1.

15/05/2011

Caracteres, Cadenas y Texto

•>> t2 = 'BCDE'

•Asigna el valor BCDE al arreglo de

caracteres 1x4 t2.

•Las cadenas creadas se pueden tomar

como arreglos regulares y manipularlos.

•>> t3 = [t1,t2]

15/05/2011

Acceso de Cadenas

•El direccionamiento funciona como en

vectores:

15/05/2011

Construcción de Cadenas

•Asigne:

•>> t4 = [t3,' are the first 5 ';...

•„characters in the alphabet.']

•Asigna el valor:

•'ABCDE are the first 5 '

•„characters in the alphabet.'

15/05/2011

Construcción de Cadenas

•Al arreglo de 2x27 t4, es NECESARIO que

ambas filas del arreglo tengan el mismo

numero de caracteres (elementos), eso es una

regla general de arreglos en MATLAB.

•Los … significan que el comando continua en

la línea siguiente.

15/05/2011

Cadenas y Números

•Todo carácter tiene un equivalente en

valor numérico.

•str2num convierte una cadena a su

correspondiente representación

numérica.

•int2str y num2str convierte

respectivamente un entero y un

numero real a su correspondiente

cadena de caracteres.

15/05/2011

Cadenas y Números

•Deseamos generar la cadena: „El valor de

pi es 3.1416'.

•[„El valor de pi es ',num2str(pi)].

•Otro ejemplo:

•>> N = 5; h = 1/N;

•>> ['The value of N is ',int2str(N),...

•', h = ',num2str(h)]

15/05/2011

Manejo de Cadenas

•El operador == realiza comparaciones

entre vectores (elemento a elemento)

15/05/2011

Manejo de Cadenas

15/05/2011

MATLAB Gráficas

Material didáctico para el tutor

15/05/2011

PLOT

•La función PLOT realiza gráficos con por lo menos un

parámetro.

•En el siguiente ejemplo se crea un vector x con valores

entre 0 y 2π, se calcula el seno de esos valores y se

grafican los resultados:

15/05/2011

PLOT: Ejemplo 1

•>>x = 0:pi/100:2*pi;

•>>y = sin(x);

•>>plot(x, y)

PLOT: Ejemplo 2

•> >x = [1; 2; 3; 4; 5]

•> >y = [0; .25; 3; 1.5; 2]

•> >plot(x, y)

15/05/2011

PLOT y Muestreo

•Para graficar para el rango [0,1] se muestrea la

función a un numero suficientemente grande de puntos y

luego se los une con líneas rectas.

•Para tomar N+1 puntos igualmente espaciados a una

distancia h:

•>> N = 10; h = 1/N; x = 0:h:1;

15/05/2011

PLOT y Muestreo

•Se define el conjunto:

•>> y = sin(3*pi*x);

•>> plot(x, y)

•Verifique el gráfico e identifique que el

numero N es muy pequeño aun.

•Cambie N=100 y verifique el

resultado.

15/05/2011

PLOT y Muestreo

•El “seno” es una función continua.

•MATLAB trabaja con datos discretos.

•PLOT realiza una interpolación lineal entre esos

datos para graficar.

•Mayor cantidad de puntos (muestras) harán que

la gráfica sea prácticamente “continua”.

15/05/2011

Propiedades de un PLOT

•>>xlabel('x = 0:2\pi')

•>>ylabel('Seno de x')

•>>title('Gráfica de la función

seno','FontSize',12)

15/05/2011

PLOTs con Estilo

•Plot puede recibir un tercer

argumento.

•Tercer argumento es una cadena que

recibe como primer carácter el color y

segundo el estilo de línea.

15/05/2011

PLOTs con Estilo •La cadena recibe hasta 3 caracteres:

15/05/2011

Multi-PLOT

•>>x = 0:pi/100:2*pi;

•>>y = sin(x);

•>>plot(x, y)

•>>y2 = sin(x-.25);

•>>y3 = sin(x-.5);

•>>plot(x,y,x,y2,x,y3)

•>>legend('seno(x)','seno(x-

.25)','seno(x-.5)')

15/05/2011

PLOT y el GCA

•Cada llamado de la función PLOT es una

petición para crear un nuevo “eje” (axis –

ventana donde se contiene el gráfico).

•Cada llamado de PLOT entonces reemplazará

la gráfica anterior.

•>>hold on

•“Mantiene” el gráfico actual en el eje actual.

15/05/2011

PLOT y el HOLD

•Se puede llamar muchas veces a PLOT pero no se

reemplazará el gráfico hasta que exista un:

•>>hold off

•Comparar con lo aprendido en “Varios Gráficos en

un PLOT”.

15/05/2011

AXIS

•La función/comando axis ajusta los ejes del gráfico

actual. Tiene esta sintaxis:

•>>axis([xmin xmax ymin ymax])

•Cuando se crea un plot y no se ha definido “axis”

entonces el axis es automático:

•>>axis auto

15/05/2011

AXIS

•Pruebe estos valores para axis e

identifique el efecto:

•>>axis square

•>>axis equal

•>>grid on

•>>grid off

15/05/2011

15/05/2011

15/05/2011

SUBPLOT

•Divide la ventana de gráficos en un arreglo mxn en

donde se pueden plotear mxn gráficos.

•Se enumeran de izquierda a derecha, de arriba

hacia abajo.

•subplot(221) (o subplot(2,2,1)) indica que se divide

en 2x2 gráficos y selecciona el 1 subgráfico.

15/05/2011

SUBPLOT

•>> subplot(221), plot(x, y)

•>> xlabel('x'),ylabel('sin 3 pi x')

•>> subplot(222), plot(x, cos(3*pi*x))

•>> xlabel('x'),ylabel(„cos 3 pi x')

•>> subplot(223), plot(x, sin(6*pi*x))

•>> xlabel('x'),ylabel('sin 6 pi x')

•>> subplot(224), plot(x, cos(6*pi*x))

•>> xlabel('x'),ylabel(„cos 6 pi x')

15/05/2011

Figuras, Ejes y Panel

•clf, limpia la figura actual.

•close 1, cierra la ventana llamada

“Figure 1”.

•figure, abre una nueva ventana.

•figure(9), abre una nueva ventana

“Figure 9”.

15/05/2011

Figuras, Ejes y Panel

•Cuando se ha ejecutado el comando PLOT se “crea” (abre)

una nueva ventana que puede recibir gráficos (ejes).

•El comando figure crea una ventana adicional y la convierte

en la actual, lo que significa que si ejecutamos un comando

relacionado a gráficos (plot) usara la “ventana actual” para

graficarlo.

15/05/2011

Figuras, Ejes y Panel

•El comando close cierra la ventana actual y el comando

close all cierra todos los gráficos.

•Se pueden tener también varias graficas sobre la misma

ventana.

•La función hold permite montar los gráficos de una

misma ventana actual.

15/05/2011

Setear Propiedades a un Plot

•Todas las propiedades de cada objeto del gráfico

(figura, ejes, elemento gráfico,...) están guardadas en

"handles“

•gcf current figure, gca current axis

•get(handle) muestra todos las propiedades que se

pueden cambiar.

15/05/2011

Setear Propiedades a un Plot

•set(handle, 'PropertyName', 'Value',...) cambia propiedades.

•Para personalizar el eje x sin dependencia del vector:

•set(gca,'Xtick',[1 2 3 4 5 6]);

•set(gca,'XtickLabel',['ene';'feb';'mar';'abr';'may';'jun']);

15/05/2011

Funciones para Graficar

15/05/2011

Otras Funciones para Graficar

•» x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8];

•» hist(x)

•» figure

•» bar(x)

•Interprete los resultados.

15/05/2011

Otras Maneras de Graficar

15/05/2011

Otras Maneras de Graficar

15/05/2011

Practica

•Ejecute el siguiente código:

•>> x = 0:0.05:6; y = sin(pi*x); Y =

(y>=0).*y;

•>> plot(x,y,':',x,Y,'-' )

•Interprete los resultados.

15/05/2011

Practica •Grafique en un solo panel:

•Para el rango de [0,10].

15/05/2011

Practica