You are on page 1of 53

Introducci on

a
MATLAB
J.M. Gonz alez de Durana
Dpto. de Ingeniera de Sistemas
y Autom atica
EUITI e ITT, UPV-EHU
VITORIA-GASTEIZ
26 de enero de 2004
2
Captulo 1
Los primeros pasos en Matlab
1.1 Caractersticas
Matlab es un paquete de software orientado hacia el c alculo numerico cientco e in-
genieril. Integra c alculo numerico, computaci on de matrices y gr acos en un entorno de
trabajo c omodo para el usuario. Su nombre signica Laboratorio de Matrices y fue escrito
inicialmente en base a los ya existentes paquetes de c alculo matricial LINPACK y EIS-
PACK. Posteriormente se han a nadido libreras, denominadas Toolboxes, especializadas
en diferentes areas cientcas. De entre ellas podemos destacar
Simulink Toolbox
Control System Toolbox
System Identication 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, est a basada en el programa de c alculo simb olico Maple y utiliza una sintaxis
diferente.
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 herramienta
instructora b asica para cursos de matem aticas aplicadas as como para cursos avanzados
en otras areas. En entornos industriales se utiliza para investigar y resolver problemas
pr acticos y c alculos de ingeniera. Son aplicaciones tpicas el c alculo numerico, la realiza-
ci on de algoritmos, la resoluci on de problemas con formulaci on matricial, la estadstica,
la optimizaci on, etc. Es de destacar la aplicaci on en el estudio, simulaci on y dise no de los
sistemas din amicos y de control.
3
4 CAP

ITULO 1. LOS PRIMEROS PASOS EN MATLAB


1.2 Funcionamiento
Matlab es un programa interprete de comandos. Esto quiere decir que es capaz de procesar
de modo secuencial una serie de comandos previamente denidos, obteniendo de forma
inmediata los resultados. Los comandos pueden estar ya denidos en el propio Matlab y
pueden tambien ser denidos por el usuario. Para que Matlab pueda realizar este proceso
el usuario ha de escribir la lista de comandos en la ventana de comandos, si su n umero es
reducido, o en un chero con extensi on .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 de
texto apropiado (archivo.m).
2. Tras la orden de ejecuci on enter (o escribir el nombre del chero), Matlab procesa
la informaci on.
3. Matlab Escribe los resultados en la ventana de comandos y los gr acos (si los hu-
biere) en otras ventanas gr acas.
1.3 Sintaxis
Para escribir las expresiones es preciso respetar ciertas reglas sint acticas propias de Mat-
lab. Algunas se parecen bastante a las de otros lenguajes de programaci on por lo que no
resultan extra nas.
1.3.1 Expresiones algebraicas
Est an formadas por cadenas de caracteres, n umeros y operadores algebraicos. Las cadenas
de caracteres pueden ser smbolos de variables (matrices) o funciones de Matlab. Las
may usculas y min usculas son distintas.
Podemos distinguir dos tipos de expresiones: numericas (propias de Matlab) y simb olicas
(propias de Maple). Una expresi on numerica puede conterner smbolos (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 expresi on simb olica puede contener smbolos sin valor
numerico asignado. Si escribimos
>> syms x
>> p = 2*x^2 - 7;
la segunda expresi on representa un polinomio en la indeterminada x. El valor de p para
x = 1 se puede obtener con
>> subs(p,x,1)
que dar a como resultado: ans = 5.
1.3. SINTAXIS 5
1.3.2 Operadores
Hay operadores para n umeros (reales o complejos) y para matrices.
Para n umeros: + - * / ^
N umeros complejos: Est a denida la unidad imaginaria,

1, que se denota indistinta-


mente por los smbolos i y j
Para matrices: + - * / \ ^
Para matrices elemento por elemento: .+ .- .* ./ .^
Los operadores para n umeros se colocan entre dos n umeros y dan como resultado otro
n umero. Por ejemplo 2 + 3 o a + b, si a y b han sido asignadas previamente a n umeros.
Los operadores para matrices se colocan entre dos matrices y dan como resultado otra
matriz.
Los operadores de relaci on son para n umeros reales, se colocan entre dos n umeros y
dan como resultado 1, que signica cierto, o 0, que signica falso. El signicado de todos
ellos resulta obvio, si bien conviene aclarar que el operador == signica igual, en el sentido
de condici on (por ejemplo a==b puede ser cierto o falso), y es diferente del operador = que
sirve para asignar un valor a una variable (por ejemplo a=3) signica dar a la variable
a el valor de 3. El operador ~= signica distinto, tambien en el sentido de condici on.
Los operadores de condici on se utilizan, sobre todo, en las estructuras de programaci on
if-then-else, for, y while.
Para delimitar las matrices se utilizan los corchetes [ ]. Para separar elementos
consecutivos, el espacio en blanco (barra espaciadora) o la coma , y para pasar de la,
la tecla enter o el punto y coma ; .
La traspuesta conjugada de una matriz de n umeros complejos A se representa por A.
Otros operadores, para usos varios, son
Ayudas al usuario: who, help, ! , save, load
Operaciones l ogicas: & (AND), ! (OR), ~ (NOT)
1.3.3 Funciones elementales
Matlab dispone de las funciones elementales m as comunes (las que tienen las calculado-
ras de bolsillo) y otras especiales, propias. Realizan una operaci on sobre un argumento
numerico dado de tipo matriz y operan elemento por elemento. Las m as usuales son:
Trigonometricas: sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh.
L ogicas: any, all, nd, exist, isnan, nite, isempty, isstr, strcomp.
Otras: abs, angle, sqrt, real, imag, conj, round, x, oor, ceil, sign, rem, exp, log, log10.
Especiales: bessel, gamma, rat, ert, invertf, ellipk, ellipj.
6 CAP

ITULO 1. LOS PRIMEROS PASOS EN MATLAB


1.4 Desarrollo de una sesi on
Los manuales de Matlab explican detalladamente los conceptos, comandos y procedimien-
tos del programa. Aqu vamos realizar una introducci on a su manejo mediante algunos
ejemplos. Es conveniente que los alumnos realicen por su cuenta otros parecidos y traten
de utilizar Matlab para resolver problemas de Matem aticas, Fsica y otras asignaturas.
La instalaci on se realiza autom aticamente con el CD de Matlab. Una vez instalado el
programa, al picar con el rat on 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 lnea aparecen las opciones disponibles.
1.4.1 Comandos de Utilidad
Los comandos demo, help, who, whos, dir, diary y algunos otros, resultan muy utiles
pera el usuario en el desarrollo de la sesi on.
El comando demo nos muestra, de modo interactivo, un amplio abanico de ejemplos
de aplicaci on de Matlab y es de gran ayuda durante nuestros inicios con el programa.
El comando help funci on_deseada muestra en la pantalla un texto explicando c omo
se 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.
1.5. OPERACIONES NUM

ERICAS 7
ROOTS(POLY(1:20)) generates Wilkinsons famous example.
See also ROOTS, POLYVAL.
muestra en la pantalla la ayuda sobre el polinomio caracterstico de una matriz. El uso
de la ayuda es muy conveniente, sobre todo en el perodo de aprendizaje.
Los comandos who y whos dan una lista de las variables que est an actualmente en la
memoria (workspace de Matlab. El comando dir, igual que el de DOS, lista el directorio
actual. El comando diary sirve para que todo lo que vamos tecleando y los resultados
obtenidos (incluidos los errores) se almacene en un archivo. Para ello debemos escribir,
en el instante a partir del cual queremos grabar la sesi on
>> diary dia12
en donde dia12 es el nombre del archivo en el que queremos que se escriba. Para terminar
el proceso de grabaci on hemos de teclear
>> diary off
El uso de la ayuda es muy conveniente, sobre todo en el perodo 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). Observese
que si ponemos ; al nal de la expresi on el resultado no se escribe en la pantalla.
Es capaz de realizar las operaciones aritmeticas suma, resta, multiplicaci on, divisi on y
potenciaci on, con n umeros (reales y complejos), con vectores (polinomios) y con matri-
ces. Adem as, mediante la librera Symbolic Math Toolbox, puede tambien operar con
expresiones simb olicas.
1.5.1 Operaciones aritmeticas
Las operaciones aritmeticas con n umeros son, quiz as, las m as sencillas que pueden efec-
tuarse. Para ilustrar su realizaci on, a continuaci on se muestran una serie de lneas que
comienzan por >>, indicativo (o prompt) de la pantalla de comandos en una sesi on de Ma-
tlab, seguido de una orden y del resultado que aparecera inmediatamente en la pantalla
si 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
8 CAP

ITULO 1. LOS PRIMEROS PASOS EN MATLAB


Si el usuario no ha asignado el resultado a una variable, Matlab lo hace utilizando la
variable ans
N umeros complejos
La forma de operar con n umeros 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 notaci on especial para vectores. Vamos a hacer algunas opera-
ciones sencillas con vectores.
1.5. OPERACIONES NUM

ERICAS 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 la.
Operaciones con polinomios
Los polinomios se representan en Matlab como vectores la. Por ejemplo, el polinomio
3s
3
5s
2
+ 7s + 3 se representa por
>> p=[3 -5 7 3]
Las races de un polinomio se hallan mediante la funci on roots:
>> r=roots(p)
El producto de dos polinomios se realiza a traves de la convoluci on de los vectores de
sus coecientes, mediante la funci on conv. Por ejemplo,
>> p1=[-1 -3 3 4];
>> p2=[1 2 4 0];
>> p=conv(p1,p2);
Para la divisi on se usa la deconvoluci on. Mediante la funci on deconv se obtiene el
cociente q y el resto r de la divisi on.
>> [c,r]=deconv(p,p1);
La funci on polyval sirve para hallar el valor de un polinomio. Si el par ametro que le
pasamos es un vector, calcula otro vector con los valores del polinomio para cada uno de
los del vector.
La funci on polyfit sirve para hacer ajustes polin omicos de una secuencia de datos
dada por dos vectores X e Y. Se puede elegir el grado del polinomio. En el siguiente
ejemplo 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)
10 CAP

