53
Introducci´ on a MATLAB J.M. Gonz´ alez de Durana Dpto. de Ingenier´ ıa de Sistemas y Autom´ atica EUITI e ITT, UPV-EHU VITORIA-GASTEIZ 26 de enero de 2004

Introducci on a MATLAB - Nelson Caceres

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducci on a MATLAB - Nelson Caceres

Introduccion

a

MATLAB

J.M. Gonzalez de Durana

Dpto. de Ingenierıa de Sistemasy Automatica

EUITI e ITT, UPV-EHUVITORIA-GASTEIZ

26 de enero de 2004

Page 2: Introducci on a MATLAB - Nelson Caceres

2

Page 3: Introducci on a MATLAB - Nelson Caceres

Capıtulo 1

Los primeros pasos en Matlab

1.1 Caracterısticas

Matlab es un paquete de software orientado hacia el calculo numerico cientıfico e in-genieril. Integra calculo numerico, computacion de matrices y graficos en un entorno detrabajo comodo para el usuario. Su nombre significa Laboratorio de Matrices y fue escritoinicialmente en base a los ya existentes paquetes de calculo matricial LINPACK y EIS-PACK. Posteriormente se han anadido librerıas, denominadas Toolboxes, especializadasen diferentes areas cientıficas. De entre ellas podemos destacar

• Simulink Toolbox

• Control System Toolbox

• System Identification Toolbox

• Robust Conntrol Toolbox

• Signal Processing Toolbox

• Filter Design Toolbox

• Symbolic Math Toolbox

por su particular interes para nuestra area de conocimiento. La ultima de la lista, Symbolic

Math Toolbox, esta basada en el programa de calculo simbolico Maple y utiliza una sintaxisdiferente.

Matlab ha evolucionado y crecido con las aportaciones de muchos usuarios. En entor-nos universitarios se ha convertido, junto con Mathematica y Maple, en una herramientainstructora basica para cursos de matematicas aplicadas ası como para cursos avanzadosen otras areas. En entornos industriales se utiliza para investigar y resolver problemaspracticos y calculos de ingenierıa. Son aplicaciones tıpicas el calculo numerico, la realiza-cion de algoritmos, la resolucion de problemas con formulacion matricial, la estadıstica,la optimizacion, etc. Es de destacar la aplicacion en el estudio, simulacion y diseno de lossistemas dinamicos y de control.

3

Page 4: Introducci on a MATLAB - Nelson Caceres

4 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

1.2 Funcionamiento

Matlab es un programa interprete de comandos. Esto quiere decir que es capaz de procesarde modo secuencial una serie de comandos previamente definidos, obteniendo de formainmediata los resultados. Los comandos pueden estar ya definidos en el propio Matlab ypueden tambien ser definidos por el usuario. Para que Matlab pueda realizar este procesoel usuario ha de escribir la lista de comandos en la ventana de comandos, si su numero esreducido, o en un fichero con extension .m, constituyendo entonces un programa.

El metodo que debe seguirse para procesar los datos es muy simple:

1. El usuario escribe expresiones en la ventana de comandos, o bien en un archivo detexto apropiado (archivo.m).

2. Tras la orden de ejecucion enter (o escribir el nombre del fichero), Matlab procesala informacion.

3. Matlab Escribe los resultados en la ventana de comandos y los graficos (si los hu-biere) en otras ventanas graficas.

1.3 Sintaxis

Para escribir las expresiones es preciso respetar ciertas reglas sintacticas propias de Mat-lab. Algunas se parecen bastante a las de otros lenguajes de programacion por lo que noresultan extranas.

1.3.1 Expresiones algebraicas

Estan formadas por cadenas de caracteres, numeros y operadores algebraicos. Las cadenasde caracteres pueden ser sımbolos de variables (matrices) o funciones de Matlab. Lasmayusculas y minusculas son distintas.

Podemos distinguir dos tipos de expresiones: numericas (propias de Matlab) y simbolicas(propias de Maple). Una expresion numerica puede conterner sımbolos (nombres de varia-bles) pero estos han de estar previamente asignadas a valores numericos. Las expresiones

>> a = 2; b = 3;

>> a + b

son numericas; el valor de a + b es hallado y mostrado por Matlab inmediatamen-te: ans = 5. Sin embargo, una expresion simbolica puede contener sımbolos sin valornumerico asignado. Si escribimos

>> syms x

>> p = 2*x^2 - 7;

la segunda expresion representa un polinomio en la indeterminada x. El valor de p parax = 1 se puede obtener con

>> subs(p,x,1)

que dara como resultado: ans = 5.

Page 5: Introducci on a MATLAB - Nelson Caceres

1.3. SINTAXIS 5

1.3.2 Operadores

Hay operadores para numeros (reales o complejos) y para matrices.

Para numeros: + - * / ^

Numeros complejos: Esta definida la unidad imaginaria,√−1, que se denota indistinta-

mente por los sımbolos i y j

Para matrices: + - * / \ ^

Para matrices elemento por elemento: .+ .- .* ./ .^

Los operadores para numeros se colocan entre dos numeros y dan como resultado otronumero. Por ejemplo 2 + 3 o a + b, si a y b han sido asignadas previamente a numeros.Los operadores para matrices se colocan entre dos matrices y dan como resultado otramatriz.

Los operadores de relacion son para numeros reales, se colocan entre dos numeros ydan como resultado 1, que significa cierto, o 0, que significa falso. El significado de todosellos resulta obvio, si bien conviene aclarar que el operador == significa igual, en el sentidode condicion (por ejemplo a==b puede ser cierto o falso), y es diferente del operador = quesirve para asignar un valor a una variable (por ejemplo a=3) significa dar a la variablea el valor de 3. El operador ~= significa distinto, tambien en el sentido de condicion.Los operadores de condicion se utilizan, sobre todo, en las estructuras de programacionif-then-else, for, y while.

Para delimitar las matrices se utilizan los corchetes “[ ]”. Para separar elementosconsecutivos, el espacio en blanco (barra espaciadora) o la coma , y para pasar de fila,

la tecla enter o el punto y coma ; .

La traspuesta conjugada de una matriz de numeros complejos A se representa por A’.

Otros operadores, para usos varios, son

Ayudas al usuario: who, help, ! , save, load

Operaciones logicas: & (AND), ! (OR), ~ (NOT)

1.3.3 Funciones elementales

Matlab dispone de las funciones elementales mas comunes (las que tienen las calculado-ras de bolsillo) y otras especiales, propias. Realizan una operacion sobre un argumentonumerico dado de tipo matriz y operan elemento por elemento. Las mas usuales son:

Trigonometricas: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh.

Logicas: any, all, find, exist, isnan, finite, isempty, isstr, strcomp.

Otras: abs, angle, sqrt, real, imag, conj, round, fix, floor, ceil, sign, rem, exp, log, log10.

Especiales: bessel, gamma, rat, ert, invertf, ellipk, ellipj.

Page 6: Introducci on a MATLAB - Nelson Caceres

6 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

1.4 Desarrollo de una sesion

Los manuales de Matlab explican detalladamente los conceptos, comandos y procedimien-tos del programa. Aquı vamos realizar una introduccion a su manejo mediante algunosejemplos. Es conveniente que los alumnos realicen por su cuenta otros parecidos y tratende utilizar Matlab para resolver problemas de Matematicas, Fısica y otras asignaturas.

La instalacion se realiza automaticamente con el CD de Matlab. Una vez instalado elprograma, al picar con el raton en el icono de MATLAB aparece en la pantalla la ventana:

Esta ventana se llama MATLAB command window y es en la que el usuario opera.En la primera lınea aparecen las opciones disponibles.

1.4.1 Comandos de Utilidad

Los comandos demo, help, who, whos, dir, diary y algunos otros, resultan muy utilespera el usuario en el desarrollo de la sesion.

El comando demo nos muestra, de modo interactivo, un amplio abanico de ejemplosde aplicacion de Matlab y es de gran ayuda durante nuestros inicios con el programa.

El comando help funcion_deseada muestra en la pantalla un texto explicando comose utiliza. Por ejemplo,

>> help poly

POLY Characteristic polynomial.

If A is an N by N matrix, POLY(A) is a row vector with

N+1 elements which are the coefficients of the

characteristic polynomial, DET(lambda*EYE(A) - A) .

If V is a vector, POLY(V) is a vector whose elements are

the coefficients of the polynomial whose roots are the

elements of V . For vectors, ROOTS and POLY are inverse

functions of each other, up to ordering, scaling, and

roundoff error.

Page 7: Introducci on a MATLAB - Nelson Caceres

1.5. OPERACIONES NUMERICAS 7

ROOTS(POLY(1:20)) generates Wilkinson’s famous example.

See also ROOTS, POLYVAL.

muestra en la pantalla la ayuda sobre el polinomio caracterıstico de una matriz. El usode la ayuda es muy conveniente, sobre todo en el perıodo de aprendizaje.