ITULO 1. LOS PRIMEROS PASOS EN MATLAB


Citaremos por ultimo la funci on residue que sirve para hallar los residuos de una
funci on racional en los polos de la misma (o coecientes de su expansi on en fracciones
simples), bajo el supuesto de que los polos sean simples. Adem as, dicha funci on calcula
tambien 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 c omo se efect uan algunas de las operaciones m as comunes con matrices:
Introducir una matriz A:
>> A = [1 2 3;4 5 6;7 8 0]
C alculo de la transpuesta:
>> B = A
Producto matricial:
>> C = A * B
Determinante:
>> det(A)
Rango de la matriz:
>> rank(A)
N umero de condici on:
>> cond(A)
Matriz inversa:
>> inv(A)
Valores propios y vectores propios:
>> [val,vec]=eig(A)
Valores singulares:
>> svd(A)
Exponenciaci on matricial (e
A
):
>> expm(A)
Polinomio caracterstico:
>> p = poly(A)
Las races de p, roots(p), deben ser los valores propios de A, eig(A).
1.6. OPERACIONES SIMB

OLICAS 11
1.6 Operaciones simb olicas
La librera Symbolic Math Toolbox da acceso a Matlab a algunas funciones del n ucleo de
Maple que permiten operar con expresiones simb olicas.
1.6.1 Operaciones aritmeticas
En las primeras versiones de la librera Symbolic Math Toolbox era necesario emplear
los comandos especiales symadd, symsub, symmul, symdiv y sympow para las operaciones
de suma, resta, multiplicaci on, divisi on y potenciaci on, respectivamente, de expresiones
simb olicas. Afortunadamente, esto ya no es necesario y se pueden usar para ello los
operadores numericos +, -, +, *, / y ^, siempre y cuando las variables simb olicas se
hayan 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 dem as operaciones simb olicas se efect uan de modo similar.
1.6.2 Sustituci on de variables
La sustituci on de un smbolo por otro en una expresi on simb olica se puede realizar con
la orden subs. La forma de hacerlo es subs(expr, old, new), en donde expr es una
expresi on simb olica, old es el smbolo (o valor) que se desea sustituir y new es el nuevo
smbolo o valor.
Supongamos que en el polinomio f = ax
2
+ bx + c queremos sustituir x por -1. Para
ello, 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 antes
quisieramos sustituir a por 1, b por 2 y c por k, podemos poner
12 CAP

ITULO 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 expresi on simb olica racional suele interesar conocer el numerador y el denominador
de la misma. Para esto tenemos la orden numden. Si, por ejemplo, nos dan la expresi on
h =
x
2
+ 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)
Conversi on de polinomios
Las ordenes poly2sym y sym2poly sirven, respectivamente, para convertir un polinomio
expresado en forma numerica (vector de coecientes) en su expresi on simb olica, y vice-
versa. El siguiente ejemplo ilustrar a su utilizaci on.
>> 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 Gracos
Matlab tiene una buena colecci on de comandos para obtener representaciones gr acas a
partir de datos numericos y tambien algunos para expresiones simb olicas.
1.7. GR

AFICOS 13
1.7.1 Gracos en 2D
En las aplicaciones interesa a veces conocer el valor numerico de una funci on y = f(x)
para uno o varios valores de la variable. En Matlab, dada una funci on y = f(x), denida
en un intervalo [a, b], es posible representarla por un par (x,y) de vectores de n umeros,
tales que el vector x contiene un conjunto nito de valores de x y el vector y contiene el
conjunto de valores im agenes de x por la funci on y, calculados por el propio Matlab. Una
vez representada de este modo la funci on, se puede representar gr acamente.
Por ejemplo, dada la funci on y = 10(1e
x/3
sin(10x)), denida en el intervalo [0, 10],
una posible representaci on en Matlab, seguida de su representaci on gr aca, sera
>> x=[0:0.1:10];
>> y=10*(1-exp(-x/3).*sin(10*x));
>> plot(x,y),title(Gr afica de una funci on)
0 1 2 3 4 5 6 7 8 9 10
0
2
4
6
8
10
12
14
16
18
20
Grfica de una funcin
La gr aca corresponde a una funci on sinusoidal amortiguada m as una constante.
1.7.2 Gracos en 3D
Las funciones de dos variables, de la forma f(x, y) se pueden representar gr acamente
con Matlab en 3D. Para ello es preciso crear un dominio de puntos en forma de malla
rectangular en el plano (x, y), dentro del cual se desea representar la funci on. Esto se
hace con la orden meshgrid (antes meshdom) de Matlab. Ve amoslo con un ejemplo. Sea
la funci on z : R
2
R,
z =

1 x
2
y
2
,
cuyo dominio es el crculo x
2
+ y
2
< 1, y supongamos que queremos calcular los valores
de z en una regi on rectangular del plano (x, y) denida por los puntos (-1.25,-1.25) y
(1.25,1.25), y representarla gr acamente. Para ello escribiremos:
14 CAP