Los comandos who y whos dan una lista de las variables que estan actualmente en lamemoria (workspace de Matlab. El comando dir, igual que el de DOS, lista el directorioactual. El comando diary sirve para que todo lo que vamos tecleando y los resultadosobtenidos (incluidos los errores) se almacene en un archivo. Para ello debemos escribir,en el instante a partir del cual queremos grabar la sesion

>> diary dia12

en donde dia12 es el nombre del archivo en el que queremos que se escriba. Para terminarel proceso de grabacion hemos de teclear

>> diary off

El uso de la ayuda es muy conveniente, sobre todo en el perıodo de aprendizaje.

1.5 Operaciones numericas

Matlab puede operar como una calculadora: si el usuario escribe las ordenes apropia-das, los resultados aparecen en la ventana de comandos (Command Window). Observeseque si ponemos ; al final de la expresion el resultado no se escribe en la pantalla.Es capaz de realizar las operaciones aritmeticas suma, resta, multiplicacion, division ypotenciacion, con numeros (reales y complejos), con vectores (polinomios) y con matri-ces. Ademas, mediante la librerıa Symbolic Math Toolbox, puede tambien operar conexpresiones simbolicas.

1.5.1 Operaciones aritmeticas

Las operaciones aritmeticas con numeros son, quizas, las mas sencillas que pueden efec-tuarse. Para ilustrar su realizacion, a continuacion se muestran una serie de lıneas quecomienzan por >>, indicativo (o prompt) de la pantalla de comandos en una sesion de Ma-tlab, seguido de una orden y del resultado que aparecerıa inmediatamente en la pantallasi se ejecutara.

>> a = 4

a =

4

>> b = 5 + a

b =

9

>> c = a^2 + b^2

c =

97

>> sin (30*pi/180)

ans =

1/2

Page 8: Introducci on a MATLAB - Nelson Caceres

8 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

Si el usuario no ha asignado el resultado a una variable, Matlab lo hace utilizando lavariable “ans”

Numeros complejos

La forma de operar con numeros complejos es igual que para los reales.

>> a=1; b=2; c=3;

>> x1=(-b+sqrt(b^2-4*a*c))/(2*a)

x1 =

-1.0000 + 1.4142i

>> x2=(-b-sqrt(b^2-4*a*c))/(2*a)

x2 =

-1.0000 - 1.4142i

>> a*x1^2+b*x1+c

ans =

0

>> c1=1+2*i

c1 =

1.0000 + 2.0000i

>> c2=1-2*i

c2 =

1.0000 - 2.0000i

Paso rectangulares ↔ polares:

>> M=abs(c1)

M =

2.2361

>> alpha=angle(c1)

alpha =

1.1071

>> alpha_grados=alpha*180/pi

alpha_grados =

63.4349

>> M*cos(alpha)

ans =

1

>> M*sin(alpha)

ans =

2

Podemos comprobar el resultado con las ordenes real(c1), imag(c1)

Operaciones con vectores

MATLAB no precisa una notacion especial para vectores. Vamos a hacer algunas opera-ciones sencillas con vectores.

Page 9: Introducci on a MATLAB - Nelson Caceres

1.5. OPERACIONES NUMERICAS 9

>> a = [1 2 3 4 6 4 3 4 5]

a =

1 2 3 4 6 4 3 4 5

>> b = a + 2

b =

3 4 5 6 8 6 5 6 7

>> c = a + b

c =

4 6 8 10 14 10 8 10 12

>> d = a .* b

c =

3 8 15 24 48 24 15 24 35

Los vectores, por defecto, son vectores fila.

Operaciones con polinomios

Los polinomios se representan en Matlab como vectores fila. Por ejemplo, el polinomio3s3 − 5s2 + 7s + 3 se representa por

>> p=[3 -5 7 3]

Las raıces de un polinomio se hallan mediante la funcion roots:

>> r=roots(p)

El producto de dos polinomios se realiza a traves de la convolucion de los vectores desus coeficientes, mediante la funcion conv. Por ejemplo,

>> p1=[-1 -3 3 4];

>> p2=[1 2 4 0];

>> p=conv(p1,p2);

Para la division se usa la deconvolucion. Mediante la funcion deconv se obtiene elcociente q y el resto r de la division.

>> [c,r]=deconv(p,p1);

La funcion polyval sirve para hallar el valor de un polinomio. Si el parametro que lepasamos es un vector, calcula otro vector con los valores del polinomio para cada uno delos del vector.

La funcion polyfit sirve para hacer ajustes polinomicos de una secuencia de datosdada por dos vectores X e Y. Se puede elegir el grado del polinomio. En el siguienteejemplo se utilizan estas dos funciones:

>> x=[0:10];

>> y=rand(x);

>> plot(x,y)

>> p=polyfit(x,y,3); % Elegimos grado 3

>> z=polyval(p,x);

>> hold

>> plot(x,z)

Page 10: Introducci on a MATLAB - Nelson Caceres

10 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

Citaremos por ultimo la funcion residue que sirve para hallar los residuos de unafuncion racional en los polos de la misma (o coeficientes de su expansion en fraccionessimples), bajo el supuesto de que los polos sean simples. Ademas, dicha funcion calculatambien los polos y el termino directo.

>> B = [1 2 3 4];

>> A = [1 2 3 4 5 6 7];

>> [r,p,k] = residue(B,A);

Operaciones con matrices

Veamos como se efectuan algunas de las operaciones mas comunes con matrices:Introducir una matriz A:

>> A = [1 2 3;4 5 6;7 8 0]

Calculo de la transpuesta:

>> B = A’

Producto matricial:

>> C = A * B

Determinante:

>> det(A)

Rango de la matriz:

>> rank(A)

Numero de condicion:

>> cond(A)

Matriz inversa:

>> inv(A)

Valores propios y vectores propios:

>> [val,vec]=eig(A)

Valores singulares:

>> svd(A)

Exponenciacion matricial (eA):

>> expm(A)

Polinomio caracterıstico:

>> p = poly(A)

Las raıces de p, roots(p), deben ser los valores propios de A, eig(A).

Page 11: Introducci on a MATLAB - Nelson Caceres

1.6. OPERACIONES SIMBOLICAS 11

1.6 Operaciones simbolicas

La librerıa Symbolic Math Toolbox da acceso a Matlab a algunas funciones del nucleo deMaple que permiten operar con expresiones simbolicas.

1.6.1 Operaciones aritmeticas

En las primeras versiones de la librerıa Symbolic Math Toolbox era necesario emplearlos comandos especiales symadd, symsub, symmul, symdiv y sympow para las operacionesde suma, resta, multiplicacion, division y potenciacion, respectivamente, de expresionessimbolicas. Afortunadamente, esto ya no es necesario y se pueden usar para ello losoperadores numericos +, -, +, *, / y ^, siempre y cuando las variables simbolicas sehayan declarado previamente con sym() o syms. Si ponemos

>> syms a b p x

>> a = x^3+3*x^2-2*x+7;

>> b = x^2+x+3;

>> p = a * b

p =

(x^3+3*x^2-2*x+7)*(x^2+x+3)

obtenemos el polinomio producto en forma factorizada. Si lo queremos ver forma expan-dida, pondremos

>> expand(p)

ans =

x^5+4*x^4+4*x^3+14*x^2+x+21

Las demas operaciones simbolicas se efectuan de modo similar.

1.6.2 Sustitucion de variables

La sustitucion de un sımbolo por otro en una expresion simbolica se puede realizar conla orden subs. La forma de hacerlo es subs(expr, old, new), en donde expr es unaexpresion simbolica, old es el sımbolo (o valor) que se desea sustituir y new es el nuevosımbolo o valor.

Supongamos que en el polinomio f = ax2 + bx + c queremos sustituir x por -1. Paraello, si escribimos

>> syms x a b c

>> f = a*x^2 + b*x + c;

>> g = subs(f,x,-1)

entonces sale

g =

a - b + c

Se pueden tambien sustituir varias variables a la vez. Si en el mismo polinomio de antesquisieramos sustituir a por 1, b por 2 y c por k, podemos poner

Page 12: Introducci on a MATLAB - Nelson Caceres

12 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

>> syms x a b c k

>> f = a*x^2 + b*x + c;

>> g = subs(f,[a,b,c],[1,2,k])

y obtendremos

g =

x^2+2*x+k

Numerador y denominador

En una expresion simbolica racional suele interesar conocer el numerador y el denominadorde la misma. Para esto tenemos la orden numden. Si, por ejemplo, nos dan la expresion

h =x2 + 1

2x − 1+

x

x − 1,

podemos hallar el denominador y el denominador de la misma con

>> x=sym(’x’)

>> h = (x^2+1)/(2x-1) + x/(x-1);

>> [n,d] = numden(h)

n =

x^3+x^2-1

d =

(2*x-1)*(x-1)

Conversion de polinomios

Las ordenes poly2sym y sym2poly sirven, respectivamente, para convertir un polinomioexpresado en forma numerica (vector de coeficientes) en su expresion simbolica, y vice-versa. El siguiente ejemplo ilustrara su utilizacion.

>> syms x

>> p = [1 2 3 4 5]

>> px = poly2sym(p,x)

px = x^4+2*x^3+3*x^2+4*x+5

>> sym2poly(px)

ans =

1 2 3 4 5

1.7 Graficos

Matlab tiene una buena coleccion de comandos para obtener representaciones graficas apartir de datos numericos y tambien algunos para expresiones simbolicas.

Page 13: Introducci on a MATLAB - Nelson Caceres

1.7. GRAFICOS 13

1.7.1 Graficos en 2D

En las aplicaciones interesa a veces conocer el valor numerico de una funcion y = f(x)para uno o varios valores de la variable. En Matlab, dada una funcion y = f(x), definidaen un intervalo [a, b], es posible representarla por un par (x,y) de vectores de numeros,tales que el vector x contiene un conjunto finito de valores de x y el vector y contiene elconjunto de valores imagenes de x por la funcion y, calculados por el propio Matlab. Unavez representada de este modo la funcion, se puede representar graficamente.

Por ejemplo, dada la funcion y = 10(1−e−x/3sin(10x)), definida en el intervalo [0, 10],una posible representacion en Matlab, seguida de su representacion grafica, serıa

>> x=[0:0.1:10];

>> y=10*(1-exp(-x/3).*sin(10*x));

>> plot(x,y),title(’Grafica de una funcion’)

0 1 2 3 4 5 6 7 8 9 100

2

4

6

8

10

12

14

16

18

20Gráfica de una función

La grafica corresponde a una funcion sinusoidal amortiguada mas una constante.

1.7.2 Graficos en 3D

Las funciones de dos variables, de la forma f(x, y) se pueden representar graficamentecon Matlab en 3D. Para ello es preciso crear un dominio de puntos en forma de mallarectangular en el plano (x, y), dentro del cual se desea representar la funcion. Esto sehace con la orden meshgrid (antes meshdom) de Matlab. Veamoslo con un ejemplo. Seala funcion z : R

2 → R,z =

√1 − x2 − y2,

cuyo dominio es el cırculo x2 + y2 < 1, y supongamos que queremos calcular los valoresde z en una region rectangular del plano (x, y) definida por los puntos (-1.25,-1.25) y(1.25,1.25), y representarla graficamente. Para ello escribiremos:

Page 14: Introducci on a MATLAB - Nelson Caceres

14 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

>> [x,y] = meshgrid(-1.25:0.2:1.25,-1.25:0.2:1.25);

>> z = sqrt(1 - x.^2 - y.^2);

>> mesh(z)

y en la pantalla aparecera el grafico.

02

46

810

1214

0

5

10

150

0.2

0.4

0.6

0.8

1

1.8 Ficheros-m

Matlab esta dotado de un mecanismo que le permite interpretar ficheros de texto, conla condicion de que su nombre termine por .m. Se utilizan principalmente para crearfunciones (en el sentido matematico), programas y funciones (ordenes) de Matlab.

1.8.1 Funciones-funcion

Mediante ficheros-m podemos crear funciones en el sentido matematico:

f : x → f(x)

La denominacion que da Matlab a estas funciones es funciones-funcion (function func-tions). Estas funciones permiten realizar integracion numerica, resolver ecuaciones nolineales, problemas de optimizacion y resolver ecuaciones diferenciales. Veamos un par deejemplos.

Dentro del editor definimos la funcion f1(x)

function y=f1(x)

y=1 ./ ((x-0.3).^2+0.01) + 1 ./((x-0.9).^2+0.04)-6;

Una vez salvado el fichero podemos calcular la funcion en un intervalo y dibujarla.

Page 15: Introducci on a MATLAB - Nelson Caceres

1.8. FICHEROS-M 15

>> x=[-1:0.1:2];

>> y=f1(x);

>> plot(x,y);

−1 −0.5 0 0.5 1 1.5 2−20

0

20

40

60

80

100Función y=f1(x)

Es posible hallar los valores maximo y mınimo de la funcion en un intervalo:

>> xmin = fmin(’f1’,0.5,1);

xmin =

0.6370

>> ymin=f1(xmin);

ymin =

11.2528

Otro ejemplo puede ser representar la funcion

f =1

1

x+

1

y

utilizada en Optica. Para ello creamos el fichero lente.m con la definicion de la funcion.Escribimos

function z=lente(x,y)

z = 1 ./ (1 ./ x + 1 ./ y);

grabamos el fichero, con el nombre lente.m, y ya podemos utilizar la funcion y represen-tarla graficamente.

Page 16: Introducci on a MATLAB - Nelson Caceres

16 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

>> x=[-1:0.05:1];

>> y=x;

>> [xx,yy]=meshdom(x,y);

z=lente(xx,yy);

atgz=atan(z);

mesh(atgz,[60 60])

title(’Funcion lente. f= 1/(1/x + 1/y)’)

010

2030

4050

0

10

20

30

40

50

−2

−1.5

−1

−0.5

0

0.5

1

1.5

2

Función de dos variables

Podemos asimismo hallar el valor mınimo en un intervalo:

>> xmin=fmin(’f1’,0.5,1)

>> ymin=f1(ymin)

1.8.2 Programacion

Para evitar teclear repetidamente las mismas funciones, Matlab permite crear un ficherocon una lista de comandos que luego, al ser llamado, interpreta secuencialmente. Dispone,como otros lenguajes de programacion, de las estructuras if-then-else, while y for. Elarchivo en el que se escriben las ordenes de Matlab (programa) ha de tener la extension.m y se puede escribir con cualquier editor de texto.

Para ejecutar el programa, simplemente ponemos su nombre

>> nombre-fichero

el mismo nombre que hayamos puesto antes (pero sin .m). En un fichero-m podemos colo-car simplemente una lista de instrucciones de Matlab con lo que al llamarlo se ejecutaransecuencialmente.

Matlab tiene un lenguaje de programacion propio, de tipo interprete. Es decir, escapaz de interpretar una lista de instrucciones contenidas en un fichero-m. Igual que

Page 17: Introducci on a MATLAB - Nelson Caceres

1.8. FICHEROS-M 17

otros lenguajes de programacion, dispone de las estructuras de programacion clasicas:if-then-else, for, y while.

Estructura if-then-else

La sintaxis de la estructura if-then-else es

if condicion1

orden1a

orden2a

...

...

elseif condicion2

orden1b

orden2b

...

...

else

orden n

end

en donde orden1*, orden2*, . . . , son ordenes y condicion1, condicion2, . . . , estamentoscondicionales o booleanos de Matlab. Puede observarse que no se pone la palabra then.Veamos un ejemplo.

if i==j

A(i,j) = 2;

elseif abs(i-j) == 1

A(i,j) = -1;

else

A(i,j) = 0;

end

Estructura for

La sintaxis de la estructura for es

for variable=expression

orden1a

orden2a

...

...

end

en donde orden1*, orden2*, . . . , son ordenes de Matlab. Por ejemplo,

A = zeros(3,4)

for i=[1:4]

for j=[1:4]

A(i,j) = i+j;

Page 18: Introducci on a MATLAB - Nelson Caceres

18 CAPITULO 1. LOS PRIMEROS PASOS EN MATLAB

end

end

Puede haber, como en este ejemplo, varios bucles for anidados.

Estructura while

La sintaxis de la estructura while es

while condicion

orden1a

orden2a

...

...

end

en donde orden1a, orden2a, . . . , son ordenes y condicion es un estamento condicionalo booleano de Matlab. Como ejemplo, podrıamos poner

n = 0; eps=1;

while 1+eps > 1

eps = eps/2;

n = n+1;

end

Page 19: Introducci on a MATLAB - Nelson Caceres

Capıtulo 2

Simulink

2.1 Inicio

Un diagrama de bloques es un modelo grafico que representa el modelo matematico deun determinado sistema dinamico. Simulink es una librerıa (toolbox ) de Matlab quepermite representar el diagrama de bloques de un sistema y a continuacion proceder a susimulacion.

El programa se inicia escribiendo simulink en la pantalla de comandos de Matlab otambien pulsando con el raton en el icono coloreado de Simulink que aparece en la ventanade comandos de Matlab. Con ello se abre una ventana titulada Simulink Library Browser

que contiene la librerıa Simulink y otras que son, digamos, complementarias. Al pulsarsobre el signo + que precede a su nombre, aparece una nueva lista y entonces en lapantalla veremos:

− Simulink

— Countinous

— Discrete

— Math Operations

— Signal Routing

— Sinks

— Sources...

+ Dials & Gauges Blockset

+ Stateflow

...

Los elementos de la lista de Simulink son los esenciales para construir diagramas debloques. El resto son librerıas adicionales especializadas areas especıficas de control, enformas avanzadas de simulacion, etc.

19

Page 20: Introducci on a MATLAB - Nelson Caceres

20 CAPITULO 2. SIMULINK

2.2 Creacion y simulacion de un modelo

Para aprender a manejar Simulink comenzaremos realizando el modelo de un sistema decontrol simple.

Dado el diagrama de bloques de un sistema de control,

U(s)+

-

K G(s)Y (s)

H(s)

en donde

K = 5, G(s) =s + 1

s2 + 4, H(s) =

2s + 1

s + 1

y suponiendo que la entrada es una funcion de tipo escalon unitario, queremos realizar lasimulacion del mismo con Simulink.

La construccion del modelo es muy sencilla. En primer lugar hemos de abrir unaventana para hacer el dibujo. Esto se hace picando con el raton en primer el icono de laizquierda (hoja en blanco) de la ventana de Simulink o tambien seleccionando con el ratonFile → New → Model, en la misma. A continuacion iremos colocando en esta ventanalos bloques del diagrama, para lo cual hemos de buscarlos en las librerıas de Simulink.Veamos donde se encuentran en este caso.

Para los bloques G(s) y H(s), funciones de transferencia, utilizaremos el elementoTransfer Fcn que se encuentra en la librerıa Continuous de Simulink. Una vez encon-trado el bloque, lo arrastramos con el raton a la ventana de dibujo. Como necesitamos doselementos, repetiremos la misma accion de nuevo. Tambien es posible efectuar una copiadel elemento, sin salir de la pantalla de dibujo, sin mas que arrastrar dicho elemento man-teniendo pulsado el boton derecho del raton. Una vez que hemos colocado los dos bloques,procederemos a ponerles sus datos. Para introducir los datos de G(s) repicaremos con elraton en uno de los iconos Transfer Fcn. Veremos entonces que se abre una ventana,y en ella pondremos, en formato numerico, los datos correspondientes a los polinomiosnumerador y denominador de G(s), es decir los vectores [1, 1] y [1, 0, 4] correspondientes,respectivamente, a dichos polinomios. Del mismo modo, lo que haremos para poner losdatos de H(s) es repicar en su icono e introducir los vectores [2, 1] y [1, 1] en la ventanaque se abra.

Para el bloque con funcion de transferencia K constante se podrıa usar tambien elbloque Transfer Fcn si bien parece mas apropiado el bloque Gain que se encuentra enla librerıa Math Operations de Simulink. Elegido este, lo arrastraremos con el raton ala pantalla del dibujo y, tras un repique en el mismo, pondremos un 5 como valor de laganancia.

El bloque adecuado para poner el punto de suma es Sum y se encuentra en la librerıaMath Operations. La ventana que se abre al repicar en el permite poner dos o massignos + o − y cambiar la orientacion de las flechas de entrada y salida segun que la barravertical este en la posicion izquierda, derecha, o entre los signos + y −.

Para realizar la simulacion hemos de poner como entrada una funcion de tipo es-calon. Esto lo hacemos escogiendo el bloque Step de la librerıa Sources de Simulink. Lo

Page 21: Introducci on a MATLAB - Nelson Caceres

2.2. CREACION Y SIMULACION DE UN MODELO 21

arrastraremos tambien a la ventana de dibujo y, repicando en su icono, pondremos comoparametros los siguientes. Step time = 0, Initial value = 0, Final value = 1.

Y por ultimo, para ver el resultado de la simulacion, necesitamos un elemento en elque se genere el grafico de la respuesta temporal. Lo mas sencillo es colocar el bloqueScope que se encuentra en la librerıa Sinks.

Una vez colocados todos los bloques, utilizando el boton izquierdo del raton, los unire-mos entre sı mediante flechas y acomodaremos su posicion hasta dejarla a nuestro gusto.El resultado puede ser, mas o menos, el siguiente.

s+1

s +42

Transfer FcnSum Step Scope

5

Gain

2s+1

s+1

Transfer Fcn

A veces puede ser conveniente invertir la orientacion de algun bloque para mejorar elaspecto de su conexion. Esto ocurre en este caso con el bloque H(s) en el que las flechasvan hacia atras. El cambio orientacion de un bloque se realiza picando en el mismocon el boton derecho del raton y a continuacion, con el boton izquierdo, en Format →Flip block. De modo similar son tambien posibles otras operaciones, como por ejemploocultar el nombre de un bloque.

Los bloques pueden tener otras opciones que no describimos aquı pero que el usuariopuede ver con facilidad con la ayuda de Matlab, accesible mediante el boton derecho delraton para cada bloque.

Una vez que el modelo ha sido completado, podemos proceder a la simulacion. En laventana del dibujo de Simulink, seleccionamos con el raton en Simulation→ Simulation

parameters. Esto nos permitira escoger los instantes de tiempo inicial y final, el algoritmoy su paso, fijo o variable, ası como algunos otros parametros relacionados con la simulacion.Aparte los tiempos, que pueden variar mucho segun la simulacion de que se trate, losotros valores que Matlab pone por defecto suelen resultar adecuados muchas veces. Comoresultado de la simulacion aparecera en el bloque Scope la grafica de la respuesta temporal.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

t

y(t)

Respuesta temporal

Page 22: Introducci on a MATLAB - Nelson Caceres

22 CAPITULO 2. SIMULINK

2.3 Stateflow

Stateflow es una librerıa (toolbox ) de Matlab que permite modelar sistemas de eventosdiscretos dentro de Simulink, utilizando cartas de estado (statecharts). Las cartas deestado fueron introducidas por David Harel (Harel, 1987) y son una generalizacion de lasmaquinas de estados.

La librerıa de Stateflow posee un unico elemento o bloque, denominado Chart, quesirve para representar un sistema de eventos discretos. El bloque Chart se puede conectarcon otros bloques de Simulink, de tiempo continuo o discreto, para formar modelos desistemas hıbridos que pueden ser muy utiles en la investigacion del comportamiento detales sistemas mediante simulacion.

Una carta de estados (statechart) es un grafico formado por elementos graficos sobrelos que van escritos ciertos elementos de texto escritos en un lenguaje especial. Entreellos, hay unos elementos de texto especiales que son los datos y los eventos. La cartaes como la hoja de papel en la que se representan los elementos. Cada carta representaun sistema de eventos discretos y constituye un bloque de Simulink que puede conectarsecon otras cartas o con otros bloques de Simulink.

2.3.1 Elementos graficos

Los elementos graficos de son

• Estados

• Transiciones

• Uniones

mientras que los elementos de texto son

• Datos

• Eventos

Estados

Los estados tienen forma de rectangulo con los bordes redondeados y representan estados(a veces llamados modos o fases) del sistema de eventos discretos. No debemos confundirestos estados con los estados del clasico modelo de estado de un sistema de control. Losestados aquı considerados representan los modos o formas de evolucion del sistema alreaccionar frente a los eventos.

Junto a la esquina superior izquierda, cada rectangulo lleva un texto con un nombreque identifica al estado. Tras el nombre del estado y el separador opcional “/”, puedenaparecer otros textos indicando las acciones que llevara a cabo el sistema cuando este enese estado. La sintaxis de Stateflow permite especificar el instante en que se iniciara laaccion y la duracion de esta:

entry: la accion se inicia al entrar en este estado.

exit: la accion se inicia al salir de este estado.

Page 23: Introducci on a MATLAB - Nelson Caceres

2.3. STATEFLOW 23

during: la accion se inicia al entrar en este estado y permanece activa durante el tiempoque dura el estado.

on event e : La accion se inicia si, estando en este estado, se produce el evento e.

Posibles acciones son cambiar el valore de una salida o efectuar una llamada a una funcionde Matlab.

S1

S2

e

Figura 2.1: Estados y transicion

Un estado puede contener otros estados, o subestados, dentro de sı. Entonces dichoestado se llama estado padre, o superestado, y los subestados se llaman estados hijos. Haydos posibles formas de descomposicion de un estado (padre) en subestados (hijos). Unestado (padre) tiene descomposicion AND si los estados hijos se activan simultaneamenteal activarse el estado padre y entonces los estados hijos se marcan con lınea discontinua.Un estado (padre) tiene descomposicion OR (exclusiva) si unicamente puede estar activouno de los estados hijos al activarse el estado padre y entonces los estados hijos se marcancon lınea continua.

Transiciones

Las transiciones tienen forma de flecha y representan las transiciones o saltos entre estados,asociados a eventos, que se producen en el sistema de eventos discretos. Cada transicionrepresenta un evento e del sistema y se dibuja como una flecha que va desde el borde deun estado S1 hasta el borde de otro estado S2. Si el sistema esta en el estado S1 y seproduce el evento e, entonces el sistema pasa al estado S2. El disparo de una transicionpuede implicar la ejecucion de una o mas acciones.

Una transicion especial es la llamada transicion por defecto (default-transition), quesirve para senalar el estado inicial del sistema es decir, el primer estado en el que entrara elsistema al iniciar su evolucion, y tambien el estado hijo inicial dentro de un estado padre.Se reconoce por su forma ya que en el extremo opuesto a la flecha lleva un pequeno cırculonegro.

Cada transicion puede tener un texto escrito junto a ella que indica el evento que ha deproducirse para que se dispare la transicion ası como las acciones que entonces el sistemaemprendera. Este texto se divide en tres partes, todas ellas opcionales:

e (en donde e es el nombre de un evento): la transicion se dispara al producirse el eventoe en el sistema. Si no hay nombre de evento entonces la transicion se disparara antecualquier evento del sistema.

Page 24: Introducci on a MATLAB - Nelson Caceres

24 CAPITULO 2. SIMULINK

[c] (en donde c es una condicion): la transicion se dispara si la condicion c (expresionbooleana) es verdadera y se produce el evento e. Si esta parte no existe, se asume quec es cierta. Si la parte e del texto no existe, se disparara, bajo la misma condicion,siempre y cuando se produzca un evento cualquiera en el sistema.

{a} (en donde a es una accion): al producirse transicion el sistema lleva a cabo la acciona.

Si la transicion no lleva ningun texto, entonces se disparara automaticamente, siempre ycuando se produzca un evento cualquiera en el sistema.

Uniones

Las uniones tienen forma de pequeno cırculo. Hay dos tipos de uniones: uniones conectivas(connective junctions) y uniones de historia history junctions.

Las uniones conectivas son puntos de bifurcacion de la carta de estados y representanpuntos de decision del sistema de eventos discretos. Permiten conectar una transicion deentrada con varias transiciones de salida. Su empleo puede a veces simplificar la carta deestados y hacer que el codigo generado sea mas eficiente.

C2

e1

e2

e3

P H

C1

Figura 2.2: Estados, subestados y uniones

Al entrar en una union conectiva, el sistema, a traves de una condicion, selecciona unade las transiciones de salida para su evolucion.

Las uniones de tipo historia se utilizan en estados que han sido divididos por unadescomposicion OR. Si en el estado padre se pone el sımbolo ©H entonces cada vez quese active el estado padre, el primer estado que se activara sera el estado hijo que estuvoactivo por ultima vez.

2.3.2 Elementos de texto especiales

Datos

Una carta tiene asociados ciertos datos a los que puede acceder. Es necesario declararlosen Stateflow y pueden ser de los siguientes tipos:

• Entrada de Simulink

Page 25: Introducci on a MATLAB - Nelson Caceres

2.4. CREACION DE UN MODELO CON STATEFLOW–SIMULINK 25

• Salida de Simulink

• Local

• Constante

• Temporal

• Workspace

Los datos declarados como entrada o salida de Simulink generan automaticamente unaentrada o una salida en el bloque Chart creado por Stateflow en Simulink. Los de lostipos local, constante y temporal pueden definirse para toda la carta o dentro de unestado individual. Los datos temporales son solo validos mientras el estado padre se estaejecutando y son reinicializados cada vez que este se activa. El tipo workspace es unaconstruccion especial que permite utilizar el entorno de trabajo (workspace) de Matlabpara compartir datos a traves de toda la simulacion. Los datos por defecto, se almacenanen memoria en formato double de C pero se puede cambiar a otros formatos. Cada datotiene asociado un valor inicial y un intervalo de posibles valores.

Eventos

Estos elementos representan los eventos del sistema. Pueden ser de los tipos:

• Entrada de Simulink

• Salida de Simulink

• Local

Para los eventos que son entradas o salidas de Simulink, Stateflow crea automaticamenteun unico puerto de entrada–salida de eventos en el bloque Chart de Simulink, de formaque todos los eventos entran o salen, formando un vector de eventos, por el mismo puerto.Cada evento lleva asociado un ındice que refiere la posicion del evento en el vector. Laforma de producir un evento en Simulink para que entre en el bloque Chart es a travesde cambio brusco (flanco) de alguna senal. Al declarar el evento en Stateflow, se puedeelegir entre:

• Flanco de subida

• Flanco de bajada

• Flanco indiferente

2.4 Creacion de un modelo con Stateflow–Simulink

Tras arrancar el programa Matlab, creamos un modelo nuevo (new-model) de Simulink ycolocamos en el mismo, con el raton, el bloque Chart de Stateflow.

Con el editor grafico se pueden crear cartas Stateflow, de modo interactivo, simple-mente picando con el raton en cada elemento y arrastrandolo a la ventana de dibujo.Una vez colocados varios estados, podemos crear transiciones picando con el raton en

Page 26: Introducci on a MATLAB - Nelson Caceres

26 CAPITULO 2. SIMULINK

un estado y arrastrandolo hasta otro estado. Se etiquetan los estados y las transicionesindicando las acciones que van a ocurrir durante la ejecucion y bajo que condiciones seharan las transiciones. Finalmente se anade el historial, uniones, y estados en paralelopara detallar las operaciones del modelo.

Se pueden utilizar sub-cartas (una carta dentro de otra carta) para dotar de jerarquıaal diseno. Se permite crear transiciones entre objetos que residen en diferentes sub-cartasal mismo nivel o a diferentes niveles en la carta superior. Las sub-cartas permiten reduciruna carta complicada a un conjunto de diagramas organizados jerarquicamente. Con ellose consigue que la carta sea mas facil de entender y de mantener sin cambiar para nadasu semantica.

Los pasos a seguir para una aplicacion completa son:

• Crear la carta Stateflow

• Utilizar el Explorer de Stateflow

• Definir un interface de bloques de Stateflow

• Ejecutar la simulacion

• Generar el codigo

La generacion de codigo depende de la maquina en donde se vaya a implementar laaplicacion y no se hace hasta la ultima fase del diseno. El codigo generado por defectoes ANSI C pero existen programas que a partir del modelo de Stateflow generan codigopara otros lenguajes. Entre ellos cabe citar el programa sf2vhld, que es un traductorde Stateflow a VHLD, y el programa sf2plc que genera codigo para programar algunosautomatas programables.

Observaciones

• Si la simulacion va a ser larga se puede adoptar un tiempo de simulacion “infinito”poniendo el parametro de simulacion Stop time = inf.

• Para que se inicie la simulacion el sistema necesita un primer evento, como dearranque. Esto en ocasiones puede resultar molesto porque suele requerir que usua-rio produzca ese evento inicial de forma no muy ortodoxa. Esto puede evitarsemarcando X en la casilla con el texto “Execute (enter) Chart At Initialization” queaparece en el menu File → Chart Properties de la ventana Chart de Stateflow.

2.4.1 Ejemplo

Un sistema de seguridad muy antiguo del ferrocarril son las barreras que se colocanen los cruces entre la vıa ferrea y las carreteras o caminos. Como todos sabemos, elfuncionamiento de una de estas barreras como la de la figura 2.3 es muy sencillo: se abrey se cierra para evitar que los coches choquen con los trenes.

El problema que se plantea es disenar un sistema de control automatico que sea capazde cerrar la barrera cuando se aproxime un tren y de cerrarla cuando el tren haya pasado.Supondremos en principio que la vıa ferrea es de un solo sentido.

Page 27: Introducci on a MATLAB - Nelson Caceres

2.4. CREACION DE UN MODELO CON STATEFLOW–SIMULINK 27

Figura 2.3: Barrera de tren

Estamos ante un sistema de eventos discretos ya que la presencia y la ausencia deltren son eventos que pueden aprovecharse para abrir y cerrar la barrera.

Para medir desplazamientos consideraremos una recta, eje x, dispuesta a lo largo de lavıa y con origen 0 en el punto en que esta colocada la barrera, siendo el sentido positivoel de salida del tren.

Los componentes necesarios para montar el sistema pueden ser: una barrera accionadapor un motor-reductor, dos sensores de presencia s1 y s2, un sistema digital y reles yelementos auxiliares de conexion.

Cada sensor de presencia se instalara junto al raıl de la vıa de tal forma que al pasarel tren emita una senal. Colocaremos el sensor s1 en un punto x1 en el sentido de llegadadel tren y alejado lo suficiente del cruce como para que de tiempo a bajar la barrera. Elsensor s2 sera colocado en otro punto x2 en el sentido de partida del tren, en otro lugarproximo al cruce. De este modo podremos utilizar las senales de los sensores como eventosindicativos de la presencia del tren dentro del intervalo [x1, x2].

La operacion de la barrera debe ser: cuando el sensor s1 se activa, la barrera debecerrarse; cuando el sensor s2 se activa la barrera puede abrirse.

Para realizar el modelo del sistema de control de eventos discretos vamos a emplearlas posibilidades de division en paralelo (paralelismo) y de trasmision de eventos de quedisponen las cartas de estado.

Los interruptores Sw 1 y Sw 2 indicados en la figura 2.4 son elementos de tipo Manual

Switch de Simulink y sirven de modelos de los sensores de llegada y de salida del tren.Una transicion de 0 a 1 del interruptor Sw 1 (flanco de subida) indicara que llega el treny una transicion de 1 a 0 del interruptor Sw 2 (flanco de bajada) indicara que el tren seha ido.

La carta de estados de Stateflow se compone de dos estados que evolucionan en para-lelo, denominados Tren y Barrera, con dos hijos cada uno. El estado Barrera representael estado de la barrera y tiene dos hijos denominados Abrir y Cerrar. El estado Tren

representa el estado del tren y tiene dos hijos denominados Fuera y Dentro.

La carta de estados tiene como entrada (multiplexada) las senales generadas por losinterruptores Sw1 y Sw2. En el estado Tren, un flanco de subida en la entrada de Sw1

es el evento preciso para disparar la transicion s1 mientras que un flanco de bajada laentrada de Sw2 lo es para la s2. A su vez las transiciones s1 y s2 transmiten eventos

Page 28: Introducci on a MATLAB - Nelson Caceres

28 CAPITULO 2. SIMULINK

Sw2

Sw1

0

1

0

1

Chart

Tren 1 Barrera 2

Dentro

Fuera

Cerrar

Abrir

s2/e2 e2s1/e1 e1

Figura 2.4: Diagramas de Simulink y Stateflow

locales al estado Barrera para disparar las transiciones e1 y e2.Supondremos que inicialmente el tren esta lejos y la barrera esta abierta. Por tanto,

los estados iniciales del sistema son Fuera y Abrir.La proximidad de un tren se simula accionando de 0 a 1 el interruptor Sw1. Entonces

el estado Tren cambiara de Fuera a Dentro y antes de que se termine la transicion s1, elevento local e1 sera transmitido. El evento e1 accionara entonces la transicion dentro delestado Barrera de Abrir a Cerrar.

Page 29: Introducci on a MATLAB - Nelson Caceres

Capıtulo 3

Ejercicios de Calculo

3.0.2 Funciones variable compleja

En las aplicaciones de Sistemas Dinamicos y Teorıa de Control aparecen con frecuencialas funciones de variable compleja. Una funcion de variable compleja es una funcion

f : C → C

z 7→ f(z)

Las funciones de variable compleja f(z) no se pueden representar en 3D. Caben dosalternativas. La primera consiste en restringir el dominio de la funcion a una lınea en elplano z, obteniendo otra lınea en el plano f(z). En el siguiente ejemplo, la lınea es el ejeimaginario. (transformacion conforme),

>> z=[-100:.1:100]*j;

>> f=1./(1+z);

>> plot(f);

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

La segunda posibilidad consiste en representar en 3D bien la parte real o bien la parteimaginaria de f(z) (o bien modulo o argumento). En el siguiente ejemplo se representael argumento.

29

Page 30: Introducci on a MATLAB - Nelson Caceres

30 CAPITULO 3. EJERCICIOS DE CALCULO

>> eps = 1e-9

>> [x,y] = meshdom(-1:0.1:1,-1:0.1:1);

>> z=x + j*y

>> f=1./(1+z+eps);

>> mesh(z)

3.0.3 Solucion numerica de ecuaciones

El calculo aproximado de las raıces de la ecuacion f(x) = 0 en un intervalo [a, b] esun problema clasico del analisis numerico. Son sin duda conocidos por el lector algunosalgoritmos como el metodo de las tangentes de Newton, el de la horquilla y el de las cuerdas(o secantes) que lo realizan. Todos ellos realizan iteraciones sucesivas xi → f(xi), i =1, 2, . . ., a partir de un valor xi supuesto de una raız y hasta conseguir que el valor def(xi) sea menor que un numero ε prefijado.

Para resolver este problema con Matlab, disponemos de la funcion fzero. Hay quepasarle un valor inicial de prueba. Por ejemplo,

>> xz1=fzero(’f1’,0)

>> xz0=fzero(’f1’,1)

Aquı, f1 es el nombre del fichero en el que esta definida la funcion.

3.0.4 Integracion numerica

Ahora vamos a integrar numericamente f1(x) en el intervalo [01] utilizando la funcionquad (cuadratura) o quad8

>> I=quad(’f1’,0,1)

>> I=quad8(’f1’,0,1)

El resultado es el mismo.

3.1 Derivacion e integracion

El paquete Symbolic Toolbox de Matlab permite realizar las operaciones de derivacion eintegracion simbolicas.

3.1.1 Derivadas

El comando diff() de Matlab permite calcular derivadas, totales y parciales, de unaexpresion algebraica, funcion de una o varias variables y parametros, respecto de una deellas (o de ellos). Supongamos que nos dan una expresion f(x), por ejemplo el polinomio

f(x) = a3x3 + a2x

2 + a1x + a0

y deseamos hallar sus derivadas respecto de x. Podemos hallar df(x)dx

de dos formas:

Page 31: Introducci on a MATLAB - Nelson Caceres

3.1. DERIVACION E INTEGRACION 31

>> syms a0 a1 a2 a3 x

>> f=a3*x^3+a2*x^2+a1*x+a0

f =

a3*x^3+a2*x^2+a1*x+a0

>> fx=diff(f)

fx =

3*a3*x^2+2*a2*x+a ,

ya que Matlab asume por defecto que la variable independiente es x, o bien especificandola variable respecto a la que queremos derivar,

>> fx=diff(f,x)

fx =

3*a3*x^2+2*a2*x+a1 .

La derivada segunda, d2f(x)dx2 , la obtenemos poniendo

>> f2x=diff(f,x,2)

f2x =

6*a3*x+2*a2

y, del mismo modo, las derivadas sucesivas:

>> f3x=diff(f,x,3)

f3x =

6*a3

>> f4x=diff(f,x,4)

f4x =

0

Ahora bien, si lo que queremos es derivar respecto a un parametro, supongamos que a2,escribiremos

>> fa3=diff(f,a3)

fa3 =

x^3

La operacion de derivacion, como otras, se puede extender a vectores y matrices. Sipedimos la derivada de una matriz A respecto de una variable x, Matlab calcula otramatriz cuyos elementos son las derivadas de los de la matriz A respecto de x.

>> syms x y

>> A=[1, x*y; x^2+y^2,x/y]

A =

[ 1, x*y]

[ x^2+y^2, x/y]

>> diff(A,y)

ans =

[ 0, x]

[2*y, -x/y^2] .

Lo mismo puede hacerse con vectores.

Page 32: Introducci on a MATLAB - Nelson Caceres

32 CAPITULO 3. EJERCICIOS DE CALCULO

3.1.2 Integrales

El comando int() de Matlab permite resolver integrales, tanto indefinidas como definidas.Sea la funcion f(x) = x

ln(x). Para hallar la integral

∫f(x)dx, indefinida, basta con poner

>> syms a b x

>> f=log(x)/x

f =

log(x)/x

>> int(f)

ans =

1/2*log(x)^2 .

y para obtener la expresion de una integral definida, tal como∫ b

af(x)dx, pondremos

>> int(f,a,b)

ans =

1/2*log(b)^2-1/2*log(a)^2

Observar que, en lugar de a y b, tambien habrıamos podido poner dos numeros.

Si la variable de integracion no es x, debemos especificarla:

>> syms u v

>> int(sin(u*v)*cos(u*v),v)

ans =

1/2*sin(u*v)^2/u

Igual que la derivacion, la integracion se puede extender a vectores y matrices.

3.2 Ecuaciones diferenciales

Matlab permite resolver ecuaciones diferenciales de dos formas: numerica y simbolica.

3.3 Resolucion numerica

Matlab dispone de las funciones ode23 y ode45 para resolver ecuaciones diferenciales.Para ello hemos de convertir primero (si es posible) la ecuacion diferencial de orden n enn ecuaciones diferenciales de primer orden (forma normal). Veamos el metodo medianteel ejemplo del pendulo.

Page 33: Introducci on a MATLAB - Nelson Caceres

3.4. RESOLUCION SIMBOLICA 33

β

mg

f (t)

En la figura, f(t) es una fuerza exterior, tangencial, aplicadaal pendulo. La ecuacion diferencial de deduce aplicando lasegunda ley de Newton:

f(t) − mg sin(β) − ma = 0

f(t) − mg sin(β) − mlβ = 0

mlβ + mg sin(β) − f(t) = 0

Haciendo el cambio β = x1, β = x2, queda

{x1 = x2

x2 =f(t) − mg sin x1

l mPara resolver este sistema de ecuaciones de primer grado Matlab exige crear un fichero

de funcion con la definicion de dicho sistema (ecuaciones de estado). Esto lo hacemosescribiendo la ecuacion diferencial en el fichero pendulo.m, con el editor:

function x_prima=pendulo(t,x)

l=1; m=1; g=9.8; % Constantes del pendulo

if t<1 % Fuerza exterior (pulso unico de 1 s)

f=1;

else f=0;

end

x_prima=zeros(2,1); % Ecuaciones de estado

x_prima=[x(2) f-m*g*sin(x(1))/(m*l)];

Salimos del editor, grabando el archivo, y ya podemos obtener soluciones numericas de laecuacion del pendulo:

>> t0=0; tf=5; % Intervalo de integracion

>> x0=[0]; % Condiciones iniciales

>> [t,x]=ode23(’pendulo’,t0,tf,x0);

>> plot(t,x)

3.4 Resolucion simbolica

La orden dsolve permite resolver ecuaciones diferenciales escritas en forma simbolica enMatlab. Esto se hace denotando las derivadas por medio del operador D. Por ejemplo, laecuacion diferencial lineal

a2d2x

dt2+ a1

dx

dt+ a0x = b

Page 34: Introducci on a MATLAB - Nelson Caceres

34 CAPITULO 3. EJERCICIOS DE CALCULO

0 1 2 3 4 5 6 7 8−0.5

0

0.5

1

1.5

2

t

(2*cos(2^(1/2)*t)+sin(2^(1/2)*t)*2^(1/2))/exp(t)

3.4.1 Transformada de Laplace

En los sistemas de control con modelo matematico de funcion de transferencia se presentael problema del calculo de la transformada inversa, de cara a la obtencion de la respuestadel sistema (variable y(t) de salida) dada la variable de entrada x(t). Las variables deentrada y de salida son funciones del tiempo.

X(s) e Y (s) son las transformadas de Laplace de x(t) e y(t) respectivamente. Portanto, dada x(t),

X(s) = L[x(t)]Y (s) = X(s)G(s)

}=⇒ y(t) = L−1[Y (s)]

X(s), Y (s) y G(s) son funciones racionales.

3.4.2 Resolucion numerica

Uno de los metodos mas utilizados para hallar la antitransformada de Laplace de unafuncion racional Y (s) = b(s)

a(s)es expandirla en fracciones simples, de transformada inversa

conocida. Sean p1, p2, . . . , pn las raıces del polinomio a(s), y supongamos que no hayninguna repetida. Entonces, la expansion en fracciones simples es de la forma

Y (s) =b(s)

a(s)=

r1

s − p1

+r1

s − p1

+ . . . +rn

s − pn

+ k(s)

en donde los numeros (en general complejos) r1, . . . , rn se llaman residuos de la funcionY (s) y k(s) es el cociente de la division de b(s) entre a(s), el cual es cero si Y (s) es propia.

Los polos, los residuos, y el termino k(s) pueden hallarse mediante Matlab. Entonces,la transformada inversa es inmediata:

y(t) = r1ep1t + r2e

p2t + . . . + rnepnt + L−1[k(s)]

Page 35: Introducci on a MATLAB - Nelson Caceres

3.4. RESOLUCION SIMBOLICA 35

Como aplicacion, vamos a resolver mediante Matlab el ejercicio de la figura.

b

k

( )

( )tf

t0 x

m

La ecuacion diferencial de este sistema es

mx(t) + bx(t) + kx(t) = f(t)

La transformada de Laplace, con condiciones iniciales nulas, es

ms2X(s) + bsX(s) + kX(s) = F (s)

Si, por ejemplo, f(t) es la funcion escalon unitario, f(t) = u(t), F (s) = 1/s, queda

X(s) =1

ms3 + bs2 + ks

Notese que el termino independiente del polinomio denominador de X(s) es cero.

La resolucion con Matlab, para los valores m = 1, b = 1, k = 1, se puede hacer delsiguiente modo:

>> m=1; b=1; k=1;

>> B=1;

>> A=[m b k 0];

>> [r,p,k]=residue(B,A)

>> t=[0:0.05:15];

>> x=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t);

>> plot(t,x)

Page 36: Introducci on a MATLAB - Nelson Caceres

36 CAPITULO 3. EJERCICIOS DE CALCULO

0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

t

y(t)

Esto mismo se puede hacer de modo aun mas sencillo utilizando la funcion step

(escalon) o la funcion lsim del ToolBox Signals and Systems de Matlab.

3.5 Resolucion simbolica

La librerıa Symbolic Toolbox de Matlab permite hallar, mediante las ordenes laplace

e ilaplace, las transformadas directa e inversa de Laplace. Dada una funcion f(t),denotamos por F (s) su transformada de Laplace. Es decir

L(f(t)) = F (s).

Para hallar la transformada de Laplace F (s) de la funcion f(t) hemos de escribir

>> F = laplace(f)

en donde f es la expresion simbolica de f(t). Por defecto Matlab asume que la variableindependiente de f es t. Para hallar la transformada inversa f(t) de una F (s), pondremos

>> f = ilaplace(F)

en donde f es la expresion simbolica de F (s). Por defecto Matlab asume que la variableindependiente de F es s.

Como ejercicio, vamos a resolver de nuevo el ejemplo mecanico que antes hemos cal-culado numericamente.

>> syms s m b k

>> G = 1/(m*s^2+b*s+k)

>> G1 = subs(G,[m,b,k],[1,1,1])