ITULO 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 aparecer a el gr aco.
0
2
4
6
8
10
12
14
0
5
10
15
0
0.2
0.4
0.6
0.8
1
1.8 Ficheros-m
Matlab est a dotado de un mecanismo que le permite interpretar cheros de texto, con
la condici on de que su nombre termine por .m. Se utilizan principalmente para crear
funciones (en el sentido matem atico), programas y funciones ( ordenes) de Matlab.
1.8.1 Funciones-funci on
Mediante cheros-m podemos crear funciones en el sentido matem atico:
f : x f(x)
La denominaci on que da Matlab a estas funciones es funciones-funci on (function func-
tions). Estas funciones permiten realizar integraci on numerica, resolver ecuaciones no
lineales, problemas de optimizaci on y resolver ecuaciones diferenciales. Veamos un par de
ejemplos.
Dentro del editor denimos la funci on 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 chero podemos calcular la funci on en un intervalo y dibujarla.
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
100
Funcin y=f1(x)
Es posible hallar los valores m aximo y mnimo de la funci on en un intervalo:
>> xmin = fmin(f1,0.5,1);
xmin =
0.6370
>> ymin=f1(xmin);
ymin =
11.2528
Otro ejemplo puede ser representar la funci on
f =
1
1
x
+
1
y
utilizada en Optica. Para ello creamos el chero lente.m con la denici on de la funci on.
Escribimos
function z=lente(x,y)
z = 1 ./ (1 ./ x + 1 ./ y);
grabamos el chero, con el nombre lente.m, y ya podemos utilizar la funci on y represen-
tarla gr acamente.
16 CAP

ITULO 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(Funci on lente. f= 1/(1/x + 1/y))
0
10
20
30
40
50
0
10
20
30
40
50
2
1.5
1
0.5
0
0.5
1
1.5
2
Funcin de dos variables
Podemos asimismo hallar el valor mnimo en un intervalo:
>> xmin=fmin(f1,0.5,1)
>> ymin=f1(ymin)
1.8.2 Programaci on
Para evitar teclear repetidamente las mismas funciones, Matlab permite crear un chero
con una lista de comandos que luego, al ser llamado, interpreta secuencialmente. Dispone,
como otros lenguajes de programaci on, de las estructuras if-then-else, while y for. El
archivo en el que se escriben las ordenes de Matlab (programa) ha de tener la extensi on
.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 chero-m podemos colo-
car simplemente una lista de instrucciones de Matlab con lo que al llamarlo se ejecutar an
secuencialmente.
Matlab tiene un lenguaje de programaci on propio, de tipo interprete. Es decir, es
capaz de interpretar una lista de instrucciones contenidas en un chero-m. Igual que
1.8. FICHEROS-M 17
otros lenguajes de programaci on, dispone de las estructuras de programaci on cl asicas:
if-then-else, for, y while.
Estructura if-then-else
La sintaxis de la estructura if-then-else es
if condici on1
orden1a
orden2a
...
...
elseif condici on2
orden1b
orden2b
...
...
else
orden n
end
en donde orden1*, orden2*, . . . , son ordenes y condici on1, condici on2, . . . , estamentos
condicionales 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;
18 CAP

ITULO 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 condici on
orden1a
orden2a
...
...
end
en donde orden1a, orden2a, . . . , son ordenes y condici on es un estamento condicional
o booleano de Matlab. Como ejemplo, podramos poner
n = 0; eps=1;
while 1+eps > 1
eps = eps/2;
n = n+1;
end
Captulo 2
Simulink
2.1 Inicio
Un diagrama de bloques es un modelo gr aco que representa el modelo matem atico de
un determinado sistema din amico. Simulink es una librera (toolbox) de Matlab que
permite representar el diagrama de bloques de un sistema y a continuaci on proceder a su
simulaci on.
El programa se inicia escribiendo simulink en la pantalla de comandos de Matlab o
tambien pulsando con el rat on en el icono coloreado de Simulink que aparece en la ventana
de comandos de Matlab. Con ello se abre una ventana titulada Simulink Library Browser
que contiene la librera Simulink y otras que son, digamos, complementarias. Al pulsar
sobre el signo + que precede a su nombre, aparece una nueva lista y entonces en la
pantalla veremos:
Simulink
Countinous
Discrete
Math Operations
Signal Routing
Sinks
Sources
.
.
.
+ Dials & Gauges Blockset
+ Stateow
.
.
.
Los elementos de la lista de Simulink son los esenciales para construir diagramas de
bloques. El resto son libreras adicionales especializadas areas especcas de control, en
formas avanzadas de simulaci on, etc.
19
20 CAP

ITULO 2. SIMULINK
2.2 Creaci on y simulaci on de un modelo
Para aprender a manejar Simulink comenzaremos realizando el modelo de un sistema de
control 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
s
2
+ 4
, H(s) =
2s + 1
s + 1
y suponiendo que la entrada es una funci on de tipo escal on unitario, queremos realizar la
simulaci on del mismo con Simulink.
La construcci on del modelo es muy sencilla. En primer lugar hemos de abrir una
ventana para hacer el dibujo. Esto se hace picando con el rat on en primer el icono de la
izquierda (hoja en blanco) de la ventana de Simulink o tambien seleccionando con el rat on
File New Model, en la misma. A continuaci on iremos colocando en esta ventana
los bloques del diagrama, para lo cual hemos de buscarlos en las libreras de Simulink.
Veamos d onde se encuentran en este caso.
Para los bloques G(s) y H(s), funciones de transferencia, utilizaremos el elemento
Transfer Fcn que se encuentra en la librera Continuous de Simulink. Una vez encon-
trado el bloque, lo arrastramos con el rat on a la ventana de dibujo. Como necesitamos dos
elementos, repetiremos la misma acci on de nuevo. Tambien es posible efectuar una copia
del elemento, sin salir de la pantalla de dibujo, sin m as que arrastrar dicho elemento man-
teniendo pulsado el bot on derecho del rat on. Una vez que hemos colocado los dos bloques,
procederemos a ponerles sus datos. Para introducir los datos de G(s) repicaremos con el
rat on 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 polinomios
numerador 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 los
datos de H(s) es repicar en su icono e introducir los vectores [2, 1] y [1, 1] en la ventana
que se abra.
Para el bloque con funci on de transferencia K constante se podra usar tambien el
bloque Transfer Fcn si bien parece m as apropiado el bloque Gain que se encuentra en
la librera Math Operations de Simulink. Elegido este, lo arrastraremos con el rat on a
la pantalla del dibujo y, tras un repique en el mismo, pondremos un 5 como valor de la
ganancia.
El bloque adecuado para poner el punto de suma es Sum y se encuentra en la librera
Math Operations. La ventana que se abre al repicar en el permite poner dos o m as
signos + o y cambiar la orientaci on de las echas de entrada y salida seg un que la barra
vertical este en la posici on izquierda, derecha, o entre los signos + y .
Para realizar la simulaci on hemos de poner como entrada una funci on de tipo es-
cal on. Esto lo hacemos escogiendo el bloque Step de la librera Sources de Simulink. Lo
2.2. CREACI

ON Y SIMULACI

ON DE UN MODELO 21
arrastraremos tambien a la ventana de dibujo y, repicando en su icono, pondremos como
par ametros los siguientes. Step time = 0, Initial value = 0, Final value = 1.
Y por ultimo, para ver el resultado de la simulaci on, necesitamos un elemento en el
que se genere el gr aco de la respuesta temporal. Lo m as sencillo es colocar el bloque
Scope que se encuentra en la librera Sinks.
Una vez colocados todos los bloques, utilizando el bot on izquierdo del rat on, los unire-
mos entre s mediante echas y acomodaremos su posici on hasta dejarla a nuestro gusto.
El resultado puede ser, m as o menos, el siguiente.
s+1
s +4
2
Transfer Fcn
Sum
Step Scope
5
Gain
2s+1
s+1
Transfer Fcn
A veces puede ser conveniente invertir la orientaci on de alg un bloque para mejorar el
aspecto de su conexi on. Esto ocurre en este caso con el bloque H(s) en el que las echas
van hacia atr as. El cambio orientaci on de un bloque se realiza picando en el mismo
con el bot on derecho del rat on y a continuaci on, con el bot on izquierdo, en Format
Flip block. De modo similar son tambien posibles otras operaciones, como por ejemplo
ocultar el nombre de un bloque.
Los bloques pueden tener otras opciones que no describimos aqu pero que el usuario
puede ver con facilidad con la ayuda de Matlab, accesible mediante el bot on derecho del
rat on para cada bloque.
Una vez que el modelo ha sido completado, podemos proceder a la simulaci on. En la
ventana del dibujo de Simulink, seleccionamos con el rat on en Simulation Simulation
parameters. Esto nos permitir a escoger los instantes de tiempo inicial y nal, el algoritmo
y su paso, jo o variable, as como algunos otros par ametros relacionados con la simulaci on.
Aparte los tiempos, que pueden variar mucho seg un la simulaci on de que se trate, los
otros valores que Matlab pone por defecto suelen resultar adecuados muchas veces. Como
resultado de la simulaci on aparecer a en el bloque Scope la gr aca de la respuesta temporal.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
t
y
(
t
)
Respuesta temporal
22 CAP

ITULO 2. SIMULINK
2.3 Stateow
Stateow es una librera (toolbox) de Matlab que permite modelar sistemas de eventos
discretos dentro de Simulink, utilizando cartas de estado (statecharts). Las cartas de
estado fueron introducidas por David Harel (Harel, 1987) y son una generalizaci on de las
m aquinas de estados.
La librera de Stateow posee un unico elemento o bloque, denominado Chart, que
sirve para representar un sistema de eventos discretos. El bloque Chart se puede conectar
con otros bloques de Simulink, de tiempo continuo o discreto, para formar modelos de
sistemas hbridos que pueden ser muy utiles en la investigaci on del comportamiento de
tales sistemas mediante simulaci on.
Una carta de estados (statechart) es un gr aco formado por elementos gr acos sobre
los que van escritos ciertos elementos de texto escritos en un lenguaje especial. Entre
ellos, hay unos elementos de texto especiales que son los datos y los eventos. La carta
es como la hoja de papel en la que se representan los elementos. Cada carta representa
un sistema de eventos discretos y constituye un bloque de Simulink que puede conectarse
con otras cartas o con otros bloques de Simulink.
2.3.1 Elementos gracos
Los elementos gr acos de son
Estados
Transiciones
Uniones
mientras que los elementos de texto son
Datos
Eventos
Estados
Los estados tienen forma de rect angulo con los bordes redondeados y representan estados
(a veces llamados modos o fases) del sistema de eventos discretos. No debemos confundir
estos estados con los estados del cl asico modelo de estado de un sistema de control. Los
estados aqu considerados representan los modos o formas de evoluci on del sistema al
reaccionar frente a los eventos.
Junto a la esquina superior izquierda, cada rect angulo lleva un texto con un nombre
que identica al estado. Tras el nombre del estado y el separador opcional /, pueden
aparecer otros textos indicando las acciones que llevar a a cabo el sistema cuando este en
ese estado. La sintaxis de Stateow permite especicar el instante en que se iniciar a la
acci on y la duraci on de esta:
entry: la acci on se inicia al entrar en este estado.
exit: la acci on se inicia al salir de este estado.
2.3. STATEFLOW 23
during: la acci on se inicia al entrar en este estado y permanece activa durante el tiempo
que dura el estado.
on event e : La acci on 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 funci on
de Matlab.
S1
S2
e
Figura 2.1: Estados y transici on
Un estado puede contener otros estados, o subestados, dentro de s. Entonces dicho
estado se llama estado padre, o superestado, y los subestados se llaman estados hijos. Hay
dos posibles formas de descomposici on de un estado (padre) en subestados (hijos). Un
estado (padre) tiene descomposici on AND si los estados hijos se activan simult aneamente
al activarse el estado padre y entonces los estados hijos se marcan con lnea discontinua.
Un estado (padre) tiene descomposici on OR (exclusiva) si unicamente puede estar activo
uno de los estados hijos al activarse el estado padre y entonces los estados hijos se marcan
con lnea continua.
Transiciones
Las transiciones tienen forma de echa y representan las transiciones o saltos entre estados,
asociados a eventos, que se producen en el sistema de eventos discretos. Cada transici on
representa un evento e del sistema y se dibuja como una echa que va desde el borde de
un estado S
1
hasta el borde de otro estado S
2
. Si el sistema est a en el estado S
1
y se
produce el evento e, entonces el sistema pasa al estado S
2
. El disparo de una transici on
puede implicar la ejecuci on de una o m as acciones.
Una transici on especial es la llamada transici on por defecto (default-transition), que
sirve para se nalar el estado inicial del sistema es decir, el primer estado en el que entrar a el
sistema al iniciar su evoluci on, y tambien el estado hijo inicial dentro de un estado padre.
Se reconoce por su forma ya que en el extremo opuesto a la echa lleva un peque no crculo
negro.
Cada transici on puede tener un texto escrito junto a ella que indica el evento que ha de
producirse para que se dispare la transici on as como las acciones que entonces el sistema
emprender a. Este texto se divide en tres partes, todas ellas opcionales:
e (en donde e es el nombre de un evento): la transici on se dispara al producirse el evento
e en el sistema. Si no hay nombre de evento entonces la transici on se disparar a ante
cualquier evento del sistema.
24 CAP

ITULO 2. SIMULINK
[c] (en donde c es una condici on): la transici on se dispara si la condici on c (expresi on
booleana) es verdadera y se produce el evento e. Si esta parte no existe, se asume que
c es cierta. Si la parte e del texto no existe, se disparar a, bajo la misma condici on,
siempre y cuando se produzca un evento cualquiera en el sistema.
{a} (en donde a es una acci on): al producirse transici on el sistema lleva a cabo la acci on
a.
Si la transici on no lleva ning un texto, entonces se disparar a autom aticamente, siempre y
cuando se produzca un evento cualquiera en el sistema.
Uniones
Las uniones tienen forma de peque no crculo. Hay dos tipos de uniones: uniones conectivas
(connective junctions) y uniones de historia history junctions.
Las uniones conectivas son puntos de bifurcaci on de la carta de estados y representan
puntos de decisi on del sistema de eventos discretos. Permiten conectar una transici on de
entrada con varias transiciones de salida. Su empleo puede a veces simplicar la carta de
estados y hacer que el c odigo generado sea m as eciente.
C2
e1
e2
e3
P
H
C1
Figura 2.2: Estados, subestados y uniones
Al entrar en una uni on conectiva, el sistema, a traves de una condici on, selecciona una
de las transiciones de salida para su evoluci on.
Las uniones de tipo historia se utilizan en estados que han sido divididos por una
descomposici on OR. Si en el estado padre se pone el smbolo H entonces cada vez que
se active el estado padre, el primer estado que se activar a ser a el estado hijo que estuvo
activo por ultima vez.
2.3.2 Elementos de texto especiales
Datos
Una carta tiene asociados ciertos datos a los que puede acceder. Es necesario declararlos
en Stateow y pueden ser de los siguientes tipos:
Entrada de Simulink
2.4. CREACI