Page 37: Introducci on a MATLAB - Nelson Caceres

3.5. RESOLUCION SIMBOLICA 37

G1 =

1/(s^2+s+1)

>> Y = symmul(G1,1/s);

>> y = ilaplace(Y);

>> ezplot(y, [0,15]), axis([0, 15, 0, 1.25]), title(’y(t)’)

Con esto, deberıa aparecer en la pantalla una grafica igual que la de antes.

Page 38: Introducci on a MATLAB - Nelson Caceres

38 CAPITULO 3. EJERCICIOS DE CALCULO

Page 39: Introducci on a MATLAB - Nelson Caceres

Capıtulo 4

Ejercicios de Algebra Lineal

4.1 Sistemas de ecuaciones lineales

Supongamos que nos dan las matrices A y b del sistema lineal Ax = b. Para introducirlasen el workspace de Matlab, ponemos

>> A = [1 2 3 4 5; 0 0 0 0 1; 0 0 0 0 1];

>> b = [1 2 3]’

Una vez que hemos introducido las matrices, para ver si el sistema tiene solucion, forma-mos la matriz ampliada Aa,

>> Aa = [A b];

y, calculando los rangos de las matrices A y Aa,

>> rank(A)

ans =

2

>> rank(Aa)

ans =

3

vemos que el sistema es incompatible, no tiene solucion.Consideremos ahora el sistema homogeneo Ax = 0. Sabemos que este siempre tiene

solucion (al menos la trivial) y que el conjunto de soluciones son los vectores del nucleode la matriz A. Para hallar estas soluciones ponemos

>> kerA = nullspace(A)

kerA =

[-2 -3 -4]

[ 1 0 0]

[ 0 1 0]

[ 0 0 1]

[ 0 0 0]

Esta matriz nos da los vectores columna de una base del nucleo de la aplicacion linealasociada a A: z1 = [−2 1 0 0 0]′, z2 = [−3 0 1 0 0]′ y z3 = [−4 0 0 1 0]′. Por tanto, elnucleo de la aplicacion lineal es el conjunto

{z = k1z1 + k2z2 + k3z3 | k1, k2, k3 ∈ C}.

39

Page 40: Introducci on a MATLAB - Nelson Caceres

40 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

4.1.1 Aplicacion a circuitos electricos

Las leyes basicas de la Teorıa de Circuitos son la ley de Ohm,

Z = V I

en donde Z es la impedancia del circuito, V el voltaje aplicado e I la intensidad quecircula por el mismo, y las leyes de Kirchhoff. Para calcular las intensidades y voltajes enlos circuitos electricos se suelen aplicar los conocidos metodos de mallas y nudos. Estosmetodos conducen al planteamiento de un sistema de ecuaciones el cual ha de resolversepara hallar los valores de las intensidades y voltajes del circuito.