ON DE UN MODELO CON STATEFLOWSIMULINK 25


Salida de Simulink
Local
Constante
Temporal
Workspace
Los datos declarados como entrada o salida de Simulink generan autom aticamente una
entrada o una salida en el bloque Chart creado por Stateow en Simulink. Los de los
tipos local, constante y temporal pueden denirse para toda la carta o dentro de un
estado individual. Los datos temporales son s olo v alidos mientras el estado padre se est a
ejecutando y son reinicializados cada vez que este se activa. El tipo workspace es una
construcci on especial que permite utilizar el entorno de trabajo (workspace) de Matlab
para compartir datos a traves de toda la simulaci on. Los datos por defecto, se almacenan
en memoria en formato double de C pero se puede cambiar a otros formatos. Cada dato
tiene 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, Stateow crea autom aticamente
un unico puerto de entradasalida de eventos en el bloque Chart de Simulink, de forma
que todos los eventos entran o salen, formando un vector de eventos, por el mismo puerto.
Cada evento lleva asociado un ndice que reere la posici on del evento en el vector. La
forma de producir un evento en Simulink para que entre en el bloque Chart es a traves
de cambio brusco (anco) de alguna se nal. Al declarar el evento en Stateow, se puede
elegir entre:
Flanco de subida
Flanco de bajada
Flanco indiferente
2.4 Creaci on de un modelo con StateowSimulink
Tras arrancar el programa Matlab, creamos un modelo nuevo (new-model ) de Simulink y
colocamos en el mismo, con el rat on, el bloque Chart de Stateow.
Con el editor gr aco se pueden crear cartas Stateow, de modo interactivo, simple-
mente picando con el rat on en cada elemento y arrastr andolo a la ventana de dibujo.
Una vez colocados varios estados, podemos crear transiciones picando con el rat on en
26 CAP

ITULO 2. SIMULINK
un estado y arrastr andolo hasta otro estado. Se etiquetan los estados y las transiciones
indicando las acciones que van a ocurrir durante la ejecuci on y bajo que condiciones se
har an las transiciones. Finalmente se a nade el historial, uniones, y estados en paralelo
para detallar las operaciones del modelo.
Se pueden utilizar sub-cartas (una carta dentro de otra carta) para dotar de jerarqua
al dise no. Se permite crear transiciones entre objetos que residen en diferentes sub-cartas
al mismo nivel o a diferentes niveles en la carta superior. Las sub-cartas permiten reducir
una carta complicada a un conjunto de diagramas organizados jer arquicamente. Con ello
se consigue que la carta sea m as f acil de entender y de mantener sin cambiar para nada
su sem antica.
Los pasos a seguir para una aplicaci on completa son:
Crear la carta Stateow
Utilizar el Explorer de Stateow
Denir un interface de bloques de Stateow
Ejecutar la simulaci on
Generar el c odigo
La generaci on de c odigo depende de la m aquina en donde se vaya a implementar la
aplicaci on y no se hace hasta la ultima fase del dise no. El c odigo generado por defecto
es ANSI C pero existen programas que a partir del modelo de Stateow generan c odigo
para otros lenguajes. Entre ellos cabe citar el programa sf2vhld, que es un traductor
de Stateow a VHLD, y el programa sf2plc que genera c odigo para programar algunos
aut omatas programables.
Observaciones
Si la simulaci on va a ser larga se puede adoptar un tiempo de simulaci on innito
poniendo el par ametro de simulaci on Stop time = inf.
Para que se inicie la simulaci on el sistema necesita un primer evento, como de
arranque. Esto en ocasiones puede resultar molesto porque suele requerir que usua-
rio produzca ese evento inicial de forma no muy ortodoxa. Esto puede evitarse
marcando en la casilla con el texto Execute (enter) Chart At Initialization que
aparece en el men u File Chart Properties de la ventana Chart de Stateow.
2.4.1 Ejemplo
Un sistema de seguridad muy antiguo del ferrocarril son las barreras que se colocan
en los cruces entre la va ferrea y las carreteras o caminos. Como todos sabemos, el
funcionamiento de una de estas barreras como la de la gura 2.3 es muy sencillo: se abre
y se cierra para evitar que los coches choquen con los trenes.
El problema que se plantea es dise nar un sistema de control autom atico que sea capaz
de cerrar la barrera cuando se aproxime un tren y de cerrarla cuando el tren haya pasado.
Supondremos en principio que la va ferrea es de un s olo sentido.
2.4. CREACI

ON DE UN MODELO CON STATEFLOWSIMULINK 27


Figura 2.3: Barrera de tren
Estamos ante un sistema de eventos discretos ya que la presencia y la ausencia del
tren son eventos que pueden aprovecharse para abrir y cerrar la barrera.
Para medir desplazamientos consideraremos una recta, eje x, dispuesta a lo largo de la
va y con origen 0 en el punto en que est a colocada la barrera, siendo el sentido positivo
el de salida del tren.
Los componentes necesarios para montar el sistema pueden ser: una barrera accionada
por un motor-reductor, dos sensores de presencia s
1
y s
2
, un sistema digital y reles y
elementos auxiliares de conexi on.
Cada sensor de presencia se instalar a junto al ral de la va de tal forma que al pasar
el tren emita una se nal. Colocaremos el sensor s
1
en un punto x
1
en el sentido de llegada
del tren y alejado lo suciente del cruce como para que de tiempo a bajar la barrera. El
sensor s
2
ser a colocado en otro punto x
2
en el sentido de partida del tren, en otro lugar
pr oximo al cruce. De este modo podremos utilizar las se nales de los sensores como eventos
indicativos de la presencia del tren dentro del intervalo [x
1
, x
2
].
La operaci on de la barrera debe ser: cuando el sensor s
1
se activa, la barrera debe
cerrarse; cuando el sensor s
2
se activa la barrera puede abrirse.
Para realizar el modelo del sistema de control de eventos discretos vamos a emplear
las posibilidades de divisi on en paralelo (paralelismo) y de trasmisi on de eventos de que
disponen las cartas de estado.
Los interruptores Sw
1
y Sw
2
indicados en la gura 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 transici on de 0 a 1 del interruptor Sw
1
(anco de subida) indicar a que llega el tren
y una transici on de 1 a 0 del interruptor Sw
2
(anco de bajada) indicar a que el tren se
ha ido.
La carta de estados de Stateow se compone de dos estados que evolucionan en para-
lelo, denominados Tren y Barrera, con dos hijos cada uno. El estado Barrera representa
el 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 se nales generadas por los
interruptores Sw
1
y Sw
2
. En el estado Tren, un anco de subida en la entrada de Sw
1
es el evento preciso para disparar la transici on s
1
mientras que un anco de bajada la
entrada de Sw
2
lo es para la s
2
. A su vez las transiciones s
1
y s
2
transmiten eventos
28 CAP