Veamos como se resuelve el circuito de la figura, aplicando el metodo de mallas, conMatlab. Dadas las impedancias z1, . . . , z6 y el voltaje v(t) aplicado, se pide hallar lasintensidades de malla i1, i2 e i3.

+

-

3

5

4

6

2

1

2

3

1

Z

Z

Z

Z

Z

Z

i

i

i

v

Las ecuaciones de las tres mallas indicadas en la figura son:

v = (z1 + z2 + z4)i1 − z2i2 − z4i3

0 = −z4i1 − z5i2 + (z4 + z5 + z6)i3 (4.1)

0 = −z2i1 + (z2 + z5 + z3)i2 − z5i3

o, en forma matricial,

v00

=

z1 + z2 + z4 −z2 −z4

−z4 −z5 z4 + z5 + z6

−z2 z2 + z5 + z3 −z5

,

i1i2i3

es decir

V = Z I

en donde V, I ∈ C3 y Z ∈ C

3×3. La solucion del problema consiste en hallar i1, i2 y i3.

Resolucion numerica

La solucion numerica consiste en despejar el vector I de intensidades, una vez que sehan dado valores numericos (complejos) a las impedancias z1, . . . , z6 y al voltaje v. Al

Page 41: Introducci on a MATLAB - Nelson Caceres

4.1. SISTEMAS DE ECUACIONES LINEALES 41

tratarse de un circuito con mallas cerradas y con impedancias no nulas, la matriz Z deimpedancias es siempre no singular y, por tanto, existe la inversa Z−1. Por tanto,

I = Z−1V

Para hacer estos calculos con Matlab, escribiremos en un fichero-m los valores dadosal voltaje y a las impedancias. Por ejemplo, podrıamos poner lo siguiente.

% Ejemplo de circuito

% Datos:

Vef=220; f=50; w=2*pi*f;

R1=1; L1=0.1; C1=100e-6; z1=R1+j*L1*w+1/(i*C1*w)

R2=1; L2=0.03; C2=220e-6; z1=R2+j*L2*w+1/(i*C2*w)

R3=0.25; L3=0.2; C3=100e-6; z1=R3+j*L3*w+1/(i*C3*w)

R4=5; L4=0.1; C4=100e-6; z1=R4+j*L4*w+1/(i*C4*w)

R5=20; L5=0.01; C5=100e-6; z1=R5+j*L5*w+1/(i*C5*w)

R6=25; L6=0.33; C6=100e-6; z1=R6+j*L6*w+1/(i*C6*w)

V = [Vef 0 0]’

Z = [ z_1+z_2+z_4 - z_2 - z_4

-z_4 - z_5 z_4+z_5+z_6

-z_2 z_2+z_5+z_3 - z_5 ];

I = inv(Z)*V

Si el fichero en el que hemos escrito los datos tiene por nombre circuito.m, al ejecutarlomediante la orden

>> circuito

obtendremos el valor del vector de intensidades,

I =

17.9962 +10.1363i

2.1462 - 3.5405i

-0.4702 - 1.3816i

en amperios. Finalmente, podemos hallar el valor eficaz y el angulo de fase de las mismas.

>> Ief = abs(I)

Ief =

20.6545

4.1402

1.4594

>> fase = angle(I)

Ief =

0.5130

-1.0258

-1.8988

Este problema se puede tambien resolver simbolicamente de dos formas. La primera,resolviendo el sistema de ecuaciones (4.1), en forma simbolica, mediante el comando solve

y la segunda, por inversion de la matriz Z de impedancias en forma simbolica.

Page 42: Introducci on a MATLAB - Nelson Caceres

42 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

4.1.2 Aplicacion a los Sistemas de Control

El modelo de estado de un sistema de control viene dado por las ecuaciones

x(t) = Ax(t) + B u(t) (4.2)

y(t) = C x(t) + D u(t)

en donde A ∈ Rn×n, B ∈ R

n×q, C ∈ Rp×n y D ∈ R

p×q.Uno de los problemas que se presentan en las aplicaciones es hallar la solucion del

problema de condiciones iniciales, es decir, la solucion del sistema (4.2) junto con unsistema de condiciones iniciales dadas x(0) = x0 ∈ R

n. La solucion, que se puede hallarpor el metodo de variacion de las constantes (o por otros metodos), viene dada por lasformulas

x(t) = eAtx(0) +

∫ t

0

eA(t−τ)B U(τ) dτ (4.3)

y(t) = Cx(t) + Du(t)

El calculo numerico de estas expresiones esta implementado en la funcion lsim de Matlab.Un sencillo ejemplo nos aclarara sobre su uso. Sea un sistema dinamico lineal definidopor las matrices

A =

[0 2−1 −1

]B =

[01

]

C =[1 1

]D =

[0]

Vamos a calcular la respuesta temporal y(t) cuando la entrada u(t) es una funcion escalonunitario en t = 0 y las condiciones iniciales vienen dadas por el vector x(0) = [00]′. Parahallar la solucion con Matlab, introducimos las cuatro matrices,

>> A = [0 2; -1 -1], B = [0; 1], C = [1 1], D = [0]

y las condiciones iniciales

>> x0 = [0 0]’

Para hallar la solucion numerica hemos de definir un vector t cuyos elementos son losvalores del tiempo en los que queremos a calcular la solucion. Por ejemplo,

>> t = [0: 0.1; 10]’;

Ahora definimos los valores de la entrada u(t),

>> u = ones(size(t));

que en este caso es un vector del mismo tamano que t y cuyos elementos son todos iguala uno. Para obtener la solucion, ponemos

>> y = lsim(A,B,C,D,u,t,x0);

y Matlab nos calcula x(t) e y(t) para los valores de t antes definidos. Para representargraficamente y(t), ponemos

Page 43: Introducci on a MATLAB - Nelson Caceres

4.1. SISTEMAS DE ECUACIONES LINEALES 43

0 1 2 3 4 5 6 7 8 9 100