ITULO 2. SIMULINK
Sw2
Sw1
0
1
0
1
Chart
Tren
1
Barrera
2
Dentro
Fuera
Cerrar
Abrir
s2/e2 e2 s1/e1 e1
Figura 2.4: Diagramas de Simulink y Stateow
locales al estado Barrera para disparar las transiciones e
1
y e
2
.
Supondremos que inicialmente el tren est a lejos y la barrera est a 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 Sw
1
. Entonces
el estado Tren cambiar a de Fuera a Dentro y antes de que se termine la transici on s
1
, el
evento local e
1
ser a transmitido. El evento e
1
accionar a entonces la transici on dentro del
estado Barrera de Abrir a Cerrar.
Captulo 3
Ejercicios de Calculo
3.0.2 Funciones variable compleja
En las aplicaciones de Sistemas Din amicos y Teora de Control aparecen con frecuencia
las funciones de variable compleja. Una funci on de variable compleja es una funci on
f : C C
z f(z)
Las funciones de variable compleja f(z) no se pueden representar en 3D. Caben dos
alternativas. La primera consiste en restringir el dominio de la funci on a una lnea en el
plano z, obteniendo otra lnea en el plano f(z). En el siguiente ejemplo, la lnea es el eje
imaginario. (transformaci on 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 parte
imaginaria de f(z) (o bien m odulo o argumento). En el siguiente ejemplo se representa
el argumento.
29
30 CAP

ITULO 3. EJERCICIOS DE C

ALCULO
>> 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 Soluci on numerica de ecuaciones
El c alculo aproximado de las races de la ecuaci on f(x) = 0 en un intervalo [a, b] es
un problema cl asico del an alisis numerico. Son sin duda conocidos por el lector algunos
algoritmos 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 x
i
f(x
i
), i =
1, 2, . . ., a partir de un valor x
i
supuesto de una raz y hasta conseguir que el valor de
f(x
i
) sea menor que un n umero prejado.
Para resolver este problema con Matlab, disponemos de la funci on fzero. Hay que
pasarle un valor inicial de prueba. Por ejemplo,
>> xz1=fzero(f1,0)
>> xz0=fzero(f1,1)
Aqu, f1 es el nombre del chero en el que est a denida la funci on.
3.0.4 Integraci on numerica
Ahora vamos a integrar numericamente f1(x) en el intervalo [01] utilizando la funci on
quad (cuadratura) o quad8
>> I=quad(f1,0,1)
>> I=quad8(f1,0,1)
El resultado es el mismo.
3.1 Derivaci on e integraci on
El paquete Symbolic Toolbox de Matlab permite realizar las operaciones de derivaci on e
integraci on simb olicas.
3.1.1 Derivadas
El comando diff() de Matlab permite calcular derivadas, totales y parciales, de una
expresi on algebraica, funci on de una o varias variables y par ametros, respecto de una de
ellas (o de ellos). Supongamos que nos dan una expresi on f(x), por ejemplo el polinomio
f(x) = a
3
x
3
+ a
2
x
2
+ a
1
x + a
0
y deseamos hallar sus derivadas respecto de x. Podemos hallar
df(x)
dx
de dos formas:
3.1. DERIVACI

ON E INTEGRACI

ON 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 especicando
la variable respecto a la que queremos derivar,
>> fx=diff(f,x)
fx =
3*a3*x^2+2*a2*x+a1 .
La derivada segunda,
d
2
f(x)
dx
2
, 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 par ametro, supongamos que a
2
,
escribiremos
>> fa3=diff(f,a3)
fa3 =
x^3
La operaci on de derivaci on, como otras, se puede extender a vectores y matrices. Si
pedimos la derivada de una matriz A respecto de una variable x, Matlab calcula otra
matriz 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.
32 CAP

ITULO 3. EJERCICIOS DE C

ALCULO
3.1.2 Integrales
El comando int() de Matlab permite resolver integrales, tanto indenidas como denidas.
Sea la funci on f(x) =
x
ln(x)
. Para hallar la integral

f(x)dx, indenida, 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 expresi on de una integral denida, tal como

b
a
f(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 habramos podido poner dos n umeros.
Si la variable de integraci on no es x, debemos especicarla:
>> syms u v
>> int(sin(u*v)*cos(u*v),v)
ans =
1/2*sin(u*v)^2/u
Igual que la derivaci on, la integraci on se puede extender a vectores y matrices.
3.2 Ecuaciones diferenciales
Matlab permite resolver ecuaciones diferenciales de dos formas: numerica y simb olica.
3.3 Resoluci on numerica
Matlab dispone de las funciones ode23 y ode45 para resolver ecuaciones diferenciales.
Para ello hemos de convertir primero (si es posible) la ecuaci on diferencial de orden n en
n ecuaciones diferenciales de primer orden (forma normal). Veamos el metodo mediante
el ejemplo del pendulo.
3.4. RESOLUCI

ON SIMB

OLICA 33

mg
f (t)
En la gura, f(t) es una fuerza exterior, tangencial, aplicada
al pendulo. La ecuaci on diferencial de deduce aplicando la
segunda ley de Newton:
f(t) mg sin() ma = 0
f(t) mg sin() ml

= 0
ml

+ mg sin() f(t) = 0
Haciendo el cambio = x
1
,

= x2, queda

x
1
= x
2
x
2
=
f(t) mg sin x
1
l m
Para resolver este sistema de ecuaciones de primer grado Matlab exige crear un chero
de funci on con la denici on de dicho sistema (ecuaciones de estado). Esto lo hacemos
escribiendo la ecuaci on diferencial en el chero pendulo.m, con el editor:
function x_prima=p endulo(t,x)
l=1; m=1; g=9.8; % Constantes del p endulo
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 la
ecuaci on del pendulo:
>> t0=0; tf=5; % Intervalo de integraci on
>> x0=[0]; % Condiciones iniciales
>> [t,x]=ode23(p endulo,t0,tf,x0);
>> plot(t,x)
3.4 Resoluci on simb olica
La orden dsolve permite resolver ecuaciones diferenciales escritas en forma simb olica en
Matlab. Esto se hace denotando las derivadas por medio del operador D. Por ejemplo, la
ecuaci on diferencial lineal
a
2
d
2
x
dt
2
+ a
1
dx
dt
+ a
0
x = b
34 CAP

ITULO 3. EJERCICIOS DE C

ALCULO
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 matem atico de funci on de transferencia se presenta
el problema del c alculo de la transformada inversa, de cara a la obtenci on de la respuesta
del sistema (variable y(t) de salida) dada la variable de entrada x(t). Las variables de
entrada y de salida son funciones del tiempo.
X(s) e Y (s) son las transformadas de Laplace de x(t) e y(t) respectivamente. Por
tanto, 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 Resoluci on numerica
Uno de los metodos m as utilizados para hallar la antitransformada de Laplace de una
funci on racional Y (s) =
b(s)
a(s)
es expandirla en fracciones simples, de transformada inversa
conocida. Sean p
1
, p
2
, . . . , p
n
las races del polinomio a(s), y supongamos que no hay
ninguna repetida. Entonces, la expansi on en fracciones simples es de la forma
Y (s) =
b(s)
a(s)
=
r
1
s p
1
+
r
1
s p
1
+ . . . +
r
n
s p
n
+ k(s)
en donde los n umeros (en general complejos) r
1
, . . . , r
n
se llaman residuos de la funci on
Y (s) y k(s) es el cociente de la divisi on 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) = r
1
e
p
1
t
+ r
2
e
p
2
t
+ . . . + r
n
e
p
n
t
+L
1
[k(s)]
3.4. RESOLUCI

ON SIMB

OLICA 35
Como aplicaci on, vamos a resolver mediante Matlab el ejercicio de la gura.
b
k
( )
( ) t f
t
0
x
m
La ecuaci on diferencial de este sistema es
m x(t) + b x(t) + kx(t) = f(t)
La transformada de Laplace, con condiciones iniciales nulas, es
ms
2
X(s) + bsX(s) + kX(s) = F(s)
Si, por ejemplo, f(t) es la funci on escal on unitario, f(t) = u(t), F(s) = 1/s, queda
X(s) =
1
ms
3
+ bs
2
+ ks
N otese que el termino independiente del polinomio denominador de X(s) es cero.
La resoluci on con Matlab, para los valores m = 1, b = 1, k = 1, se puede hacer del
siguiente 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)
36 CAP

ITULO 3. EJERCICIOS DE C

ALCULO
0 5 10 15
0
0.2
0.4
0.6
0.8
1
1.2
t
y(t)
Esto mismo se puede hacer de modo a un m as sencillo utilizando la funci on step
(escal on) o la funci on lsim del ToolBox Signals and Systems de Matlab.
3.5 Resoluci on simb olica
La librera Symbolic Toolbox de Matlab permite hallar, mediante las ordenes laplace
e ilaplace, las transformadas directa e inversa de Laplace. Dada una funci on 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 funci on f(t) hemos de escribir
>> F = laplace(f)
en donde f es la expresi on simb olica de f(t). Por defecto Matlab asume que la variable
independiente de f es t. Para hallar la transformada inversa f(t) de una F(s), pondremos
>> f = ilaplace(F)
en donde f es la expresi on simb olica de F(s). Por defecto Matlab asume que la variable
independiente de F es s.
Como ejercicio, vamos a resolver de nuevo el ejemplo mec anico 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])
3.5. RESOLUCI

ON SIMB

OLICA 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, debera aparecer en la pantalla una gr aca igual que la de antes.
38 CAP

ITULO 3. EJERCICIOS DE C

ALCULO
Captulo 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 introducirlas
en 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 soluci on, forma-
mos la matriz ampliada A
a
,
>> 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 soluci on.
Consideremos ahora el sistema homogeneo Ax = 0. Sabemos que este siempre tiene
soluci on (al menos la trivial) y que el conjunto de soluciones son los vectores del n ucleo
de 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 n ucleo de la aplicaci on lineal
asociada a A: z
1
= [2 1 0 0 0]

, z
2
= [3 0 1 0 0]

y z
3
= [4 0 0 1 0]

. Por tanto, el
n ucleo de la aplicaci on lineal es el conjunto
{z = k
1
z
1
+ k
2
z
2
+ k
3
z
3
| k
1
, k
2
, k
3
C}.
39
40 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


4.1.1 Aplicaci on a circuitos electricos
Las leyes b asicas de la Teora 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 que
circula por el mismo, y las leyes de Kirchho. Para calcular las intensidades y voltajes en
los circuitos electricos se suelen aplicar los conocidos metodos de mallas y nudos. Estos
metodos conducen al planteamiento de un sistema de ecuaciones el cual ha de resolverse
para hallar los valores de las intensidades y voltajes del circuito.
Veamos como se resuelve el circuito de la gura, aplicando el metodo de mallas, con
Matlab. Dadas las impedancias z
1
, . . . , z
6
y el voltaje v(t) aplicado, se pide hallar las
intensidades de malla i
1
, i
2
e i
3
.
+
-
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 gura son:
v = (z
1
+ z
2
+ z
4
)i
1
z
2
i
2
z
4
i
3
0 = z
4
i
1
z
5
i
2
+ (z
4
+ z
5
+ z
6
)i
3
(4.1)
0 = z
2
i
1
+ (z
2
+ z
5
+ z
3
)i
2
z
5
i
3
o, en forma matricial,

v
0
0

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
1
i
2
i
3

es decir
V = Z I
en donde V, I C
3
y Z C
33
. La soluci on del problema consiste en hallar i
1
, i
2
y i
3
.
Resoluci on numerica
La soluci on numerica consiste en despejar el vector I de intensidades, una vez que se
han dado valores numericos (complejos) a las impedancias z
1
, . . . , z
6
y al voltaje v. Al
4.1. SISTEMAS DE ECUACIONES LINEALES 41
tratarse de un circuito con mallas cerradas y con impedancias no nulas, la matriz Z de
impedancias es siempre no singular y, por tanto, existe la inversa Z
1
. Por tanto,
I = Z
1
V
Para hacer estos c alculos con Matlab, escribiremos en un chero-m los valores dados
al voltaje y a las impedancias. Por ejemplo, podramos 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 chero en el que hemos escrito los datos tiene por nombre circuito.m, al ejecutarlo
mediante 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 ecaz 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 simb olicamente de dos formas. La primera,
resolviendo el sistema de ecuaciones (4.1), en forma simb olica, mediante el comando solve
y la segunda, por inversi on de la matriz Z de impedancias en forma simb olica.
42 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


4.1.2 Aplicaci on a los Sistemas de Control
El modelo de estado de un sistema de control viene dado por las ecuaciones
x(t) = Ax(t) + Bu(t) (4.2)
y(t) = C x(t) + Du(t)
en donde A R
nn
, B R
nq
, C R
pn
y D R
pq
.
Uno de los problemas que se presentan en las aplicaciones es hallar la soluci on del
problema de condiciones iniciales, es decir, la soluci on del sistema (4.2) junto con un
sistema de condiciones iniciales dadas x(0) = x
0
R
n
. La soluci on, que se puede hallar
por el metodo de variaci on de las constantes (o por otros metodos), viene dada por las
f ormulas
x(t) = e
At
x(0) +

t
0
e
A(t)
BU() d (4.3)
y(t) = Cx(t) + Du(t)
El c alculo numerico de estas expresiones est a implementado en la funci on lsim de Matlab.
Un sencillo ejemplo nos aclarar a sobre su uso. Sea un sistema din amico lineal denido
por las matrices
A =

0 2
1 1

B =

0
1

C =

1 1

D =

Vamos a calcular la respuesta temporal y(t) cuando la entrada u(t) es una funci on escal on
unitario en t = 0 y las condiciones iniciales vienen dadas por el vector x(0) = [00]

. Para
hallar la soluci on 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 soluci on numerica hemos de denir un vector t cuyos elementos son los
valores del tiempo en los que queremos a calcular la soluci on. Por ejemplo,
>> t = [0: 0.1; 10];
Ahora denimos los valores de la entrada u(t),
>> u = ones(size(t));
que en este caso es un vector del mismo tama no que t y cuyos elementos son todos igual
a uno. Para obtener la soluci on, 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 denidos. Para representar
gr acamente y(t), ponemos
4.1. SISTEMAS DE ECUACIONES LINEALES 43
0 1 2 3 4 5 6 7 8 9 10
0
0.5
1
1.5
y(t)
con lo que obtenemos la gr aca de la respuesta temporal.
Otra forma de obtener la soluci on de las ecuaciones de estado es utilizando la trans-
formada de Laplace. Sabemos que la matriz de transferencia tiene dada por la f ormula
G(s) = C(sI
n
A)
1
B + 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 nos
dar a y(t).
y(t) = L
1
(Y (s))
Apliquemos este metodo al mismo ejercicio que acabamos de resolver con lsim. Pri-
mero denimos la matriz identidad de orden 2.
>> I2 = [1 0; 0 1];
Ahora, para hacer la operaci on G(s) = C(sI
n
A)
1
B + 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, nalmente,
>> y = ilaplace(Y);
con lo que obtendremos la expresi on de y(t). Podemos comprobar con
>> ezplot(y, [0,10]), axis([0, 10, 0, 1.5]), title(y(t))
que obtenemos la misma gr aca que antes.
44 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