0.5

1

1.5y(t)

con lo que obtenemos la grafica de la respuesta temporal.Otra forma de obtener la solucion de las ecuaciones de estado es utilizando la trans-

formada de Laplace. Sabemos que la matriz de transferencia tiene dada por la formula

G(s) = C(sIn − A)−1B + D

y que, dadas G(s) y U(s) podemos hallar Y (s) con

Y (s) = G(s)U(s)

en donde U(s) = L(u(t)). Una vez hallada Y (s), la transformada inversa de Laplace nosdara y(t).

y(t) = L−1(Y (s))

Apliquemos este metodo al mismo ejercicio que acabamos de resolver con lsim. Pri-mero definimos la matriz identidad de orden 2.

>> I2 = [1 0; 0 1];

Ahora, para hacer la operacion G(s) = C(sIn − A)−1B + D, escribimos

>> G = C * (s*I2 - A)^(-1) * B + D

G =

(s+2)/(s^2+s+2)

Ahora, para hallar Y (s), ponemos

>> Y = symdiv(G,s)

Y =

(s+2)/(s^2+s+2)/s

y, finalmente,

>> y = ilaplace(Y);

con lo que obtendremos la expresion de y(t). Podemos comprobar con

>> ezplot(y, [0,10]), axis([0, 10, 0, 1.5]), title(’y(t)’)

que obtenemos la misma grafica que antes.

Page 44: Introducci on a MATLAB - Nelson Caceres

44 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

4.2 Comandos mas interesantes

El numero de ordenes y programas disponibles en Matlab es muy elevado y por ello noes posible un listado exhaustivo de todos ellos. En esta seccion se da un resumen, amodo de lista, de los que consideramos mas importantes para las asignaturas del area deAutomatica y Control.

General

help help facilitydemo run demonstrationswho list variables in memorywhat list M-files on disksize row and column dimensionslength vector lengthclear clear workspacecomputer type of computerˆC local abortexit exit MATLABquit same as exit

Matrix Operators Array Operators

+ addition + addition− subtraction − subtraction∗ multiplication .∗ multiplication/ right division ./ right division\ left division .\ left division power . power’ conjugate transpose .’ transpose

Relational and Logical Operators

< less than & and<= less than or equal | or> greater than ∼ not>= greater than or equal== equal∼= not equal

Page 45: Introducci on a MATLAB - Nelson Caceres

4.2. COMANDOS MAS INTERESANTES 45

Special Characters

= assignment statement[ used to form vectors and matrices] see [( arithmetic expression precedence) see (. decimal point... continue statement to next line, separate subscripts and function arguments; end rows, suppress printing% comments: subscripting, vector generation! execute operating system command

Special Values

ans answer when expression not assignedeps floating point precisionpi πi, j

√−1

inf ∞NaN Not-a-Numberclock wall clockdate dateflops floating point operation countnargin number of function input argumentsnargout number of function output arguments

Disk Files

chdir change current directorydelete delete filediary diary of the sessiondir directory of files on diskload load variables from filesave save variables to filetype list function or filewhat show M-files on diskfprintf write to a filepack compact memory via save

Page 46: Introducci on a MATLAB - Nelson Caceres

46 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Special Matrices

compan companiondiag diagonaleye identitygallery esoterichadamard Hadamardhankel Hankelhilb Hilbertinvhilb inverse Hilbertlinspace linearly spaced vectorslogspace logarithmically spaced vectorsmagic magic squaremeshdom domain for mesh pointsones constantpascal Pascalrand random elementstoeplitz Toeplitzvander Vandermondezeros zero

Matrix Manipulation

rot90 rotationfliplr flip matrix left-to-rightflipud flip matrix up-to-downdiag diagonal matricestril lower triangular parttriu upper triangular partreshape reshape.’ transpose: convert matrix to single column; A(:)

Relational and Logical Functions

any logical conditionsall logical conditionsfind find array indices of logical valuesisnan detect NaNsfinite detect infinitiesisempty detect empty matricesisstr detect string variablesstrcmp compare string variables

Page 47: Introducci on a MATLAB - Nelson Caceres

4.2. COMANDOS MAS INTERESANTES 47

Control Flow

if conditionally execute statementselseif used with ifelse used with ifend terminate if, for, whilefor repeat statements a number of timeswhile do whilebreak break out of for and while loopsreturn return from functionspause pause until key pressed

Programming and M-Files

input get numbers from keyboardkeyboard call keyboard as M-fileerror display error messagefunction define functioneval interpret text in variablesfeval evaluate function given by stringecho enable command echoingexist check if variables existcasesen set case sensitivityglobal define global variablesstartup startup M-filegetenv get environment stringmenu select item from menuetime elapsed time

Text and Strings

abs convert string to ASCII valueseval evaluate text macronum2str convert number to stringint2str convert integer to stringsetstr set flag indicating matrix is a stringsprintf convert number to stringisstr detect string variablesstrcomp compare string variableshex2num convert hex string to number

Page 48: Introducci on a MATLAB - Nelson Caceres

48 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Command Window

clc clear command screenhome move cursor homeformat set output display formatdisp display matrix or textfprintf print formatted numberecho enable command echoing

Graph Paper

plot linear X-Y plotloglog loglog X-Y plotsemilogx semi-log X-Y plotsemilogy semi-log X-Y plotpolar polar plotmesh 3-dimensional mesh surfacecontour contour plotmeshdom domain for mesh plotsbar bar chartsstairs stairstep grapherrorbar add error bars

Graph Annotation

title plot titlexlabel x-axis labelylabel y-axis labelgrid draw grid linestext arbitrarily position textgtext mouse-positioned textginput graphics input

Graph Window Control

axis manual axis scalinghold hold plot on screenshg show graph windowclg clear graph windowsubplot split graph window

Graph Window Hardcopy

print send graph to printerprtsc screen dumpmeta graphics metafile

Page 49: Introducci on a MATLAB - Nelson Caceres

4.2. COMANDOS MAS INTERESANTES 49

Elementary Math Functions

abs absolute value or complex magnitudeangle phase anglesqrt square rootreal real partimag imaginary partconj complex conjugateround round to nearest integerfix round toward zerofloor round toward −∞ceil round toward ∞sign signum functionrem remainderexp exponential base elog natural logarithmlog10 log base 10

Trigonometric Functions

sin sinecos cosinetan tangentasin arcsineacos arccosineatan arctangentatan2 four quadrant arctangentsinh hyperbolic sinecosh hyperbolic cosinetanh hyperbolic tangentasinh hyperbolic arcsineacosh hyperbolic arccosineatanh hyperbolic arctangent

Special Functions

bessel bessel functiongamma gamma functionrat rational approximationerf error functioninverf inverse error functionellipk complete elliptic integral of first kindellipj Jacobian elliptic integral

Page 50: Introducci on a MATLAB - Nelson Caceres

50 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Decompositions and Factorizations

balance balanced formbacksub backsubstitutioncdf2rdf convert complex-diagonal to real-diagonalchol Cholesky factorizationeig eigenvalues and eigenvectorshess Hessenberg forminv inverselu factors from Gaussian eliminationnnls nonnegative least squaresnull null spaceorth orthogonalizationpinv pseudoinverseqr orthogonal-triangular decompositionqz QZ algorithmrref reduced row echelon formschur Schur decompositionsvd singular value decomposition

Matrix Conditioning

cond condition number in 2-normnorm 1-norm,2-norm,F-norm,∞-normrank rankrcond condition estimate (reciprocal)

Elementary Matrix Functions

expm matrix exponentiallogm matrix logarithmsqrtm matrix square rootfunm arbitrary matrix functionpoly characteristic polynomialdet determinanttrace tracekron Kronecker tensor product

Page 51: Introducci on a MATLAB - Nelson Caceres

4.2. COMANDOS MAS INTERESANTES 51

Polynomials

poly characteristic polynomialroots polynomial roots—companion matrix methodroots1 polynomial roots—Laguerre’s methodpolyval polynomial evaluationpolyvalm matrix polynomial evaluationconv multiplicationdeconv divisionresidue partial-fraction expansionpolyfit polynomial curve fitting

Column-wise Data Analysis

max maximum valuemin minimum valuemean mean valuemedian median valuestd standard deviationsort sortingsum sum of elementsprod product of elementscumsum cumulative sum of elementscumprod cumulative product of elementsdiff approximate derivativeshist histogramscorrcoef correlation coefficientscov covariance matrixcplxpair reorder into complex pairs

Signal Processing

abs complex magnitudeangle phase angleconv convolutioncorrcoef correlation coefficientscov covariancedeconv deconvolutionfft radix-2 fast Fourier transformfft2 two-dimensional FFTifft inverse fast Fourier transformifft2 inverse 2-D FFTfftshift FFT rearrangement

Numerical Integration

quad numerical function integrationquad8 numerical function integration

Page 52: Introducci on a MATLAB - Nelson Caceres

52 CAPITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Differential Equation Solution

ode23 2nd/3rd order Runge-Kutta methodode45 4th/5th order Runge-Kutta-Fehlberg method

Nonlinear Equations and Optimization

fmin minimum of a function of one variablefmins minimum of a multivariable functionfsolve solution of a system of nonlinear equations

(zeros of a multivariable function)fzero zero of a function of one variable

Interpolation

spline cubic splinetable1 1-D table look-uptable2 2-D table look-up

Page 53: Introducci on a MATLAB - Nelson Caceres

Bibliografıa

Harel, D. (1987). Statecharts: a visual formalism for complex systems. Science of Com-

pueter Programing 8, 231–274.

53