4.2 Comandos mas interesantes
El n umero de ordenes y programas disponibles en Matlab es muy elevado y por ello no
es posible un listado exhaustivo de todos ellos. En esta secci on se da un resumen, a
modo de lista, de los que consideramos m as importantes para las asignaturas del area de
Autom atica y Control.
General
help help facility
demo run demonstrations
who list variables in memory
what list M-les on disk
size row and column dimensions
length vector length
clear clear workspace
computer type of computer
C local abort
exit exit MATLAB
quit 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
4.2. COMANDOS M

AS 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 assigned
eps oating point precision
pi
i, j

1
inf
NaN Not-a-Number
clock wall clock
date date
ops oating point operation count
nargin number of function input arguments
nargout number of function output arguments
Disk Files
chdir change current directory
delete delete le
diary diary of the session
dir directory of les on disk
load load variables from le
save save variables to le
type list function or le
what show M-les on disk
fprintf write to a le
pack compact memory via save
46 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


Special Matrices
compan companion
diag diagonal
eye identity
gallery esoteric
hadamard Hadamard
hankel Hankel
hilb Hilbert
invhilb inverse Hilbert
linspace linearly spaced vectors
logspace logarithmically spaced vectors
magic magic square
meshdom domain for mesh points
ones constant
pascal Pascal
rand random elements
toeplitz Toeplitz
vander Vandermonde
zeros zero
Matrix Manipulation
rot90 rotation
iplr ip matrix left-to-right
ipud ip matrix up-to-down
diag diagonal matrices
tril lower triangular part
triu upper triangular part
reshape reshape
. transpose
: convert matrix to single column; A(:)
Relational and Logical Functions
any logical conditions
all logical conditions
nd nd array indices of logical values
isnan detect NaNs
nite detect innities
isempty detect empty matrices
isstr detect string variables
strcmp compare string variables
4.2. COMANDOS M

AS INTERESANTES 47
Control Flow
if conditionally execute statements
elseif used with if
else used with if
end terminate if, for, while
for repeat statements a number of times
while do while
break break out of for and while loops
return return from functions
pause pause until key pressed
Programming and M-Files
input get numbers from keyboard
keyboard call keyboard as M-le
error display error message
function dene function
eval interpret text in variables
feval evaluate function given by string
echo enable command echoing
exist check if variables exist
casesen set case sensitivity
global dene global variables
startup startup M-le
getenv get environment string
menu select item from menu
etime elapsed time
Text and Strings
abs convert string to ASCII values
eval evaluate text macro
num2str convert number to string
int2str convert integer to string
setstr set ag indicating matrix is a string
sprintf convert number to string
isstr detect string variables
strcomp compare string variables
hex2num convert hex string to number
48 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


Command Window
clc clear command screen
home move cursor home
format set output display format
disp display matrix or text
fprintf print formatted number
echo enable command echoing
Graph Paper
plot linear X-Y plot
loglog loglog X-Y plot
semilogx semi-log X-Y plot
semilogy semi-log X-Y plot
polar polar plot
mesh 3-dimensional mesh surface
contour contour plot
meshdom domain for mesh plots
bar bar charts
stairs stairstep graph
errorbar add error bars
Graph Annotation
title plot title
xlabel x-axis label
ylabel y-axis label
grid draw grid lines
text arbitrarily position text
gtext mouse-positioned text
ginput graphics input
Graph Window Control
axis manual axis scaling
hold hold plot on screen
shg show graph window
clg clear graph window
subplot split graph window
Graph Window Hardcopy
print send graph to printer
prtsc screen dump
meta graphics metale
4.2. COMANDOS M

AS INTERESANTES 49
Elementary Math Functions
abs absolute value or complex magnitude
angle phase angle
sqrt square root
real real part
imag imaginary part
conj complex conjugate
round round to nearest integer
x round toward zero
oor round toward
ceil round toward
sign signum function
rem remainder
exp exponential base e
log natural logarithm
log10 log base 10
Trigonometric Functions
sin sine
cos cosine
tan tangent
asin arcsine
acos arccosine
atan arctangent
atan2 four quadrant arctangent
sinh hyperbolic sine
cosh hyperbolic cosine
tanh hyperbolic tangent
asinh hyperbolic arcsine
acosh hyperbolic arccosine
atanh hyperbolic arctangent
Special Functions
bessel bessel function
gamma gamma function
rat rational approximation
erf error function
inverf inverse error function
ellipk complete elliptic integral of rst kind
ellipj Jacobian elliptic integral
50 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


Decompositions and Factorizations
balance balanced form
backsub backsubstitution
cdf2rdf convert complex-diagonal to real-diagonal
chol Cholesky factorization
eig eigenvalues and eigenvectors
hess Hessenberg form
inv inverse
lu factors from Gaussian elimination
nnls nonnegative least squares
null null space
orth orthogonalization
pinv pseudoinverse
qr orthogonal-triangular decomposition
qz QZ algorithm
rref reduced row echelon form
schur Schur decomposition
svd singular value decomposition
Matrix Conditioning
cond condition number in 2-norm
norm 1-norm,2-norm,F-norm,-norm
rank rank
rcond condition estimate (reciprocal)
Elementary Matrix Functions
expm matrix exponential
logm matrix logarithm
sqrtm matrix square root
funm arbitrary matrix function
poly characteristic polynomial
det determinant
trace trace
kron Kronecker tensor product
4.2. COMANDOS M

AS INTERESANTES 51
Polynomials
poly characteristic polynomial
roots polynomial rootscompanion matrix method
roots1 polynomial rootsLaguerres method
polyval polynomial evaluation
polyvalm matrix polynomial evaluation
conv multiplication
deconv division
residue partial-fraction expansion
polyt polynomial curve tting
Column-wise Data Analysis
max maximum value
min minimum value
mean mean value
median median value
std standard deviation
sort sorting
sum sum of elements
prod product of elements
cumsum cumulative sum of elements
cumprod cumulative product of elements
di approximate derivatives
hist histograms
corrcoef correlation coecients
cov covariance matrix
cplxpair reorder into complex pairs
Signal Processing
abs complex magnitude
angle phase angle
conv convolution
corrcoef correlation coecients
cov covariance
deconv deconvolution
t radix-2 fast Fourier transform
t2 two-dimensional FFT
it inverse fast Fourier transform
it2 inverse 2-D FFT
tshift FFT rearrangement
Numerical Integration
quad numerical function integration
quad8 numerical function integration
52 CAP

ITULO 4. EJERCICIOS DE ALGEBRA LINEAL


Differential Equation Solution
ode23 2nd/3rd order Runge-Kutta method
ode45 4th/5th order Runge-Kutta-Fehlberg method
Nonlinear Equations and Optimization
fmin minimum of a function of one variable
fmins minimum of a multivariable function
fsolve solution of a system of nonlinear equations
(zeros of a multivariable function)
fzero zero of a function of one variable
Interpolation
spline cubic spline
table1 1-D table look-up
table2 2-D table look-up
Bibliografa
Harel, D. (1987). Statecharts: a visual formalism for complex systems. Science of Com-
pueter Programing 8, 231274.
53

You might also like