Vous êtes sur la page 1sur 112

www.fullengineeringbook.

net
www.fullengineeringbook.net
INTRODUCCIN RPIDA
A MATLAB Y SIMULINK
PARA CIENCIA E INGENIERA
www.fullengineeringbook.net
www.fullengineeringbook.net
MANUEL GIL RODRGUEZ
Cientfico Titular del Consejo Superior
de Investigaciones Cientficas (CSIC)

INTRODUCCIN RPIDA
A MATLAB Y SIMULINK
PARA CIENCIA E INGENIERA
www.fullengineeringbook.net
Manuel Gil Rodrguez, 2003

www.fullengineeringbook.net
Reservados todos los derechos.

No est permitida la reproduccin total o parcial de este libro,


ni su tratamiento informtico, ni la transmisin de ninguna
forma o por cualquier medio, ya sea electrnico, mecnico,
por fotocopia, por registro u otros mtodos, sin el permiso
previo y por escrito de los titulares del Copyright.

Ediciones Daz de Santos, S. A.


Doa Juana I de Castilla, 22.
28027 MADRID

E-mail: ediciones@diazdesantos.es
Internet://http:www.diazdesantos.es/ediciones

ISBN: 84-7978-596-9
Depsito legal: M. 43.971-2003

Diseo de cubierta: Angel Calvete


Fotocomposicin e impresin: Fernndez Ciudad, S. L.
Encuadernacin: Rstica-Hilo, S. L.
Impreso en Espaa
ndice

Presentacin ........................................................................................... XI

1. PRIMEROS PASOS EN MATLAB ................................................ 1


www.fullengineeringbook.net
1.1. Introduccin ...........................................................................
1.2. Comenzando ..........................................................................
1
1
1.3. Espacio de trabajo .................................................................. 2
1.4. Variables ................................................................................ 3
1.5. Formato de nmeros .............................................................. 5
1.6. Programas ............................................................................... 7
1.7. Funciones ............................................................................... 8
1.7.1. Reglas de construccin de funciones .......................... 9
1.7.2. Funciones en lnea ...................................................... 11
1.7.3. Ejemplo de funcin recursiva ..................................... 11
1.8. Nmeros complejos ............................................................... 12
1.9. Manejo de vectores y matrices ............................................... 13
1.10. Polinomios .............................................................................. 16
1.10.1. Multiplicacin y divisin de polinomios .................. 16
1.10.2. Desarrollo en fracciones simples .............................. 17
1.10.3. Derivadas de polinomios .......................................... 17
1.10.4. Integracin de polinomios ........................................ 18
1.10.5. Interpolacin polinomial............................................ 18
1.11. matlabpath .............................................................................. 19
1.12. lookfor..................................................................................... 19
1.13. LATEX ................................................................................... 19
1.14. Funciones del tiempo ............................................................. 20
1.15. Intercambio de datos .............................................................. 21

VII
VIII NDICE

2. CLCULO SIMBLICO ............................................................... 25


2.1. Introduccin ........................................................................... 25
2.2. Objetos y expresiones simblicas .......................................... 25
2.3. Ejemplos de clculo simblico .............................................. 27
2.3.1. Derivadas e integrales ................................................. 27
2.3.2. Sistemas de ecuaciones ............................................... 28
2.3.3. Ecuaciones diferenciales.............................................. 29
2.4. Transformacin de Laplace e inversa .................................... 30
2.5. Lmites ................................................................................... 31
2.6. Series de Taylor y Mac Laurin .............................................. 31
2.7. Invocando a Maple V.............................................................. 31
2.7.1. Transformacin de Laplace e inversa con Maple V .... 31
2.7.2. Resolucin de ecuaciones diferenciales con Maple V. 32
2.7.3. Resolucin de ecuaciones diferenciales con la trans-
formacin de Laplace .................................................. 33

3. SENTENCIAS DE CONTROL DE FLUJO ................................... 35


3.1. input ....................................................................................... 35
3.2. if - else - end .......................................................................... 36
3.3. while - end ............................................................................. 38
3.4. for - end .................................................................................. 38
www.fullengineeringbook.net
3.5. continue ..................................................................................
3.6. break .......................................................................................
40
40
3.7. switch end ............................................................................... 40

4. GRFICOS EN MATLAB ............................................................. 41


4.1. Tipos de grficos .................................................................... 41
4.2. Utilidades de grficos ............................................................ 44
4.3. TEXtos en grficos ................................................................ 45
4.4. LaPrint ................................................................................... 45
4.5. Estilos de lneas, marcas y colores ......................................... 47
4.6. area ......................................................................................... 48

5. APLICACIONES DE CLCULO NUMRICO............................. 51


5.1. Integracin numrica ............................................................. 51
5.2. Mnimos, ceros y optimizacin............................................... 51
5.2.1. Mnimos y ceros de funciones .................................... 51
5.2.2. Resolucin de ecuaciones no lineales ......................... 52
5.2.3. Minimizacin y ajuste de datos .................................. 53
5.3. Integracin numrica de ecuaciones diferenciales ................. 57
5.3.1. Mtodo de Runge-Kuta ............................................... 59
5.4. Modelo dinmico de un tanque .............................................. 62
5.5. Determinacin de retrasos y derivadas .................................. 67
5.6. Ajuste de datos experimentales a una recta ........................... 72
NDICE IX

5.6.1. Ajuste de funciones no lneales por linealizacin ....... 74


5.7. Anlis Espectral ..................................................................... 78
5.8. Evitando la divisin por cero y rebose ................................... 80

6. SIMULINK ...................................................................................... 81
6.1. Introduccin a Simulink ......................................................... 81
6.2. Construccin de un modelo muy sencillo .............................. 85
6.3. Solucin Simulink de una ecuacin diferencial ..................... 86
6.4. Simulacin dinmica de un ecualizador ................................ 88

BIBLIOGRAFA ..................................................................................... 93

NDICE ALFABTICO .......................................................................... 95

www.fullengineeringbook.net
www.fullengineeringbook.net
Presentacin

MatLab (MATrix LABoratory) comenz siendo un programa interactivo de


anlisis integrado, especializado en clculos matriciales. En muy poco tiempo
tuvo una gran difusin, facilitado por su potencia de clculo y facilidad de uso.
La primera versin de MatLab, de xito generalizado, se lanz el 3 de fe-
www.fullengineeringbook.net
brero de 1989 para MS-DOS, Mac y Workstations, era la versin 3.5 y vena en
tres discos de 5 1/4, estaban disponibles las toolboxes de Signal Processing,
Control Systems, System Identification, State-Space Identification, Robust-
Control, Spline, Chemometrics y Optim.
MatLab incluye funciones elementales de clculo, de Bessel, de complejos,
transformadas e inversas de Laplace y Fourier, filtros para procesado de sea-
les, Max, Min, Sum, Product, Cumulative, Cumulative Product, Mean, Median,
Sort... Las funciones matriciales incluyen el determinante, el inverso, valores y
vectores propios, descomposiciones, factorizaciones...
Desde las primeras versiones, MatLab dispona de potentes herramientas de
representaciones grficas, ya en 2-d como 3-d, que en el transcurso de las su-
cesivas versiones se vieron muy potenciadas, permitiendo exportar los cuadros
grficos a otras aplicaciones.
Esta obra abarca lo esencial de MatLab y Simulink, que ya no cambian con
las versiones que van saliendo. Est especialmente indicada para alumnos de
Ciencias, Ingeniera, Postgrado o profesionales que deseen familiarizarse, en un
tiempo mnimo con las principales herramientas de clculo suministradas por
MatLab a travs de ejercicios prcticos a lo largo de este manual.

Manuel GIL RODRGUEZ

XI
www.fullengineeringbook.net
1
Primeros pasos en MatLab

1.1. INTRODUCCIN

MatLab, desde las primeras versiones dispuso de help y demo, para ini-
ciacin rpida. La informacin suministrada a travs de los mens de estas ayu-
www.fullengineeringbook.net
das, correspondientes a las ltimas versiones, crecieron de forma exponen-
cial, siendo de utilidad prctica disponer de un libro resumen de MatLab, en
donde se encuentren los comandos de uso ms frecuente, a la vez que se mues-
tren sus aplicaciones prcticas en ejercicios, desde lo ms sencillo, hasta otros
de mayor complejidad.
Este Captulo es adecuado para principiantes absolutos, y de afianzamiento
a los ya iniciados.

1.2. COMENZANDO
Al arrancar MatLab, presenta una pantalla dividida en varias ventanas,
configurables desde Desktop Layout del menu de View; en una de las ven-
tanas estar el cursor parpadeando a la derecha de >>, es la ventana de co-
mandos desde donde se ejecutan los mismos, las otras son informativas:

>> 3 + 4
ans =
7
>> 3*5
ans =
15
>> 15/3
ans =
5

1
2 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

>> 15\3
ans =
0.2000
>> 23
ans =
8
>> sin(2*pi*30/360)
ans =
0.5000

www.fullengineeringbook.net

Figura 1.1. Ventanas de MatLab.

1.3. ESPACIO DE TRABAJO


Los datos y variables usadas residen en el espacio de trabajo, workspace,
accesible desde la ventana de comandos. Para inspeccionar el contenido de este
espacio se utilizan los comandos who y whos.
Los archivos directamente accesibles desde el espacio de trabajo, se mues-
tran mediante what. En el siguiente ejemplo se muestran sus caractersticas:

>> t = linspace(1,10,4) % Crea un vector de 4 elementos desde


% 1 a 10.
t =
1 4 7 10
PRIMEROS PASOS EN MATLAB 3

>> t = t(:) % Crear el vector t en columna.


t =
1
4
7
10

>> A = 2*t; B = 2;
>> who

Your variables are:

t A B

>> whos

Name Size Bytes Class


t 1 4 32 double array
A 1 4 32 double array
B 1 l 8 double array

Grand total is 9 elements using 72 bytes

>> what

M-files in the current directory D:\MatLab\work

www.fullengineeringbook.net
AjusNL
AjusN1Fun
Datos
Ecudif
EcudifP
Fun
MAT-files in the current directory D:\MatLab\work
Datos
MDL-files in the current directory D:\MatLab\work
Bcont Bfuntab BnoLineal Bsesis
Bfuentes Bmat Bsalidas Ecu2

En el espacio de trabajo se crearon 3 variables, 2 de 4 elemenos, y una de 1


elemento, de modo que son 9 elementos a 8 bytes por elemento, lo que hace un
total de 72 bytes.
A partir de la versin 6, release 12, MatLab incorpor workspace, po-
tenciando la capacidad de whos.

1.4. VARIABLES
En MatLab no es necesario hacer declaraciones previas acerca de las va-
riables. El contenido de las variables de caracteres ha de ir delimitado por el
signo '.
>> numero_de_visitantes = 25

numero_de_visitantes =

25
4 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

De ese modo se crean variables numricas, numero_de_visitantes,


que almacenan su valores en una matriz, en este caso la matriz es de 1 1, y su
valor es 25.

size(numero_de_visitantes) % Dimensin de variables.

ans =

1 1

Nombre='Pepe'; % Variable de caracteres.


size (Nombre)

ans =

1 4

Los nombres de las variables deben seguir estas reglas:

1. Se forman con las letras del abecedario, los dgitos 0 a 9 y el signo _,


distinguindose maysculas de minsculas.
2. Los nombres de las variables han de comenzar por una letra y no deben
contener espacios en blanco.
www.fullengineeringbook.net
3. Los nombres de las variables no pueden coincidir con los nombres de las
keywords, nombres reservados.

La lista de los nombres reservados se obtiene por medio de iskeyword:

iskeyword

ans =

'break'
'case'
'catch'
'continue'
'else'
'elseif'
'end'
'for'
'function'
'global'
'if'
'otherwise'
'persistent'
'return'
'swirch'
'try'
'while'
PRIMEROS PASOS EN MATLAB 5

>> if = 5
??? if = 5

Error: Expected a variable, function, or constant, found=.

Los nombres de las variables pueden ser tan extensos como se quiera, pero
MatLab slo reconoce los 31 primeros caracteres.
Las variables se eliminan del espacio de trabajo con el comando clear:

clear Elimina las variables del espacio de trabajo.


clear variables Es equivalente al comando anterior.
clear global Elimina las variables globales.
clear functions Elimina todas las funciones compiladas.
clear all Elimina todas las variables, globales y funciones.
clear pipo* Elimina las variables que empiezan por pipo.

MatLab suministra amplia informacin adicional mediante help clear.

1.5. FORMATO DE NMEROS

MatLab presenta los resultados numricos en varios formatos, segn se ex-


presa a continuacin:
www.fullengineeringbook.net
>> help format

FORMAT Set output format.


All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT Default. Same as SHORT.
FORMAT SHORT Scaled fixed point format with 5 digits.
FORMAT LONG Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point for-
mat with 5 digits.
FORMAT LONG G Best of fixed or floating point format
with 15 digits.
FORMAT HEX Hexadecimal format.
FORMAT + The symbols +, and blank are printed
for
positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK Fixed format for dollars and cents.
FORMAT RAT Approximation by ratio of small integers.

Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE Puts the extra line-feeds back in.
6 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Al mostrar resultados numricos, MatLab sigue estas dos reglas:

1. MatLab intenta mostrar nmeros enteros. Si el entero es muy grande, se


presenta en formato exponencial, con 5 cifras significativas.
2. Los nmeros con decimales se muestran con 4 o 5 cifras significativas.
Los nmeros en valor absoluto menores de 0,01 y mayores de 1.000, se
muestran en formato exponencial.

A continuacin se muestran ejemplos demostrativos de formatos numri-


cos:
>> sqrt(2)

ans =

1.4142

>> format long


>> sqrt(2)

ans =

1.41421356237310

www.fullengineeringbook.net
>> format Long e
>> sqrt (2)

ans =

1.41421356237310e+00

>> format short


>> A= [10000 0.0001]

ans =

1. 0e+04 *
1.0000 0.0000

>> format short g


>> A

A =

10000 0.0001
>> format rat
>> A

A =

10000 1/10000
PRIMEROS PASOS EN MATLAB 7

1.6. PROGRAMAS

MatLab acepta comandos directos, para inmediatamente producir el resul-


tado o ejecutar una serie de comandos almacenados en un archivo, con la ex-
tensin .m.
Un archivo.m, consiste en una secuencia de sentencias MatLab, posible-
mente incluyendo referencias a otros archivo.m, o recursivamente a s mismo.
A estos archivos los llamamos programas MatLab, en ingls scripts. Las va-
riables de los programas se mantienen en el espacio de trabajo, pudiendo ser in-
vocadas en cualquier momento para ver su contenido.
En una sentencia, lo que sigue a % no se ejecuta, se considera un comenta-
rio.
Si se desea construir una tabla con inversos, cuadrados y races cuadradas
de 1 a 10, se edita un archivo, Numeros.m, con cualquier editor, tal como
el bloc de notas del sistema operativo, o con el editor propio de MatLab, se-
gn:
% ----------------Numeros.m -----------------------------------
x=1:10; % Crea un vector de 1 a 10 de 1 en 1. Vector en l-
nea.
x=x'; % Transposicin. Vector en columna.
x=[x,1../x,x.2,sqrt(x)]; % Matriz de 4 columnas.
www.fullengineeringbook.net
% ------------------------------------------------------------

El programa se invoca ejecutando Numeros. Como en el programa todas


las sentencias se finalizaron con ;, no se muestra ningn valor numrico. Al
ejecutar x, se obtendr la tabla desada:
>> Numeros
>> x

x =

1.0000 1.0000 1.0000 1.0000


2.0000 0.5000 4.0000 1.4142
3.0000 0.3333 9.0000 1.7321
4.0000 0.2500 16.0000 2.0000
5.0000 0.2000 25.0000 2.2361
6.0000 0.1667 36.0000 2.4495
7.0000 0.1429 49.0000 2.6458
8.0000 0.1250 64.0000 2.8284
9.0000 0.1111 81.0000 3.0000
10.0000 0.1000 100.0000 3.1623

Pulsando la tecla , se consiguen las lneas de los comandos previamente


ejecutadas.
8 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1.7. FUNCIONES

El otro tipo de archivos utilizado por MatLab son las funciones, cuya pri-
mera caracterstica es que sus variables son locales en su entorno y no definidas
en el espacio de trabajo, ni en otras funciones.
Buena parte de la potencia de MatLab se basa en su extenso conjunto de
funciones, las bsicas y las distribuidas de forma separada para aplicaciones es-
pecficas, MatLab toolboxes, y otras que desarrollan los usuarios.
Las funciones toman unas variables de entrada para calcular unos datos de
salida, sea:
1 1
Fun( x ) = + 5
( x 1) + 0,1 ( x 3)2 + 0, 2
2

almacenado en el archivo Fun.m, cuyo contenido es:


function y=Fun(x)
% -----------------Fun.m --------------
% Esto es un ejemplo
% de una funcin.
y=1../((x1).2+0.1)+1../((x3).2+0.2)5;
%-------------------------------------

www.fullengineeringbook.net
Para evaluar Fun grficamente, se lanza con las siguientes instrucciones:
>> x=2:0.01:6; % Vector de 2 a 6, a incrementos de 0,01.
>> y=Fun(x); % Guardando el vector Fun(x) en y.
>> plot(x,y),grid % Representacin con rejilla.

En Fun(x), x es el argumento o entrada de Fun, para dar unos resultados


de salida que se almacenan en y, que se muestran grficamente.
Hay funciones del sistema o construidas por un usuario, que toman diferen-
te nmero de argumentos de entrada que de salida. As la funcin max, toma un
vector de argumentos y puede suministrar una o dos salidas, segn se use:
>> A = [1 2 1 5 2 3];
>> max(A) % Suministrar el valor mximo de A.
ans =
5
>> [X, i] = max(A) % X, valor mximo, i posicin del mximo.
X =
5
i =
4
PRIMEROS PASOS EN MATLAB 9

6
2 1 0 1 2 3 4 5 6

Figura 1.2. Representacin grfica de Fun.

www.fullengineeringbook.net
1.7.1. Reglas de construccin de funciones

1. El nombre de la funcin y del archivo deben ser idnticos.


2. Los nombres de las funciones se rigen por las normas de los nombres de
las variables.
3. La primera lnea ejecutable de una funcin debe ser la lnea de declara-
cin de funcin.
4. Las variables del interior de las funciones son variables locales.
5. El conjunto de lneas consecutivas de comentarios que siguen a func-
tion, componen el texto de ayuda de esa funcin, obtenible median-
te help y lookfor.

>> help Fun


----------------Fun.m -------------
Esto es un ejemplo
de una funcin.

6. Una funcin termina al encontrar un retun o al llegar a la ltima lnea


de la funcin.
7. Si una funcin llama a un programa, ste es evaluado en el espacio de
trabajo de la funcin y no en el workspace de MatLab.
8. Cada funcin tiene su espacio de trabajo separado del de MatLab, de
modo que la conexin entre estos ambientes se realiza a travs de las va-
riables de entrada y salida de la funcin.
10 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

9. Para compartir variables del interior de las funciones y del espacio de


trabajo, se declaran variables globales donde se necesiten mediante la
instruccin global.
>> global X a b % Declaracin de variables globales

Para facilitar el manejo de funciones, MatLab incorpor recientemente @, y


feval, para mejorar eval, cuya utilidad se expone en el siguiente ejemplo:
>> F = @Fun % Creacin directa de F.

F =
@Fun
>> feval(F,2)
ans =
-3.2576

Se consigue el mismo resultado con:


>> eval('Fun(2)')
ans =

www.fullengineeringbook.net
-3.2576
>> Fun(2)
ans =
-3.2576
>> F(2)=@cos % Creacin directa de F(2).

F =

@Fun @cos

La eficiencia de feval es considerablemente superior a eval, ya que el


primero evala directamente lo que se invoca, mientras que eval llama al in-
terpretador completo de MatLab. La diferencia en tiempo de ejecucin de am-
bas funciones se pone de manifiesto con:
>> tic, for i = 1:100000, a = eval('Fun(i)'); end, toc
elapsed_time =
14.3210
>> tic, for i = 1:100000, a = feval('Fun',i); end, toc
elapsed_time =
4.0960
PRIMEROS PASOS EN MATLAB 11

1.7.2. Funciones en lnea


Un segundo modo de definir funciones, sin editar archivos, se logra con
inline:
>> syms x y
>> f = inline('x.2 + y.2')
f =
Inline function:
f(x) = x.2 + y.2
>> f(3,4)
ans =
25
>> feval(f,3,4)

ans =
25

1.7.3. Ejemplo de funcin recursiva


En muchas aplicaciones se presenta la recursividad, funcin que en su in-
www.fullengineeringbook.net
terior se llama a s misma. El ejemplo ms secillo de recursividad es el clculo
del factorial de un nmero:
N! = N (N 1)!
definiendo 1! como 1.
La funcin Factorial.m, toma un nmero de entrada, y suministra como sa-
lida su factorial:
function f = Factorial(N)
% Esta funcin calcula el factorial de la parte
% entera de un nmero.
n = fix(N); % n toma la parte entera de N.
if n > 1
f = n*Factorial(n 1);
else
f = 1;
end

Esta sencilla funcin toma un nmero y calcula el factorial de su parte


entera.
>> Factorial(3.3)
ans =
6
12 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1.8. NMEROS COMPLEJOS

MatLab admite operaciones con nmeros complejos, permitiendo usar in-


distintamente la i y la j, segn se muestra en lo siguiente:
>> a = sqrt(1)

a =

0 + 1. 0000i

>> conj(a)

ans =

0 1.0000i

>> sqrt(a)

ans =

0.7071 +0.7071i

>> exp(2i)

www.fullengineeringbook.net
ans =

-0.4161 + 0.9093i

>> A = (3 + 4i)*(2 j)

A =

10. 0000 + 5.0000i

>> r = real(A)

r =

10
>> I = imag(A)

I =

5
>> r = abs(A)

r =

11.1803

>> Angulo = angle(A)


PRIMEROS PASOS EN MATLAB 13

Angulo =

0.4636

>> Angulo = atan2(imag(A),real(A))

0.4636

>> Aa = r*exp(Angulo*i)

Aa =

10.0000 + 5.0000i

1.9. MANEJO DE VECTORES Y MATRICES

La forma ms sencilla de crear un vector es mediante el uso de [], vector


en lnea, o con []', vector en columna. Los elementos se separan por espacios
o comas, el ; se reserva para anexar en columna:

>> t = [3 5 7, 8, 9]

t =

www.fullengineeringbook.net
3 5 7 8 9

Tambin se generan vectores mediante las instrucciones linspace y


logspace, ambos con dos o tres argumentos, y con :, ya mencionado:
>> x = logspace(0,2,5) % Vector de 5 componentes de 100 a
102.

x =

1.000 3.1623 10.0000 31.6228 100.000

Con el siguiente ejemplo se muestra la creacin y manejo de matrices:


>> x = 0:4

x =

0 1 2 3 4

>> y = x.2 % El punto antes del exponente


% hace que la exponenciacin
y = % sea elemento a elemento.
0 1 4 9 16

>> a = [x;y] % Crear una matriz anexando


% vectores.
14 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

a =
0 1 2 3 4
0 1 4 9 16
>> A = a' % Crear la matriz A, transpues-
% ta de a.

A =
0 0
1 1
2 4
3 9
4 16
B = [A; 5 25] % Aadir una lnea a una ma-
% triz.
B =
0 0
1 1
2 4
3 9
4 16

www.fullengineeringbook.net
5 25

>> C = reshape(B,3,4) % Reconfigurar la matriz B


% con 3 lneas y 4 columnas.
C =
0 3 0 9
1 4 1 16
2 25 4 50
>> C(2,:)=[] % Eliminar la 2a lnea. Los
% dos puntos indican para
C = % todos los valores de esa
% dimensin.
0 3 0 9
2 25 4 50
>> C(:,3) = [] % Eliminar la 3a columna,
% 0 4.
C =
0 3 9
2 25 50
>> A = [1 2; 3 5]
A =
1 2
3 5
PRIMEROS PASOS EN MATLAB 15

>> A2 % Diferencia entre y .

ans =

7 12
18 31

>> A.2

ans =

1 4
9 25

>> 1../A

ans =

1.0000 0.5000
0.3333 0.2000

>> det(A)

ans =

www.fullengineeringbook.net
-1

>> inv(A)

ans =

-5.0000 2.0000
3.0000 -1.0000

Las exponenciaciones, elemento a elemento y matricial, tambin se realizan


con los comandos power y mpower, segn:

>> x =[2 3 4];


>> y = power(x,2) % Equivalente a y = x.2

y =

4 9 16

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


>> y = mpower(x,2) % Equivalente a y = x2
y
7 18
6 19
16 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1. 10. POLINOMIOS

Sea el polinomio p = x2 5x + 6, con vector de coeficientes C:

>> C = [1 -5 6];

Las races de este polinomio se obtienen, mediante:

>> r = roots(C)
r =
3
2

poly sobre las races devuelve los coeficientes del polinomio:


>> poly(r)
ans =
1 -5 6

polyval evala el polinomio sobre un valor:


www.fullengineeringbook.net
>> polyval(C,5)
ans =
6

1.10.1. Multiplicacin y divisin de polinomios


La multiplicacin de dos polinomios, Pol1 = x2 + 2x + 3 por Pol2 = x 1,
se efecta por medio de conv:

>> Pol1 = [1 2 3];


>> Pol2 = [1 -1];
>> PolProd = conv(Pol1,Pol2)
PolProd =
1 1 1 -3

Cuyo resultado equivale a x3 + x2 + x 3.


La divisin de polinomios se realiza mediante deconv:
>> PolDiv = deconv(PolProd,Pol2)
PolDiv =
1 2 3
PRIMEROS PASOS EN MATLAB 17

1.10.2. Desarrollo en fracciones simples

Mediante residue, aplicado a dos polinomios, se obtienen fracciones


simples, cuya suma es equivalente al cociente de los polinomios:
>> P1 = [5 -20 9];
>> P2 = [1 -5 4];
>> [r,s,t] = residue(Pl,P2)
r =
3
2
s =
4
1
t =
5

Representando r, un vector columna con los numeradores de las fracciones,


s las races de cada denominador, y t los coeficientes del trmino indepen-
diente:
5 x2 20 x + 9 3 2
= + +5
www.fullengineeringbook.net
x2 5 x + 4 x 4 x 1

Si se conocen los numeradores, las races de los denominadores y los tr-


minos independientes, se pueden generar los polinomios:
>> [p1,p2] = residue(r,s,t)
p1 =
5 -20 9
p2 =
1 -5 4

Siendo p1 y p2, los polinomios obtenidos, con los numeradores, races y


trminos independientes.

1.10.3. Derivadas de polinomios

Las derivadas de los polinomios se obtienen con polyder:


>> derp1 = polyder(p1)
derp1 =
10 - 20

es decir, 10x 20
18 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1.10.4. Integracin de polinomios

La integral de un polinomio se obtiene mediante polyint(p), o con


polyint(p,C); en el primer caso se supone que la constante de integracin
es 0, y en el segundo C:
>> polyint(p2)

ans =

0.3333 -2.5000 4.0000 0

>> polyint(p2,2)

ans =

0.3333 -2.5000 4.0000 2.0000

Equivalente a:
1 3 5 3
x x + 4x + 2
3 2

www.fullengineeringbook.net
1.10.5. Interpolacin polinomial

Matlab permite varios modos de interpolacin, relacionados y descritos


en help interp1; a continuacin se muestran unos ejemplos:
>> x = [2 4 6];
>> y = power(x,2); % Por defecto se utiliza el mto-
do de
>> y5 = interp1(x,y,5) % interpolacin lineal.

y5 =

26

>> y5c = interp1(x,y,5,'cubic') % Interpolacin cbica.

y5c =

24.8750

>> y5s = interp1(x,y,5,'spline')

y5s =

25
PRIMEROS PASOS EN MATLAB 19

1.11. matlabpath

El path de MatLab, llamado matlabpath, establece el camino para


buscar variables, programas y funciones de MatLab que sean llamados direc-
tamente desde la ventana de comandos, o durante la ejecucin de programas.
Al invocar un comando, MatLab lo busca, y ejecuta el que primero coinci-
da con el nombre invocado, segn el siguiente orden:

1. Si es una variable del workspace.


2. Si es una funcin incorporada.
3. Si es un archivo.m presente en el directorio actual.
4. Lo busca siguiendo el orden establecido en matlabpath.

El comando which, aplicado sobre una funcin muestra su ruta:

>> which Fun


d:/MatLab6p5/work/Fun.m

1. 12. lookfor

lookfor aplicado a una variable de caracteres, busca esos caracteres en la


www.fullengineeringbook.net
primera lnea de comentarios de los archivo.m encontrados en el matlab-
path.
>> lookfor Fun.m
Fun.m: %---------------- Fun.m --------------------

1.13. LATEX

La funcin latex(A) devuelve la representacin LATEX de una expresin


simblica:

>> syms x
>> A = taylor(exp(x))

A =
1 - x + 1/2*x2 - 1/6*x3 + 1/24*x4 - 1/120*x5
>> pretty(A)
2 3 4 5
1 - x + 1/2 x - 1/6 x + 1/24 x - 1/120 x
>> latex(A)
ans =
1 - x + 1/2\,{x}{2}-1/6\,{x}{3}+1/24\,{x}{4}-
{\frac{1}{120}}\,
{X}^{5}
20 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1.14. FUNCIONES DEL TIEMPO

MatLab suministra datos relacionados con el tiempo, como una variable de


caracteres, 12-Oct-1498, como una variable numrica, 739476 o como
un vector, 1789 07 14 0 0 0.
La funcin clock responde con:

>> Tiempo = clock

Tiempo =

1.0*e + 03 *
2.0030 0.0010 0.0290 0.0160 0.0400 0.0502

Esos datos responden a Tiempo[ao mes da hora minutos se-


gundos].
now devuelve la fecha y hora en un nmero, datestr convierte una fecha
numrica en string, datevec individualiza los componentes de fecha y hora,
datenum convierte una fecha en un nmero:
>> now

ans =
www.fullengineeringbook.net
7.3161e + 05

>> datestr(7.3161e + 05)

29-Jan-2003

>> datevec(7.3161e + 05)

2003 1 29 0 0 0

>> datenum(date)

7.3161e + 05

La funcin date devuelve una variable de caracteres en el formato dd-


mmm-yyyy:

>> date
ans =

29-Jan-2003

Numerosas transformaciones de fechas pueden encontrarse mediante help


datestr.
PRIMEROS PASOS EN MATLAB 21

Para temporizaciones se usan tic, para comienzo, y toc para finalizar la


temporizacin y mostrar el resultado:
>> T = clock; tic, for i = 1:1000000, a = sqrt(i); end, ...
toc, Tt = etime(clock,T)

elapsed_time =

3.6174

Tt =

3.6642

Los tres puntos seguidos indican continuacin en la siguiente lnea.


La ejecucin de las races cuadradas de 1 a 1 milln, en un Pentium III a
866 Mhz, con Linux Suse 8.2 y Student MatLab 12, tarda 3.62 segundos.
La funcin etime devuelve el tiempo, en segundos, transcurrido entre
dos valores del tiempo:
>> etime(Tiempo,clock)

ans =

www.fullengineeringbook.net
-1.2835e + 03

1.15. INTERCAMBIO DE DATOS

A partir de la versin 6, tanbin numerada como 12, MatLab presenta


una ventana de Historia de Comandos, en donde se listan las rdenes efectua-
das, de modo que en una sesin nueva se pueden buscar comandos ejecutados
en sesiones precedentes.
Para guardar el espacio de trabajo en un archivo, para posteriormente re-
cuperarlo, se utilizan los comandos load y save, segn:

>> clear
>> X=rand(2,3)

X =

0.3046 0.1934 0.3028


0.1897 0.6822 0.5417

>> Y=round(X)

Y =

0 0 0
0 1 1
22 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

>> save mi_archivo


>> clear
>> who
>>
>> load mi_archivo
>> who

Your variables are:

X Y
>> X
X =

0.3046 0.1934 0.3028


0.1897 0.6822 0.5417

>> Y
Y =

0 0 0
0 1 1

round se relaciona con ceil y floor, cuyas funciones se intuyen por su


significado:

www.fullengineeringbook.net
>> A=[1.5 2.49; 0.2 9.99]

A =

1.5 2.49
0.2 9.99

>> ceil(A)

ans =

2 3
1 10
>> floor(A)

ans =

1 2
0 9

save y load permiten salvar o cargar variables determinadas, separadas


por espacios, a la vez que admiten el formato ASCII, aadiendo al final de es-
tos comandos -ascii, como se especifica en el siguiente ejemplo:

>> save exp_mayo.dat X -ascii


PRIMEROS PASOS EN MATLAB 23

En el archivo exp_mayo.dat, se guarda la variable X en formato ASCII.


Para guardar la sesin de trabajo, se utiliza el comando diary, que alma-
cena una copia de todas las entradas realizadas desde el teclaclo en un archivo,
en el directorio actual, en formato ASCII:

www.fullengineeringbook.net
www.fullengineeringbook.net
2
Clculo simblico

2.1. INTRODUCCIN

MatLab se caracteriz desde un principio por ser muy potente en clculo


numrico, mientras que el clculo simblico fue incorporado como una toolbox,
www.fullengineeringbook.net
cuando MathWorks, empresa que comercializa MatLab, se extendi interna-
cionalmente.
La Symbolic Math Toolbox es una coleccin de herramientas para MatLab,
que se utilizan para manejar y resolver expresiones simblicas.
Las herramientas simblicas disponibles ms usadas son; combinar, sim-
plificar, factorizar, derivar, integrar, lmites, resolucin de sistemas de ecua-
ciones algebraicas o diferenciales, transformaciones integrales, la mayora de
las operaciones del lgebra lineal...
Estas herramientas de clculo simblico son parte del programa Maple V,
comercializado por Waterloo Maple Software Inc.

2.2. OBJETOS Y EXPRESIONES SIMBLICAS


En Matlab hay dos tipos de objetos, numricos y literales, strings. La Sym-
bolic Math Toolbox usa objetos simblicos para representar variables y opera-
dores, por ejemplo:
>> x=sym('x')

x =
x

25
26 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Un objeto numrico puede convertirse en simblico segn:


>> M=magic(2) % M, variable numrica.
M =
1 3
4 2
>> N=sym(M) % N, variable simblica.
N =
[1, 3]
[4, 2]
>> syms a b c d % Definicin de simblicos.
>> Mat=[a,b;c,d]
Mat =
[a, b]
[c, d]
>> det(Mat) % Clculo del determinante.
ans =
a*d-b*c
>> M=(a-b)/(c+d)

www.fullengineeringbook.net
M =
(a-b)/(c+d)
>> pretty(M)
a - b
c + d

Para la simplificacin y transformaciones de expresiones se utilizan los ope-


radores collect, expand, horner, factor, simple y simplify, al-
gunos de los cuales se aplican en lo que sigue.
1/2 1/2
2 15 /5 sin(15 /2 t) exp(3/2 t)

80

70

60

50

40

30

20

10

10
3 2 1 0 1 2 3
t

Figura 2.1. Representacin grfica de y.


CLCULO SIMBLICO 27

2.3. EJEMPLOS DE CLCULO SIMBLICO

2.3.1. Derivadas e integrales

Se crea la funcin y, dependiente de t, segn:


>> t=sym('t');
>> y=sym('2*15^(1/2)/5*sin(15^(1/2)/2*t)*e^(-3/2*t)');

>> pretty (y)

1/2 1/2 (- 3/2 t)


2/5 15 sin(1/2 15 t) e

La representacin grfica de y, para valores de - a , se consigue con la


instruccin:
>> ezplot(y,[-pi pi])

La derivada y, almacenada en dy, simplificada y factorizada se obtiene se-


gn:

www.fullengineeringbook.net
>> y
Y=
2*15^(1/2)/5*sin(15^(1/2)/2*t)*exp(-3/2*t)

>> dy=diff(y);
>> dy=simplify(dy);
>> dy=factor(dy);
>> pretty(dy)

1/2 1/2 1/2


- 3/5 exp(-3/2 t) (-5 cos(1/2 15 t)+15 sin(1/2 15 t))

La representacin grfica de dy se obtiene, como en el caso anterior, me-


diante ezplot.
La integral de la derivada es la propia funcin, por lo tanto, integrando dy,
ha de obtenerse una expresin idntica a la de y:
>> ezplot(dy, [-pi pi])
>> Intdy=int(dy,t);
>> Intdy=simplify(Intdy)

Intdy =

2/5*15^(1/2)*sin(1/2*15^(1/2)*t)*exp(-3/2*t)
28 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

1/2 1/2 1/2


3/5 exp(3/2 t) (- 5 cos(1/2 15 t)+15 sin(1/2 15 t))

60

40

20

20

40

60

80

100
3 2 1 0 1 2 3
t

Figura 2.2. Representacin grfica de dy.

2.3.2. Sistemas de ecuaciones

Los sistemas de ecuaciones se resuelven mediante la instruccin solve, to-


mando como argumentos el primer miembro de las ecuaciones igualadas a 0,
segn:

www.fullengineeringbook.net x+ y= 5
x y = 1
ezx = 7,389
>> syms x y z
>> [x,y,z]=solve(x+y-5,x-y+1,exp(x*z)-7.389)

x =
2

y =
3

z =

1/2*log(7389/1000)

>> z=double(z)

z =

1.0000

Si las ecuaciones a resolver no tienen solucin analtica, solve devuelve


una expresin numrica, que se ejecuta mediante double, transformacin a
doble precisin.
CLCULO SIMBLICO 29

2.3.3. Ecuaciones diferenciales

La funcin dsolve calcula las soluciones simblicas de ecuaciones dife-


renciales ordinarias. Los argumentos de dsolve deben ser expresiones de ca-
racteres, strings, conteniendo el signo =. Para indicar la derivada primera se
utiliza el signo D. para la derivada segunda se utiliza D2, y as sucesivamente.
La sintaxis de esta operacin se expresa como:
r=dsolve('Ecu1,Ecu2,...','Cond1,Cond2,...','x')

siendo x la variable independiente; si no se expresa se utiliza t por defecto.


Obteniendo y'', por derivacin de y', se puede componer con y e y', la si-
guiente ecuacin diferencial:

d2 y dy
2
+3 + 6y = 0
dt dt

La solucin a esta ecuacin diferencial se obtiene segn:


>> yc=dsolve('D2y+3*Dy+6*y=0,Dy(0)=3,y(0)=0')

www.fullengineeringbook.net
yc =

2/5*15^(1/2)*exp(-3/2*t)*sin(1/2*15^(1/2)*t)

La especificacin de las constantes iniciales es opcional, a continuacin se


muestran ejemplos con y sin estas constantes:
>> r=dsolve('D2y+3*Dy+2*y=0')

r =

C1*exp(-t)+C2*exp(-2*t)

>> s=dsolve('D2y+3*Dy+2*y=0','Dy(0)=l,y(0)=0')

s =

exp(-t)-exp(-2*t)

>> S=dsolve('D2y+3*Dy+2*y=cos(t)','Dy(0)=l,y(0)=0')

S =

1/l0*cos(t)+3/l0*sin(t)+1/2*exp(t)-3/5*exp(-2*t)
30 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

2.4. TRANSFORMACIN DE LAPLACE E INVERSA

La transformacin de Laplace calcula la integral:


 (s) = 0 f (t) e st dt

permite transformar f(t) en el dominio del tiempo, a (s), en el dominio de la


variable compleja

>> syms a w t s
>> F=cos(w*t)*exp(a*t)
F =

cos(w*t)*exp(a*t)
>> L=laplace(F,t,s)

L =
(s+a)/((s+a)^2+w^2)
>> pretty(L)

www.fullengineeringbook.net
(s + a)
-----------
2 2
(s + a) + w
>> L1=laplace(exp(-t),t,s)
L1 =
1/(l+s)
>> pretty(L1)
1
----
1 + s

La transformada inversa se ejecuta sobre expresiones de la variable com-


pleja s, para volver al dominio del tiempo.

>> I=ilaplace(L,s,t)
I =
cos(w*t)*exp(-a*t)
>> I1=ilaplace(Ll,s,t)
I1 =
exp(-t)
CLCULO SIMBLICO 31

2.5. LMITES

>> limit(1/x,x,0,'left')

ans =
-inf

El lmite de 1/x, cuando la variable x tiende a 0 por la izquierda, es .

>> Lim=limit((x^3-1)/(x^2-l),x,1)

Lim =
3/2

2.6. SERIES DE TAYLOR Y MAC LAURIN


Para obtener desarrollos de series de Taylor y Mac Laurin, se utiliza indis-
tintamente taylor, con 3 o 4 argumentos:
>> syms x
>> f=exp(-x);
>> pretty(taylor(f,x,3,8))

www.fullengineeringbook.net 2
exp(-8) - exp(-8) (x - 8) + 1/2 exp(-8) (x - 8)

>> pretty(taylor(f,x,3))
2
1 - x + 1/2 x

2.7. INVOCANDO A MAPLE V


Desde MatLab se accede a Maple V con la funcin maple, que toma
como argumento la expresin con sintaxis de Maple V, mediante las instruc-
ciones genricas:

r=maple('Sentencia Maple')
r=maple('Funcin',Argl,Arg2,...)

2.7.1. Transformacin de Laplace e inversa con Maple V

Para comenzar a utilizar las funciones de MapleV, relacionadas con la


transformacin de Laplace, es necesario cargar previamente el paquete de
transformaciones integrales with(inttrans):
>> maple('with(inttrans)') % Se carga el paquete de ...
% transformaciones integrales.
32 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

ans =

[addtable, fourier, fouriercos, fouriersin, hankel, hil-


bert,...
invfourier, invhilbert, invlaplace, invmellin, ...
laplace, mellin, savetable]

>> maple('laplace(y(t)=t^2+sin(t),t,s)')

ans =

laplace(y(t),t,s) = 2/s^3+1/(s^2+1)

>> M1=maple('invlaplace((s+1)/(s*(s^2+s+1)),s,t)')

M1 =

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

2.7.2. Resolucin de ecuaciones diferenciales con Maple V

Para resolver la ecuacin diferencial:

+ 3 y + 6y = 0
www.fullengineeringbook.net
con condiciones iniciales:

y (0) = 3

y (0) = 0

se procede con las siguientes instrucciones:

>> maple('eq:=diff(y(t),t$2)+3*diff(y(t),t)+6*y(t)=0')

ans =

eq := diff(y(t),'$'(t,2))+3*diff(y(t),t)+6*y(t) = 0

>> maple('ini:=y(0)=0,D(y)(0)=3')

ans =

ini := y(0) = 0, D(y)(0) = 3

>> maple('Sol:=dsolve({eq,ini},{y(t)})')

ans =

Sol := y(t) = 2/5*15^(1/2)*exp(-3/2*t)*sin(1/2*15^(1/2)*t)


CLCULO SIMBLICO 33

2.7.3. Resolucin de ecuaciones diferenciales con la transformacin


de Laplace

Para resolver la ecuacin diferencial:

2 y 3y = 0

con condiciones iniciales:

y (0) = 1

y (0) = 0

se procede con las siguientes instrucciones:


>> maple('eq:=diff(y(t),t$2)-2*diff(y(t),t)-3*y(t)=0')

ans =

eq := diff(y(t),'$'(t,2))-2*diff(y(t),t)-3*y(t) = 0

>> maple('ini:=y(0)=0,D(y)(0)=1')

www.fullengineeringbook.net
ans =

ini := y(0) = 0, D(y)(0) = 1

>> maple('La:=laplace(eq,t,s)')

ans =

La := s*(s*laplace(y(t),t,s)-y(0))-D(y)(0)-2*s* ...
laplace(y(t),t,s)+2*y(0)-3*laplace(y(t),t,s) = 0

>> Maple('Sol:=subs(ini,{La})')

ans =

Sol := {s^2*laplace(y(t),t,s)-1-2*s*1aplace(y(t),t,s) ...


-3*laplace(y(t),t,s) = 0}

>> maple('Sol1:=solve(Sol,{laplace(y(t),t,s)})')

ans =

Sol1 := {laplace(y(t),t,s) = 1/(s^2-2*s-3)}

>> maple('Solf:=invlaplace(Sol1,s,t)')

Solf =
34 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

{y(t) = 1/16*16^(1/2)*(exp((1+1/2*16^(1/2))*t)- ...


exp((1-1/2*16^(1/2))*t))}

>> maple('simplify(Solf)')

ans =

{y(t) = -1/4*(-1+exp(-4*t))*exp(3*t)}

1
y (t ) = (e 4 t 1) e 3t
4

www.fullengineeringbook.net
3
Sentencias de control de flujo

3.1. input

La forma de input, se indica en los ejemplos siguientes, segn se trate de


variables literales o numricas:
www.fullengineeringbook.net
>> R=input('> Cul es tu nombre ? ','s')

> Cual es tu nombre ? Pepe

>> ['Hola',R]

ans =

Hola Pepe

>> ['Hola';R]

Hola
Pepe

>> P=input('> Dime el radio de la rueda ? ')

> Dime el radio de la rueda ? 5

>> P+1

ans =

35
36 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

3.2. if - else - end

El salto condicional de flujo ms sencillo, se construye de la siguiente ma-


nera:
if condicin
comandos
end

Los comandos entre if y end, se ejecutarn, si la condicin es verdad,


uno. Si la condicin es falsa, cero, se puentearn los citados comandos.

Operadores relacionales
eq == Igual
ne ~= No igual
lt < Menor que
gt > Mayor que
le <= Menor que o igual
ge >= Mayor que o igual

www.fullengineeringbook.net
En la primera de las siguientes instrucciones se responde con hola, ya
que es verdad que 'a' es igual a 'a'. En la segunda esto se obvia, dado que la
condicin es falsa.
>> if 'a'=='a', 'hola', end

ans =

hola

>> if 'a'=='b', 'hola', end

Para evaluar dos alternativas, la construccin if - else - end toma la


siguiente construccin:
if condicin
Ejecucin de comandos de esta zona,
si la condicin es verdad
else
Ejecucin de comandos de esta zona,
si la condicin es falsa
end

Si hubiese tres alternativas, la construccin sera:


SENTENCIAS DE CONTROL DE FLUJO 37

if condicin 1

Ejecucin de instrucciones si la condicin 1 es ver-


dad
elseif condicin 2
Ejecucin de instrucciones si la condicin 2 es ver-
dad
elseif condicin 3
Ejecucin de instrucciones si la condicin 3 es ver-
dad
else
Ejecucin de instrucciones si ninguna condicin es
verdad
end

En un comercio se vende un vino a un precio condicionado por la cantidad


requerida. Hasta 5 botellas el precio unitario es de 6 , desde 6 a 12 botellas el
precio es de 5,5 , y a partir de 13, a 5 la botella. Elaborar un programa, que
pregunte cuntas botellas se desean e indique el precio unitario y el total del
gasto.

%------------ Vino.m --------------


C=input('Cuantas Botellas ?');
www.fullengineeringbook.net
if C<=5
Pu=6;
Pt=Pu*C;
elseif C<=12
Pu=5.5;
Pt=Pu*C;
else
Pu=5;
Pt=Pu*C;
end
Pu
Pt
% ----------------------------------

A continuacin se muestra la ejecucin de este programa:


>> Vino

Cuantas Botellas ? 8

Pu =

5.5000

Pt =

44
38 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

3.3. while - end

La sentencia while - end funciona segn:

while Condicin Comandos end

Se ejecutarn los comandos de este bucle, mientras la Condicin sea ver-


dad.
Se expone a continuacin la generacin de una tabla que suministre los in-
versos, cuadrados y races cuadradas del 1 al 3:

% ------------------ Tabla.m ------------------


I=0;
while I<4
I=I+1;
J(I)=I;
A(I)=1/I;
B(I)=power(I,2);
C(I)=sqrt(I);
end
D=[I;J;A;B;C];
D=reskape(D,3,4);
% ---------------------------------------------

www.fullengineeringbook.net
>> Tabla
>> D

D =

1.0000 1.0000 1.0000 1.0000


2.0000 0.5000 4.0000 1.4142
3.0000 0.3333 9.0000 1.7321

3.4. for - end

El bucle o lazo de control for, permite realizar un conjunto de instruccio-


nes iguales, variando uno o varios subndices, su forma genrica es:
for I = vector
Comandos
end

A continuacin se muestra la generacin de la tabla anterior utilizando


for.
SENTENCIAS DE CONTROL DE FLUJO 39

% --------------- Tabla1. m -----------


for I=1:3
J(I)=I;
A(I)=1/I;
B(I)=power(I,2);
C(I)=sqrt(I);
end
D=[I;J;A;B;C];
D=reshape (D,3,4);
% -------------------------------------

>> Tabla1
>> D

D =

1.0000 1.0000 1.0000 1.0000


2.0000 0.5000 4.0000 1.4142
3.0000 0.3333 9.0000 1.7321

El funcionamiento de for, en el programa anterior, comienza tomando I el


valor de 1, recorriendo los comandos del bucle de arriba hacia abajo, crendo-
se J(1) con el valor 1, A(1) con el valor del inverso de 1... Al llegar al final, I se
incrementa en 1, tomando el valor 2, y el flujo de clculo vuelve a cabecera,
www.fullengineeringbook.net
donde se comprueba si I rebasa o no el valor lmite, en este caso 3, de modo
que continuar el ciclo, se crear J(2) con el valor 2, A(2) con el valor de 1/2 y
as sucesivamente. Cuando I alcance el valor de 4 ya no se ejecutarn las sen-
tencias del interior del for, se continuar con lo que venga despus de end.
A continuacin se muestra una estructura de un for dentro de otro, anida-
miento, para ejercitar el funcionamiento de los subndices.
Para cada variacin de un valor del ndice del for externo, se ejecutan to-
das las variaciones del interno. El funcionamiento del siguiente ejemplo co-
mienza con I=1 y J, tomando los valores de 1, 2, 3 y 4, entonces I pasa al valor
2, y J vuelve a tomar los valores de 1, 2, 3 y 4, y as hasta completar la ltima
vuelta con I=3.
% ------------- Tabla2.m ----------------------
A=[]; % Crear una matriz vacia.
x=[1 -1 2 0.5];
for I=1:3
for J=1:4
A(I,J)=I^x(J);
end
end
% ---------------------------------------------

En la tabla formada, la I vara de 1 a 3 al descender por cada columna, y la


J vara en horizontal, del principio al final de cada lnea, tomando siempre los
40 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

valores de 1 para la primera columna, 2 para la segunda, 3 para la tercera y 4


para la cuarta y as en cada lnea.
En la primera lnea del programa Tabla2 se crea la matriz A sin contenido,
para seguridad, siendo equivalente a clear A.
Se ejecuta Tabla2 segn:
>> Tabla2
>> A

A =

1.0000 1.0000 1.0000 1.0000


2.0000 0.5000 4.0000 1.4142
3.0000 0.3333 9.0000 1.7321

3.5. continue

Si aparece un continue en un lazo for end o while end, el clculo


pasa a la siguiente iteracin del end de ese bucle.

www.fullengineeringbook.net
3.6. break

Si aparece un break en un lazo for end o while end, el clculo se


puentea a la siguiente instruccin del end de ese bucle, es decir se finaliza ese
bucle.

3.7. switch end

switch ejecuta un grupo determinado de sentencias basado en el valor de


una variable o expresin:
switch Expresin % Escalar o de caracteres.
case Valor 1
Sentencias % Se ejecutan si Expresin igual Valor 1.
case Valor 2
Sentencias
.
.
.
otherwise
Sentencias % Se ejecutan para Valor no contemplado.
end
4
Grficos en MatLab

4.1. TIPOS DE GRFICOS

Desde las primeras versiones, MatLab traa suficientes utilidades grficas,


que en las versiones posteriores fueron incorporando cantidades ingentes de
www.fullengineeringbook.net
nuevas facilidades. Se resean los principales tipos de construccin de grficos:

fplot. Para representacin de funciones: fplot('Fun',[-pi pi]).


plot. Representacin de x frente a y: plot(x,y).
plotyy. Representacin en los ejes opuestos de ordenadas: plotyy
(x1,y1,x2,y2).
plotmatrix. Matriz de representaciones: plotmatrix(x,y).
bar. Representacin con barras: bar(x,y,ancho,tipo).
stairs. Representacin en escalones: stairs(x,y).
errorbar. Representacin acompaada de un parmetro de desviacin:
errorbar(x,y,e).
stem. Representacin discreta: stem(x,y).
pie. Representacin en tarta: pie(x).
plot3. Representacin en 3-d: plot3(x,y,z).
semilogy. Representacin semilogartmica en el eje y: semilogy
(x,y).
semilogx. Representacin en el eje x: semilogx(x,y).
loglog. Representacin logartmica en los dos ejes: loglog(x,y).

En las Figuras 4.1 y 4.2, se representan los principales tipos de grficos


mencionados.
41
42 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

6 5

4 >> subplot(221)
>> fplot(Fun,[pi pi]) >> subplot(222)
2 >> stairs(x,Fun(x),*)
0 0

6 5
2 0 2 2 0 2

5 5 1

>> subplot(223)
>> plot(x,Fun(x),:.)
0 0 0

5 5 1
2 0 2 4 2 0 2 4

Figura 4.1. Diferentes tipos de grficos.


www.fullengineeringbook.net
5 6
>> subplot(222)
>> subplot(221) 4 >> errorbar(x,Fun(x),e)
>> bar(x,Fun(x),x,.2)
2

0 0

5 6
2 0 2 2 0 2

5 90 0,5
>> subplot(223) 120
0,4 60
>>stem(x,Fun(x))
0,3
150 0,2 30

0 180 0

210 330

240 300
5 270
2 0 2

Figura 4.2. Matriz de grficos.


GRFICOS EN MATLAB 43

>> x=-pi:.25:pi;
>> subplot(221), fplot('fun',[-pi pi])
>> axis([-pi pi -6 6])
>> subplot(222), stairs(x,fun(x),*-)
>> axis([-pi pi -5 5])
>> subplot(223), plot(x,fun(x),':.')
>> axis([-pi pi -5 5])
>> subplot(224), plotyy(x,fun(x),x,x.^2)
>> subplot(221), bar(x,fun(x),0.2)
>> axis([-pi pi -5 5])
>> e=rand(length(x),1)
>> subplot(222), errorbar(x,fun(x),e)
>> axis([-pi pi -6 6])
>> subplot(223), stem(x,fun(x))
>> axis([-pi pi -5 5])
>> subplot(224), polar(x,sin(2*x).*cos(2*x))

La representacin plotmatrix, se muestra en la Figura 4.3, obtenida


con las instrucciones:
>> x=[-3:.1:4]';
>> y=Fun(x);
>> y1=sin(x);
>> y2=tan(x);
>> A=[y,y1,y2];

www.fullengineeringbook.net
>> plotmatrix(x,A,'h-')

Ttulo del grfico


6
4
Funcin

2
0
2
4
1
Seno de X
Seno de X

0,5

0,5

20
Tangente de X
0

20

3 2 1 0 1 2 3 4
Eje de las X

Figura 4.3. Matriz de grficos.


44 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

35

30

25

20

15

10

0
1
0,5 1
0 0,5
0
0,5 0,5
1 1

Figura 4.4. Grfico en 3-d.

La representacin en 3-d, se efecta segn el ejemplo:


www.fullengineeringbook.net
>> t = 0:pi/l00:l0*pi;
>> plot3(cos(t).*exp(-0.05*t),sin(t).*exp(-0.05*t),t);

4.2. UTILIDADES DE GRFICOS

Las principales utilidades de los grficos son:

line([xmin xmax],[ymin ymax],'Color','k','LineWidth',2)


xlabel('Leyenda del eje x'),ylabel('Leyenda del eje y').
text(x,y,'Leyenda').
gtext('Leyenda'), posicionada con el ratn.
title('Ttulo del grfico').
axis([xmin xmax ymin ymax]).
hold on/off, para que el siguiente grfico se presente sobre el anterior.
subplot(abc), para representar una matriz de grficos.
axes('Posicin',[x y],'XColor','r','YColor','b')
clf, borrar figuras.
legend, para insertar leyendas, legend(leyenda1,leyenda2..., posi-
cin)
datetick(eje,formato de fecha), eje puede ser 'x', 'y' o 'z', el forma-
to de fecha es un nmero del 0 al 28, 29 posibilidades de expresar las fe-
chas, vase help datetick.
GRFICOS EN MATLAB 45

6% a=[1 3 5 7]
pie(a,a==a(2))

19%

44%

31%
Figura 4.5. Grfico en tarta.

4.3. TEXTOS EN GRFICOS

Para poder mostrar ecuaciones en cuadros grficos, ya sea en las leyendas


de los ejes, o en otras partes del cuadro, MatLab incorpora un subconjunto de
www.fullengineeringbook.net
comandos LATEX, y una coleccin de smbolos de uso frecuente en las ecua-
ciones, entre otros se encuentra el alfabeto griego, minsculas y maysculas.
El conjunto de caracteres puede verse en la documentacin en lnea de
MatLab, en la seccin de Handle Graphics.
La sintaxis de LATEX utiliza los argumentos entre llaves, { }. Los
subndices deben ir precedidos de _, los superndices van precedidos de
^. Para conseguir el smbolo de las letras griegas, ha de escribirse su nombre
en ingls precedido de \, con la primera letra en minscula o mayscula.
En el siguiente ejemplo se muestra cmo poner varias lneas de texto en las
leyendas de los ejes, cmo incorporar una ecuacin en un eje y en el interior de
cuadros grficos.

>> x=-10:0.01:10; y=sin(x).*exp(-0.2*x); plot(x, y)


>> xlabel({'\fontsize{12}Eje de las X','Distancia \mum'})
>> ylabel('\fontsize{16}y=sin(x)\cdote^{-\phi \cdot x}')
>> text(- 10.5,'\fontsize{20}y= \mu_{\barpi} \cdot ...
sin(x) \cdot e^{-\phi \cdot x}')
46 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

2
y= sin(x) e - x
y=sin(x) e - x

5
10 8 6 4 2 0 2 4 6 8 10
Eje de las X
Distancia m

Figura 4.6. Ecuaciones en el interior de cuadros grficos.

4.4. LAPRINT

www.fullengineeringbook.net
Al incluir cuadros grficos procedentes de MatLab, en textos LATEX, es-
calados ya con resizebox o scalebox, suele haber recortes indeseados y
desproporcin en los textos de los cuadros grficos en los documentos finales.

6
4
2
0
2
4
6

1
2
3
4 8
5 7
6 6
7 5
4
8 3
2
1

Figura 4.7. Grfico de barras, bar3(peaks(8)).


GRFICOS EN MATLAB 47

LaPrint es un archivo, laprint.m, cuya versin ms reciente puede obte-


nerse en www.uni-kassel.dr/~linne, que reemplaza todas las anotaciones
de una figura de MatLab por marcas, salvando la figura como un archivo.eps,
a la vez que crea un archivo.tex, para reproducir la figura original, usando
epsfig y psfrag, de modo que la figura incorporada en el documento final sea
idntica, incluidas sus fuentes de texto, a la figura original en MatLab.
Para utilizar laprint.m, es necesario copiarlo a cualquier carpeta del
matlabpath. Una vez que se ha construido el cuadro grfico en MatLab, se
ejecuta laprint.m en la ventana de MatLab. El archivo.tex producido,
se inserta en el documento LATEX, en donde convenga, y el archivo.eps
en la carpeta correspondiente.

4.5. ESTILOS DE LNEAS, MARCAS Y COLORES


Los estilos de lneas, marcas y colores se presentan en la Tabla 4.1.

Smbolo Color Smbolo Marca Smbolo Estilo de lnea

b Azul Continua
g Verde o o : Punteada
r Rojo x x Trazo-Punto

www.fullengineeringbook.net
c
m
y
Cian
Magenta
Amarillo
+
*
s
+
*

Trazo-Trazo

k Negro d
w Blanco
M
<
>
p
h

Cuadro 4.1. Caractersticas de las lneas grficas.

En la Figura 4.8 se muestra un ejemplo de modificacin de atributos de l-


neas como son: color de lnea, grueso...
% ----------------Lineas.m------------------------------------
--
t=linspace(-4*pi,4*pi,1000);
y=sin(t).*exp(-.25*abs(t));
z=cos(t).*exp(-.25*abs(t));
plot(t,y,'LineWidth',2,'Color','k'), grid
axis([-4*pi,4*pi,-.7,1])

text(2,sin(2).*exp(-.25*abs(2)),...
'\fontsize{16}\leftarrow sin(t)\cdote^{-0.25\cdotabs(t)}
')
48 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

xlabel('\fontsize{l5} t')
ylabel('\fontsize{l5} sin(t)\cdote^{-0.25\cdotabs(t)}')
hold on
a=plot(t,z);
text(0.25,cos(0.25).*exp(-.25*abs(0.25)),...
'\fontsize{14}\leftarrow cos(t)\cdote^{-0.25\cdotabs(t)}
')

set(a,'LineWidth',0.5,'Color','k')
t1=-11; y1=sin(t1).*exp(-.25*abs(t1));
t2=0; y2=cos(t2).*exp(-.25*abs(t2));
line([t1 t2],[y1 y2],'LineWidth',8,'Color',[1 0 1])

1
cos(t)e0,25 abs(t)
0,8

0,6
sin(t)e 0,25abs(t)
0,4
sin(t)e 0,25 abs(t)

0,2

www.fullengineeringbook.net 0

0,2

0,4

0,6

10 5 0 5 10
t

Figura 4.8. Gruesos de lneas, color...

hold of
% ------------------------------------------------------------
------

4.6. area

area es una funcin anloga a plot, rellena el espacio comprendido en-


tre 0 y una lnea grfica. En la Figura 4.9, se rellena la superficie limitada entre
0 y Fun(x), grfico superior, y entre 5 y Fun(x), grfico inferior:
GRFICOS EN MATLAB 49

4 subplot(211)
area(x,Fun(x))
2

6
2 1 0 1 2 3 4 5

4
subplot(212)
2
area(x,Fun(x),5)
0

6
2 1 0 1 2 3 4 5

Figura 4.9. Relleno de reas en grficos.


www.fullengineeringbook.net a=[3 5 7 9 12];
33% pie3(a,a==a(4))
8%

14%

25%

19% Valor destacado

Figura 4.10. Grfico en tarta en 3-d.


www.fullengineeringbook.net
5
Aplicaciones de clculo numrico

5.1. INTEGRACIN NUMRICA

Matlab dispone de dos funciones para integracin, quad, basado en la regla


de Simpson, y quadl, evaluacin mediante la tcnica de cuadratura de Lo-
www.fullengineeringbook.net
batto.
En el siguiente ejemplo se muestra el clculo de la integral de la funcin
Fun, previamente definida, desde el lmite inferior 0, hasta 5.

>> A=quad(F,0,5) % Integracin por la regla de Simpson.


% Siendo F=@Fun, definida en Cap. 1.
A =

-10.0814

5.2. MNIMOS, CEROS Y OPTIMIZACIN

Las principales funciones de MatLab para optimizacin son: fminbnd, que


encuentra el mnimo de una funcin de una variable; fminsearch, corres-
pondiente a fmins de versiones anteriores, calcula mnimos de funciones
multivariables; lsqcurvefiting para ajustes de datos a diferentes tipos
de funciones; y fzero, que encuentra ceros de funciones de una variable.

5.2.1. Mnimos y ceros de funciones


Para encontrar un mnimo de la funcin, Fun, entre 0 y 3, se procede se-
gn:
51
52 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

>> x=fminbnd(F,0,3)

x =
2.0351

La siguiente instruccin busca un cero en las proximidades de 4:


>> fzero('Fun',4)

ans =
3.0965
>> fzero(F,4)

ans =
3.0965

5.2.2. Resolucin de ecuaciones no lineales

La resolucin de ecuaciones no lineales se efecta con la instruccin


fsolve, cuya aplicacin se realiza segn el ejemplo que sigue.

Sea el sistema:

www.fullengineeringbook.net
Sea el sistema x+y=5

x y = 1

e z x = 7, 389

La solucin se consigue con el programa EcusP.m


% --------------- EcusP.m ----------------------------
clear
Opciones=optimset ('MaxFunEvans',5000,'GradConstr','on'...
'TolCon',1e5,'TolFun',1e6,'TolX'1e5);
x=fsolve('Ecus',[40 50 5]',Opciones)
% ------------------------------------------------------------

En la fucin Ecus se definen las ecuaciones a resolver, segn el listado:


% --------------- Ecus.m ----------------------------
function q=Ecus(p)
x=p(1); y=p(2); z=p(3);
q(1)=x+y5;
q(2)=xy+1;
q(3)=exp(x.*z)7.389;
q=[q(1);q(2);q(3);
% ------------------------------------------------------------
APLICACIONES DE CLCULO NUMRICO 53

La ejecucin de EcusP produce el siguiente resultado:


> EcusP
Optimizacin terminated successfully:
Relative function value changing by less than OPTIONS.TolFun

x =

2.000
3.000
1.000

>>

5.2.3. Minimizacin y ajuste de datos

El objetivo de fminsearch es encontrar un mnimo de una funcin mul-


tivariable sin restricciones. Se invoca de la forma:
pk=fminsearch('pHAjusMin',[3 l0],Opciones)

www.fullengineeringbook.net
En este caso, se llama a la funcin a minimizar, pHAjusMin, suministran-
do a continuacin los valores iniciales de los parmetros a minimizar, siendo
opcional aadir una variable de opciones, seleccionables con optimset.
La aplicacin y funcionamiento de fminsearch se comprende fcilmen-
te con el siguiente ejemplo de ajuste de datos experimentales a una funcin,
ecuacin (5.1).
En el proceso de lodos activos, la tasa de crecimiento de los lodos es fun-
cin del pH, datos experimentales.
Las reacciones de biodegradacin, actividad microbiana, transcurren a un
pH ptimo, prximo a la neutralidad y disminuyen hasta anularse, al separarse
a zonas agresivas, como son las zonas de pHs cidos o alcalinos.
El efecto del pH en la velocidad especfica de generacin de lodos se re-
presenta adecuadamente por una funcin tipo campana:

1
( pH ) = pk1 pH (5.1)
1 + 10 + 10 pH pk2
Las constantes pk1 y pk2, se calculan por ajuste de datos, representando los
valores en los que (pH), tiene el valor de 0,5.
54 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

0,9
pk1 = 5,2036
0,8
pk2 = 10,1128
0,7

0,6
(pH)

0,5

0,4

0,3

0,2

0,1

0
0 2 4 6 8 10 12 14
pH
Figura 5.1. Ajuste de la tasa de crecimiento frente al pH.

El listado del ajuste mediante la ecuacin (5.1), se presenta a continuacin:

www.fullengineeringbook.net
% --------------- pHAjus.m ----------------------------
clear,clf
global pH mu
pH=[O 1 2 3 4 5 6 7 8 9 10 11 12 13 14]';
mu=[O .01 .02 .04 .12 .4 .8 1 .96 .9 .6 .05 .01 ...
.01 0]';
pk=fminsearch('pHAjusMin',[3 10]);
plot(pH,mu,'*')
hold on
pHc=0:.1:14;
muc=1../(1+1O..(pk(1)-pHc)+10..(pHc-pk(2)));
plot(pHc,muc,'-')
mu1=1../(1+10..(pk(1)-pk(1))+10..(pk(1)-pk(2)));
mu2=1../(1+10..(pk(1)-pk(2))+10..(pk(2)-pk(2)));
line([pk(1) pk(1)],[0 mu1],'Color','k')
line([pk(2) pk(2)],[0 mu2],'Color','k')
text(1,0.85,'pk1 = '), text(2.5,.85,num2str(pk(1)))
text(1,0.75,'pk2 = '), text(2.5,.75,num2str(pk(2)))
xlabel('pH'), ylabel('\mu(pH)'), grid, hold off
%--------------------------------------------------------

El listado de la funcin a minimizar es:


function q=pHAjusMin(p)
%----------------- pHAjusMin.m --------------------
% Funcin llamada por pHAjus.m
%--------------------------------------------------
APLICACIONES DE CLCULO NUMRICO 55

global pH mu
pk1=p(1); pk2=p(2);
muc=1../(1+10..(pk1-pH)+10..(pH-pk2));
q=sum((mu-muc).2);
%--------------------------------------------------

En la funcin pHAjusMin.m, se define q, parmetro a minimizar; en este


caso minimizar la suma de los cuadrados de las desviaciones de los experi-
mentales a los calculados.
La funcin lsqcurvefit es ms especfica para el ajuste de datos; se eje-
cuta segn:
X=lsqcurvefit('FUN',XO,X,Y,LI,LS,Opciones)

Se invoca a la funcin FUN, en la que se define la ecuacin de ajuste, XO re-


presenta los valores iniciales de partida, X e Y son los datos experimentales, LI
representa el lmite inferior de los valores de los parmetros a calcular, LS es el
lmite superior, y Opciones es un conjunto de valores en los que se definen
parmetros del clculo, siendo opcional su especificacin.
A continuacin se muestra un ejemplo de la utilizacin de lsqcurvefit:

www.fullengineeringbook.net
>>
>>
>>
x=[-pi*2:.5:pi*2]';
A=2; B=.2;
y=A*sin(x).*exp(-B*x);
>> r=rand(length(x),1)-0.5;
>> Y=y+r;
>> Opciones=optimset('Display','iter','Diagnostics','on',...
'TolX',1e-29,'TolFun',1e-29,'LargeScale','on',...
'MaxFunEvals',100)
>> est=lsqcurvefit('AjusNlFun',[0 0],x,Y,[-5 -5],[10 5],...
Opciones)
>> Ac=est(1); Bc=est(2);
>> xc=linspace(x(1),x(length(x)));
>> yc=Ac*sin(xc).*exp(-Bc*xc);
>> plot(x,y,'o'), hold on, plot(xc,yc,'-'), hold off
>> text(0,5,'A='), text(1,5,num2str(A))
>> text(0,4,'B='), text(1,4,num2str(B))
>> text(4,5,'Ac='), text(5,5,num2str(Ac))
>> text(4,4,'Bc='), text(5,4,num2str(Bc))
>> xlabel('X'), ylabel('A.sen X e{-BX}')

La funcin llamada se muestra en el siguiente archivo:

function F=AjusNlFun(p,x)
%---------------AjusNlFun.m---------------
A=p(1); B=p(2);
F=A*sin(x).*exp(-B*x);
%-----------------------------------------
56 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

En la Figura 5.2 se muestra el resultado de este ajuste, en la que se muestran


los valores de partida y los encontrados, teniendo en cuenta que a cada Y, se le
sum aleatoriamente una cantidad comprendida en el intervalo 0.5.
6

5 A= 2 Ac=2,096

4 B=0,2 Bc=0,19176

3
Asen Xe BX

3
8 6 4 2 0 2 4 6 8
X

www.fullengineeringbook.net Figura 5.2. Ajuste de datos con Isqcurvefit.

En el ajuste de datos experimentales a funciones es frecuente probar con po-


linomios, para ello MatLab desarroll la funcin polyfit, cuya utilizacin se
muestra en el ejemplo siguiente.

30

25

20 Ac=0,95551
Bc= 4,6119
Cc= 5,6322
x 2+5x+6

15

10

5
8 7 6 5 4 3 2 1 0 1 2
x
Figura 5.3. Ajuste de datos con polyfit.
APLICACIONES DE CLCULO NUMRICO 57

Se definen 10 valores de x, linealmente espaciados, a los que se le aplica


una funcin polinmica para obtener unas y, a las que se les suma un ruido
aleatorio de 2.5, con lo que se obtienen Y valores. Con la funcin polyfit
sobre x e Y, se pretende recalcular los coeficientes del polinomio original, segn
las siguientes instrucciones:
>> x=linspace(-8,2,10)';
>> A=1; B=5; C=6;
>> y=A*x.2+B*x+C;
>> Y=y+5*rand(length(x),1)-2.5;
>> Est=polyfit(x,Y,2); xx=x(l):0.1:x(length(x));
>> plot(x,y,'*',xx,Est(1)*xx.2+Est(2)*xx+Est(3))
>> text(-5,20,'Ac='), text(-4.5,20,num2str(Est(1)))
>> text(-5,18,'Bc='), text(-4.5,18,num2str(Est(2)))
>> text(-5,16,'Cc='), text(-4.5,16,num2str(Est(3)))

5.3. INTEGRACIN NUMRICA DE ECUACIONES


DIFERENCIALES
Las ecuaciones diferenciales que representan a los procesos reales suelen
ser ecuaciones diferenciales no lineales, impidiendo su integracin simblica,
de modo que es necesario recurrir a mtodos numricos, cuya solucin til ser
www.fullengineeringbook.net
una tabla de valores o la representacin grfica de stos.
MatLab dispone de las funciones ode23, ode45, ode113, ode15s,
ode23s, ode23t y ode23tb para la evaluacin numrica de ecuaciones di-
ferenciales. Las funciones ms utilizadas son ode23 y ode45, basadas en el
mtodo de Runge-Kuta de 2 y 4 parmetros respectivamente, algunas de las
otras funciones se utilizan para ecuaciones con rigideces, stiff.
Las funciones de integracin mencionadas son de paso de integracin va-
riable, evalundose en cada iteracin la solucin con el paso de integracin h,
h/2 y 2h, si los resultados no superan una tolerancia determinada, el paso de in-
tegracin se reduce a h/2, si la superan el paso de integracin se incrementa, y
as sucesivamente. En opciones de integracin se posibilita limitar el paso de
integracin a topes mximo y mnimo.
En ocasiones ocurre que integrando una ecuacin diferencial en un de-
terminado valor existen diferencias significativas en la solucin encontrada,
an reducindose sucesivamente el paso de integracin, que si se supera un
nmero determinado de reducciones, el sistema se para a causa de valores
singulares, pudiendo ser de utilidad disponer de una funcin de integracin de
ecuaciones diferenciales de paso fijo, definido por el usuario, para lo cual se
elabor la funcin odegil4, cuyo listado y aplicaciones se muestra ms ade-
lante.
Los mtodos numricos evalan nicamente ecuaciones diferenciales
de primer orden, de modo que para evaluar ecuaciones diferenciales de or-
den superior, han de definirse variables auxiliares para componer sistemas
58 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

de ecuaciones diferenciales de primer orden, equivalentes a las de orden su-


perior.
En el Captulo anterior se resolvi simblicamente la ecuacin:

d2y dy
2
+3 + 6y = 0 (5.2)
dt dt

para su resolucin numrica se realiza la siguiente transformacin:

z = y'

con lo que la ecuacin (5.2) se transforma en dos ecuaciones diferenciales de


primer grado:

z' = 3z 6y (5.3)
y' = z (5.4)

Se pretende integrar desde hasta , para lo cual es necesario conocer los


valores de y() y de dy(), que se obtienen segn:

www.fullengineeringbook.net
>>
>>
t=sym('t');
y=('2*15(1/2)/5*sin(15(1/2)/2*t)*exp(-3/2*t)');
>> dy=diff(y);
>> subs(y,t,-pi)

ans =

34.1795
>> subs(dy,t,-pi)
ans =
276.0593

A continuacin, se presenta el listado de la llamada a integracin de las


ecuaciones consideradas y su representacin grfica:

%--------------------- EcudifP.m -------------------


y0=[276.0593 34.1795]; t=-pi:.01:pi;
[t,y]=odegil4(Ecudif,t,y0,0.01);
plot(t,y(:,1),k:,t,y(:,2),k-)
xlabel('Tiempo'), ylabel('Funcion y derivada')
axis([-pi pi -100 277])
%---------------------------------------------------
APLICACIONES DE CLCULO NUMRICO 59

250

200
Funcin y derivada

150 y

100

50 y

50

100
3 2 1 0 1 2 3
Tiempo

Figura 5.4. Grfico del resultado de la integracin numrica.

www.fullengineeringbook.net
En el siguiente listado se muestra el programa de definicin de las ecua-
ciones a integrar:
function dy=Ecudif(t,y)
-------------------- Ecudif.m -----------------------------
% y''+3y'+6y=0
% es equivalente al sistema:
% z'=-3z-6y
% y'=z
%-----------------------------------------------------------
dy(1)=-3*y(1)-6*y(2); % y(1)=z
dy(2)=y(1); % y(2)=y
dy=[dy(1);dy(2)];
%-----------------------------------------------------------

5.3.1. Mtodo de Runge-Kuta

El mtodo ms comn de resolucin numrica de ecuaciones diferenciales


es el mtodo de Runge-Kuta de cuarto orden, cuya aplicacin se resume a
continuacin.
Sean las ecuaciones diferenciales tales como:
60 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

d y1
= 1 (t, y1 , y2 , yn )
dt

d y2
= 2 (t, y1 , y2 , yn )
dt

d yn
= n (t, y1 , y2 , yn )
dt

Su integracin se realiza evaluando los siguientes parmetros:

pk = h (tk , yk )

qk = h tk + , yk + k
h p
2 2

www.fullengineeringbook.net rk = h tk + , yk + k

h
2
q
2

sk = h (tk + h, yk + r )

Las ecuaciones integradas numricamente se obtienen mediante:

pk + 2 qk + 2 rk + sk
yk ,i+1 = yk ,i +
6

Para integracin de ecuaciones diferenciales por el mtodo de Runge-Kuta


de cuatro parmetros se elabor la funcin odegil4.m de paso de integracin
fijo:

function [t,y]=odegil4(f,x,y0,h)
%-------------------------------------------------------------
-------
% [t,y]=odegil4(f,x,y0,h), resuelve ecuaciones y'=f(t,y),
% x vector en linea de la variable independiente,
% y0 vector en linea de las condiciones iniciales,
% h paso de integracin.
%-------------------------------------------------------------
-------
x=x'; t=[]; t(1)=x(1); y=y0;
APLICACIONES DE CLCULO NUMRICO 61

N=(x(length(x))-x(1))/h; Ne=length(y0);
for I=1:N
T=t(I);
Y=y(I,:);
for J=1:Ne
p=h*feval(f,T,Y');
q=h*feval(f,T+h/2,Y'+p/2);
r=h*feval(f,T+h/2,Y'+q/2);
s=h*feval(f,T+h,Y'+r);
end
t(I+1)=t(1)+h*I ;
Inc=(p+2*q+2*r+s)/6;
y(I+1,:)=y(I,:)+Inc;
end
y=spline(t,y',x);
y=[reshape(y,Ne,length(x))]';
t=x;
%-------------------------------------------------------------

La aplicacin prctica se materializa en el siguiente ejemplo, en el que se


evala a modo de demostracin la integracin de 2t, 3t2, 4t3 y cos(x), cu-
yas soluciones son: t2, t3, t4 y seno(t).
Las ecuaciones diferenciales se definen en la funcin ecudif.m:

www.fullengineeringbook.net
function dy=ecudif(t,y)
dy(1)=2*t;
dy(2)=3*t.2;
dy(3)=4*t.3;
dy(4)=cos(t);
dy=[dy(1);dy(2);dy(3);dy(4)];

Para resolver el problema se lanza con las siguientes instrucciones:


>> x=[0:5]; % Valores de presentacin de resultados.
>> y0=[0 0 0 0]; % Condiciones iniciales.
>> h=0.01; % Paso de integracin.
>> tic % Comienzo de temporizacin.
>> [t,y]=odegil4('ecudif',x,y0,h); % Llamada a integracin.
>> toc % Final de la temporizacin.
elapsed_time =
1.2010

>> [t,y] % Presentacin de resultados.


ans =
t t2 t3 t4 seno(t)
0 0.0000 0.0000 0.0000 0.0000
1.0000 1.0000 1.0000 1.0000 0.8415
2.0000 4.0000 8.0000 16.0000 0.9093
3.0000 9.0000 27.0000 81.0000 0.1411
4.0000 16.0000 64.0000 256.0000 -0.7568
5.0000 25.0000 125.0000 625.0000 -0.9589
62 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

5.4. MODELO DINMICO DE UN TANQUE

Cuando un tanque se alimenta con un caudal variable de un lquido hasta


que se llena, y comienza a salir el lquido por rebose, surge una lmina del l-
quido por encima del borde de vertido. Esta lmina adquiere un espesor de-
pendiente del caudal de entrada y de las dimensiones del tanque. A su vez, la
altura de esa lmina provoca la cuanta del caudal de salida.
El caudal de entrada es una variable impuesta, entrada, en simulacin se le
asignarn diferentes valores para observar la respuesta del sistema. El volumen
indicar el estado del sistema. La altura de lmina y caudal de salida constitu-
yen la salida del sistema.
Siguiendo la nomenclatura del Anlisis de Sistemas, este sencillo proceso se
muestra en la Figura 5.5.

U
Y
X
Qi V Qe
h

www.fullengineeringbook.net
Figura 5.5. Esquema general de un sistema dinmico.

U representa la entrada al sistema, caudal de entrada.


X reprepresenta el estado del sistema, volumen del lquido en el tanque.
Y representa las salidas del sistema, altura de lmina en el tanque y caudal
de salida.
El esquema fsico del sistema considerado se representa en la Figura 5.6.

h
Qe

V
Qi
H

Figura 5.6. Esquema de un tanque con rebosadero lateral.


APLICACIONES DE CLCULO NUMRICO 63

Considerando que el lquido circulante es agua, el caudal que sale por un


vertedero rectangular, [m3/s], de longitud L [m], viene dado por la expresin de
Bazin, ecuacin (5.5), de uso general en Francia:

Q = L h1,5 2 g (5.5)

es un coeficiente que depende de la altura de lmina h [m], y de la pro-


fundidad del tanque H [m], segn la ecuacin (5.6).

0, 003 h2
= 0, 405 + 1 + 0, 55 (5.6)
h ( H + h)2

El caudal de salida, calculado con este procedimiento, es vlido para alturas


de lmina de 2,5 a 80 cm.
La variacin del volumen de agua en el tanque, es la diferencia de los
caudales de entrada al de salida, segn la ecuacin (5.7).

dV
= Qi Qe (5.7)
www.fullengineeringbook.net dt

La altura de la lmina ser el volumen total de agua entre la seccin, menos


la altura del rebosadero, segn la ecuacin (5.8):

V
h= H (5.8)
A

Para resolver el ejemplo numrico utilizando un programa en MatLab, se


dimensiona el tanque con rea de la base de 150 m2, longitud de vertedero 10
m y altura 4 m. El caudal medio de entrada se fija en 100 m3/h, con variacio-
nes de 50%, como es el caso de un reactor biolgico, alimentado con cau-
dales mnimos en horas nocturnas y mximo en horas diurnas. El tiempo de
anlisis para este ejemplo se fij en 20 minutos, suficiente para observar
esta dinmica.
El programa de clculo se estructura en tres partes, un programa y dos
funciones. La primera funcin calcula el estado del sistema, volumen de agua
en el tanque X, en funcin de la diferencia de caudales de entrada, impuesto, y
del de salida. La segunda funcin calcula las salidas Y, altura de lmina y cau-
dal de salida. En el programa principal se definen los datos de partida, desde el
que se llama a la primera funcin, y sta a la segunda, para finalmente realizar
los clculos requeridos y presentacin grfica de resultados.
64 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

El listado del programa principal es:

%--------------------- Vertedero.m -----------------------


%
clear, clf
global A H L Qe1 Qe2 Qe3 tf
%
% Nomenclatura
%---------------------------------------------------------
%
% A Superficie de la base
% H Altura del vertedero
% L Longitud del vertedero
% Qe1 Caudal del primer tramo
% Qe2 Caudal del segundo tramo
% Qe3 Caudal del tercer tramo
% V Volumen inicial de agua en el tanque
% t0, tf Tiempos inicial y final de anlisis
%
% X Volumen variable del agua
% U Caudal de entrada
% Y(:,1) Caudal de entrada
% Y(:,2) Caudal de salida
% Y(:,3) Altura de lmina

www.fullengineeringbook.net
%
% Parmetros y Estado Inicial
%---------------------------------------------------------
%
A=150; H=4; L=10; tf=20*60;
Qe1=50/3600; Qe2=100/3600; Qe3=150/3600; V=590;
%
% Integracin de la ecuacin de estado
%---------------------------------------------------------
%
Opciones=odeset('RelT',1e-7,'AbsTol',1e-7);
[t,X]=ode23('VerteX',[0,tf],V,Opciones);
%
% Clculo de las Salidas
%---------------------------------------------------------
%
Y=verteY(t,X);
%
% Representacin de resultados
%---------------------------------------------------------
%
T=t/60; tff=T(length(T));
%
subplot(311); plot(T,Y(:,1)*3600,'*-',T,Y(:,2)*3600,'o--')
axis([t0 tff -5 154]), ylabel('Cuadales (m3/h)')
%
subplot(312);plot(T,Y(:,3)*1000,'*-'),axis([t0 tff -1 14])
ylabel('Altura de Lmina (cm)')
APLICACIONES DE CLCULO NUMRICO 65

%
subplot(313); plot(T,X,'*-'), axis([t0 tff 590 603])
ylabel('Volumen del Agua (m3)'),xlabel('Tiempo (Minutos)')
%
%---------------------------------------------------------

La funcin que calcula el estado del sistema, volumen del tanque, es:
function dX=VerteX(t,X)
%--------------------- VerteX.m---------------------------
%
% Clculo del volumen del tanque
%---------------------------------------------------------
%
%
global A H L Qe1 Qe2 Qe3 tf
%
% Clculo del caudal de salida
%---------------------------------------------------------
%
Y=VerteY(t,X); U=Y(1,1);
%
% Variacin de volumen del tanque
%---------------------------------------------------------

www.fullengineeringbook.net 150
Caudales (m3 /h)

100

50

0
0 2 4 6 8 10 12 14 16 18 20
Altura de Lamina (cm)

10

0
0 2 4 6 8 10 12 14 16 18 20
Volumen del Agua (m3 )

600

595

590
0 2 4 6 8 10 12 14 16 18 20
Tiempo (Minutos)

Figura 5.7. Caudales de entrada, salida, altura de lmina y volumen de un tanque


con caudal de entrada escalonada.
66 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

%
dX=U-Y(1,2);
%
%---------------------------------------------------------

El listado de la funcin que calcula las salidas del sistema es:

function Y=VerteY(t,X)
%---------------------- VerteY.m -------------------------
%
% Clculo de Caudal de Salida y Altura de Lmina
%
%---------------------------------------------------------
%
%
global A H L Qe1 Qe2 Qe3 tf
%
N=length(t);
Y=zeros(N,2);
for i=1:N
% Caudal de Entrada
if t(i)<tf/3
Y(i,1)=Qe1;
elseif t(i)<2*tf/3
Y(i,1)=Qe2;
www.fullengineeringbook.net
else

end
Y(i,1)=Qe3;

h=X(i)/A-H;
if h<=0
Y(i,2)=0; Y(i,3)=0;
else
mu=0.405+0.003/h*(1+ 0.55*h2/(h+H)2);
% Caudal de salida y altura de lmina
Y(i,2)=mu*L*h*(2*9.8*h)(1/2);
Y(i,3)=h;
end
end
%---------------------------------------------------------

En la Figura 5.7 se representan los resultados de la simulacin obtenida,


caudal de salida, altura y volumen de lmina de un tanque alimentado con un
caudal de entrada escalonado.
Observando la Figura 5.7 se aprecia que la dinmica de este proceso no es
instantnea; al aumentar el caudal de entrada, la altura de lmina aumenta de
forma gradual, tardando en este ejemplo alrededor de 5 minutos en alcanzar el
estado estacionario. El caudal de salida, por ser funcin de la altura de la l-
mina, lleva una dinmica anloga.
APLICACIONES DE CLCULO NUMRICO 67

5.5. DETERMINACIN DE RETRASOS Y DERIVADAS

En los procesos de flujo, como en el caso precedente, hay una variable de


salida, caudal de salida, retrasado con respecto al caudal de entrada mientras
hay rebose. En otros ejemplos de la industria es muy frecuente encontrar va-
riables sometidas a retrasos, mostrndose a continuacin un mtodo aproxi-
mado de clculo numrico de variables afectadas por retrasos.
El clculo de una variable sujeta a un retraso se calcula teniendo en cuenta
que la transformacin de Laplace de un retraso puro es:

[ f(t )] = es F(s)

 Operador Transformada de Laplace.


Siendo: Tiempo de retraso.
s Variable compleja.

Las aproximaciones de retrasos ms comunes son las aproximaciones de


Pade de primer y segundo orden:

1 s
e s
2
www.fullengineeringbook.net
1+ s
2

2 s 2 6 s + 12
e s
2 s 2 + 6 s + 12

En procesos qumicos en los que ocurren tiempos muertos, como en una co-
lunma de rectificacin o retrasos hidrulicos, es ms til la aproximacin me-
nos comn:

1
e s
s + 1
n

La aproximacin ms sencilla de aplicar, a la vez que provoca error mni-


mo, salvo en los instantes iniciales, es la primera aproximacin mencionada.

y( s ) 1 2 s
= (5.9)
x(s) 1 + s
2
68 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Siendo: x(s) Variable de la que se realiza el retraso.


y(s) Variable igual a x(s) retrasada .

Realizando la transformacin inversa de la ecuacin (5.9), se obtiene:


y+ y' = x x'
2 2

De donde se obtiene la derivada de la variable retrasada:

2
y' = ( x y) x' (5.10)

Esta ecuacin integrada conduce a:

2
y( t ) = x ( t ) = ( x (t ) y(t )) dt x (t )

El clculo implicado en diagrama de bloques se muestra en la Figura 5.8.

www.fullengineeringbook.net
x(t)
x(t- )
2/

Figura 5.8. Diagrama de bloques de un retraso de primer orden.

Para el clculo de las variables retrasadas, haciendo uso de la integracin


numrica de la ecuacin (5.10), se necesitan conocer las derivadas de las va-
riables a las que se someten los retrasos.
Las derivadas se calculan basndose en la propiedad de que, en el dominio
de Laplace, multiplicar por s, al pasar al dominio del tiempo es derivar:

d (t )
 = s F( s) (0)
dt

f (0) se suele despreciar, ya que nicamente tiene influencia en los mo-


mentos iniciales. La aproximacin para el clculo de derivadas se muestra en la
APLICACIONES DE CLCULO NUMRICO 69

Figura 5.9, en donde a representa una variable a la que se le calcula su deriva-


da, representando b su derivada.

a s b
1+0,01 s

Figura 5.9. Diagrama de bloques del clculo aproximado de derivadas.

De la Figura 5.9, se obtiene:

a s = 0,01 s b + b

Pasando al dominio del tiempo se obtiene:

a' = 0,01 b' + b

Despejando b e integrando se obtiene:

(
b = 100 a b dt )
www.fullengineeringbook.net
Este es un procedimiento aproximado para obtener la derivada de una fun-
cin a travs de su integral.
Para visualizacin rpida de la aproximacin del clculo de variables re-
trasadas y derivadas, se elabora un programa de demostracin en el que la fun-
cin de entrada es el tiempo al cuadrado, y la funcin retrasada, el tiempo al
cuadrado retrasado en tres unidades.
En el programa principal, RetraLan.m se definen los parmetros de ope-
racin, tiempo, retraso, condicin inicial, integrador, la representacin grfica
y la tabla de resultados numricos.
%------------------RetraLan.m ----------------------

t=0:.1:12;
global tau
tau=3;
y10=0; y20=0;
[t,y]=odegil4('Retraso',t,[y10 y20],0.01);
Y=y(:,1); Yr=y(:,2);
subplot(211),plot(t,Y), grid
axis([0 12 -2 145])

ylabel('\fontsize{12} t2')
subplot(212),plot(t,Yr), grid
70 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

axis([0 12 -3 82])
ylabel('\fontsize{12} (t-3)2')
xlabel('\fontsize{12} t)
T=t(1):t(length(t));
Yn=round(spline(t,Y,T));
Ynr=round(spline(t,Yr,T));
[T Yn Ynr]
%---------------------------------------------------

En la funcin Retraso.m, se define la funcin de partida F, de la que se


obtiene, a modo de exposicin, el clculo de la derivada numrica,
dy(1)=100*(F-y(1)), de la que se obtiene la funcin retrasada y(2).

%-----------------Retraso.m ------------------------
function dy=Retraso(t,y)
global tau
F=t.2; % Funcion.
dy(1)=100*(F-y(1)); % Derivada de Funcion.
dy(2)=(y(1)-y(2))*2/tau-dy(1); % Funcion retrasada.
dy=[dy(1);dy(2)];
%---------------------------------------------------

Los resultados numricos y grficos se obtienen segn:


www.fullengineeringbook.net
>> RetraLan
ans =
t t2 (t-3)2
0 0 0
1 1 -1
2 4 -1
3 9 -1
4 16 0
5 25 4
6 36 9
7 49 16
8 64 25
9 81 36
10 100 49
11 121 64
12 144 81
APLICACIONES DE CLCULO NUMRICO 71

t2 100

50

0
0 2 4 6 8 10 12

80

60
(t3)2

40

20

0
0 2 4 6 8 10 12
t

Figura 5.10. Resultado grfico del clculo de retrasos.

www.fullengineeringbook.net
En el programa principal se hizo uso de la funcin spline, para obtener
datos interpolados. Su sintaxis es:
Yn=spline(X,Y,Xn)

Su funcionamiento se pone de manifiesto en el ejemplo siguiente: Se trata


de obtener los cuadrados de los nmeros enteros, por interpolacin de los cua-
drados de los intermedios correspondientes.
>> X=0.5:5
X =
0.5000 1.5000 2.5000 3.5000 4.5000
>> Y= X.2
Y =
0.2500 2.2500 6.2500 12.2500 20.2500
>> Xn=1:5
Xn=

1 2 3 4 5
>> Yn=spline(X,Y,Xn)

Yn =
1 4 9 16 25
72 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

La interpolacin as conseguida es perfecta.


En el programa principal se utiliz length, para suministrar el nmero de
elementos de un vector:
>> length(Xn)
ans =
5

5.6. AJUSTE DE DATOS EXPERIMENTALES


A UNA RECTA
El ajuste de datos a una recta es un caso particular de polyfit corres-
pondiente al primer grado. Aqu se muestra su clculo por varias razones:
para mostrar el manejo de datos, para practicar la evaluacin de sumatorios con
MatLab, y porque muchas funciones no lineales pueden transformarse en line-
ales, siendo la recta la mejor prueba de hiptesis de correlacin.
Los mejores coeficientes de la recta son los que consiguen hacer mnimo el su-
matorio de las desviaciones al cuadrado, de los puntos experimentales a la recta
postulada. El mtodo se resume en las ecuaciones (5.11), (5.12), (5.13) y (5.14).
La ecuacin de la recta buscada se expresa por la ecuacin (5.11).

www.fullengineeringbook.net Y=mX+b

Con datos procedentes de medidas experimentales hay una desviacin:


(5.11)

=YmXb

Elevando al cuadrado la desviacin, y extendiendo al conjunto de datos, se


obtiene el sumatorio de las desviaciones al cuadrado:

2 = Y 2 + m2 X 2 + N b2 2 m X Y 2 b Y + 2 m b X

Los coeficientes se determinan de las condiciones del mnimo:

d 2
= 2 m X 2 2 X Y 2 b X
dm
d 2
= 2 N b 2 Y + 2 m X
db

Igualando a cero, y simplificando estas expresiones, se obtiene un sistema


de dos ecuaciones con dos incgnitas:

m X 2 + b X = X Y
m X + N b = Y
APLICACIONES DE CLCULO NUMRICO 73

Resolviendo el sistema se obtienen los coeficientes de la recta:

Y X 2 X X Y
b= (5.12)
N X 2 ( X )2
N X Y X Y
m= (5.13)
N X 2 ( X )2

El grado de bondad del ajuste se analiza mediante el coeficiente de corre-


lacin, cuya expresin general toma la forma de:

(Yc Y )2
r=
(Y Y ) 2

El coeficiente de correlacin especfico para la recta es:

N X Y X Y
r= (5.14)
( N X ( X )2 ) ( N Y 2 ( Y )2 )
2

www.fullengineeringbook.net
Los datos con los que se va a trabajar se guardarn en un archivo separado,
con nombre alusivo a su contenido, formando una matriz a la que se la deno-
mina datos, en cuya primera columna estn las X, y en la segunda las Y:
%----------------- DatosAL.m -----------------------
datos=[1 6.23
2 8.58
3 10.84
4 12.48
5 13.35
6 15.81
7 18.87
8 20.83
9 21.82];
%---------------------------------------------------

El programa principal de ajuste a una recta por mnimos cuadrados, segn


las ecuaciones previas, es:
%----------------- Ajulineal.m ---------------------
DatosAL
X=datos(:,1);
Y=datos(:,2);
N=length(X);
SX=sum(X);
SX2=sum(X.2);
74 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

SY=sum(Y);
SY2=sum(Y.2);
SXY=sum(X.*Y);
b=(SY*SX2-SX*SXY)/(N*SX2-SX2);
m=(N*SXY-SX*SY)/(N*SX2-SX2);
r=(N*SXY-SX*SY)/((N*SX2-SX2)*(N*SY2-SY2)).5;
Yc=m*X+b;
plot(X,Y,'*',X,Yc,'-')
text(1.5,15,'r='), text(2,15,num2str(r))
text(1.5,17,'b='), text(2,17,num2str(b))
text(1.5,19,'m='), text(2,19,num2str(m))
xlabel('X'), ylabel(Y)
%---------------------------------------------------

22

20
m= 1,975
18
b= 4,4372
16
r= 0,99502

www.fullengineeringbook.net
14

12

10

6
1 2 3 4 5 6 7 8 9

Figura 5.11. Ajuste de datos a una recta.

En la Figura 5.11 se muestra el resultado numrico y grfico del ajuste de


datos experimentales a una recta; los datos se muestran con el signo *, y en
lnea continua la recta calculada.
Como r se aproxima a la unidad, indica excelente grado de ajuste.

5.6.1. Ajuste de funciones no lineales por linealizacin

Las funciones no lineales con uno o dos parmetros son susceptibles de li-
nealizacin por transformaciones de variables, para lograr nuevas variables re-
lacionadas linealmente, a las que se le aplica el ajuste lineal expuesto. Este tra-
tamiento de datos tiene la ventaja de que siempre es ms fcil elucidar si una
APLICACIONES DE CLCULO NUMRICO 75

distribucin de datos es lineal o no, con relacin a comparar distribuciones de


datos a curvas diferentes.
A continuacin se muestra un ejemplo de linealizacin del mbito de la des-
tilacin, operacin bsica de la Ingeniera Qumica.
En el equilibrio lquido-vapor de mezclas binarias, no azeotrpicas, la
composicin del vapor en funcin de la composicir del lquido sigue la ecua-
cin de uso restringido:

C R x (1 x )
y=x+ (5.15)
[ x + R (1 x )]2

en donde:
x Fraccin molar del componente ms voltil del lquido.
y Fraccin molar del componente ms voltil del vapor.
R Constante, que indica la posicin del mximo en la representacin y-x.
C Constante, que indica el valor del mximo en la representacin y-x.

Si en la fraccin de la ecuacin (5.15) se divide numerador y denominador


por (1 x)2, se obtiene:
www.fullengineeringbook.net C R
x
yx = 1 x (5.16)
2
x + R
1 x

Realizando los siguientes cambios de variables:

D=yx
A=CR
x
U=
1 x

la ecuacin (5.16) toma la forma de:

A U
D= (5.17)
(U + R)2

Realizando un nuevo cambio:

U
V2 =
D
76 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

la ecuacin (5.17) toma la forma de:


(U + R)2 = A V2
Ecuacin que, reordenada, toma la forma lineal:

R U
V= + (5.18)
A A
La ecuacin (5.18) relaciona linealmente V con U. Si la distribucin de los
datos (x,y) sometidos a las transformaciones expuestas siguen una trayectoria
lineal, indica que la ecuacin (5.15) es consistente.
De la recta obtenida se determinan su pendiente y ordenada en el origen, re-
lacionados con R y C segn:

1 1
m= =
A RC

R R
b= =
A RC

www.fullengineeringbook.net
Deshaciendo los cambios hechos, los coeficientes de el ecuacin (5.15) son:
1
C=
bm
b
R=
m
Con los valores as calculados de R y C, y los valores de x, se calculan unas
yc, que debern estar muy prximos a las y de partida.
De la bibliografa especializada se obtuvieron los datos de equilibrio iso-
brico, 760 mm de Hg. lquido-vapor de Benceno-nButanol, que se utilizan en
el programa Equilibrio.m, en donde se aplican los clculos expuestos.
%----------------- Equilibrio.m ----------------

datos=[.0064 .0201
.0087 .0285
.0098 .0318
.0103 .0495
.0111 .0568
.0152 .0666
.0198 .0778
.0208 .0939
.0250 .0984
.0331 .1295
.0488 .1898
APLICACIONES DE CLCULO NUMRICO 77

.0553 .2170
.0568 .2199
.0620 .2356
.0753 .2824
.0864 .3152
.1120 .3840
.1209 .4082
.1553 .4881
.1779 .5361
.1992 .5693
.2390 .6421
.2718 .6712
.2852 .6836
.3440 .7493
.3978 .7874
.4528 .8161
.5295 .8601
.5753 .8689];
%-----------------------------------------------
x=datos(:,1); y=datos(:,2);
D=yx; U=x./(1x); V=sqrt(U./D);
est=polyfit(U,V,1);
m=est(1); b=est(2);
subplot(221), plot(x,y,'o-')
subplot(222), plot(U,V,'o',U,m*U+b,'-')

www.fullengineeringbook.net
C=1/(b*m); R=b/m;

2
m= 1,152 R= 0,47756
b= 0,55015 C= 1,5779
V=(U/(yx))0,5

1,5

0,5
0,2 0,4 0,6 0,8 1 1,2
U=x/(1x)

0,8

0,6
y

0,4

0,2

0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0,45 0,5 0,55
x

Figura 5.12. Composicin benceno en la fase vapor frente a composicin de benceno


en la fase lquida.
78 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

yc=x+C*R*x.*(1-x)./(x+R*(1-x)).2;
subplot(212),plot(x,y,'o',x,yc,'-')
%-----------------------------------------------

En la Figura 5.12, en la parte superior, se muestran los datos sometidos a las


transformaciones indicadas, y la recta ajustada a estos datos, haciendo uso de
polyfit, observndose un buen grado de concordancia. En el grfico inferior se
representan los datos (x,y) de partida, representados por o, y en lnea continua se
muestra la ecuacin (5.15) a partir de las x y con los datos calculados R y C.

5.7. ANLIS ESPECTRAL

El procesado de seales digitales para anlisis espectral y series temporales,


se facilita con la funcin fft, fast fourier transform.
En el anlisis de seales con perturbaciones, el problema ms frecuente es
la determinacin de las frecuencias.
En el siguiente ejemplo se crea una seal compuesta, a la que se le aade un
ruido aleatorio de cuanta anlogo a la seal.
El perodo de muestreo se toma en milisegundos, creando una base de
tiempo de 0 a 0,5 segundos.

www.fullengineeringbook.net
>> t=[0:0.001:0.5]';
>> size(t)

ans =

501 1

Se crea una seal sinusoidal compuesta de 50, 100 y 200 Hz.

>> x=sin(2*pi*50*t)+sin(2*pi*100*t)+sin(2*pi*200*t);

Esta seal se distorsiona con un ruido aleatorio de 0 a 3.

y=x+3*rand(length(t),1);

La representacin grfica de y frente a t conduce a una representacin en la


que la periodicidad est oculta.
El objetivo de este tratamiento es encontrar las frecuencias de esta seal dis-
torsionada, para ello se procede con estos datos distorsionados, como datos de
partida, (t,Y) para calcular las frecuencias.
A las y a analizar, se les aplica la transformada de Fourier.

Y=fft(y);
APLICACIONES DE CLCULO NUMRICO 79

Ahora se calcula la potencia espectral o energa, mediante:


P=Y.*conj(Y);
>> size(P)
ans =

5001 1
La frecuencia se forma mediante la instruccin:
>> f=1000*(1:256)/512;
>> size(f)
ans =

1 256
>> f=f';
>> size(f)

ans =
256 1
x=sin(2 pi 50 t)+sin(2 pi 100 t)+sin(2 pi 200 t)

5
y=x+3 rand(length(t),1)

2
4
1 3

www.fullengineeringbook.net 0
2
1
1 0
1
2 2
0 0,05 0,1 0 0,05 0,1
Tiempo (seg.) Tiempo (seg.)
x 10 4
7
Potencia Espectral

6
5
4
3
2
1
0
50 100 150 200 250
Frecuencia

Figura 5.13. Anlisis de frecuencias.

Las representaciones grficas se consiguen con:


>> subplot(221), plot(t(1:50),x(1:50))
>> ylabel('x=sin(2pi50t)+sin(2pi100t)+sin(2pi200t)')
80 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

>> xlabel('Tiempo')
>> subplot(222), plot(t(l:50),y(1:50))
>> ylabel('y=x+3rand')
>> xlabel('Tiempo')
>> subplot(212), plot(f,P(1:256))
>> axis([ 0 500 0 70000])
>> ylabel('Potencia espectral')
>> xlabel('Frecuencia')

En la Figura 5.13 se muestran las variables relacionadas en los clculos ex-


puestos, destacando claramente las potencias espectrales en las frecuencias
buscadas sobre el rizado de la lnea de base.

5.8. EVITANDO LA DIVISIN POR CERO Y REBOSE

La exactitud con que funciona MatLab es eps, cuyo valor es 2,2204 1016.
Al dividir una expresin por una variable x, que en un proceso de clculo
tomase el valor 0, provoca un warning Divide by zero. Este inconveniente
se obvia mediante:
x=x+(x==O)*eps;

www.fullengineeringbook.net
Este procedimiento nicamente cambia el valor de x, cuando su valor es 0,
asignndole el valor de eps.
Los nmeros ms grande y ms pequeo, en valor absoluto, que utiliza Mat-
Lab son realmax y realmin, de valores 1,7977 10308 y 2,2251 10308, res-
pectivamente.
Para evitar que una variable x, no exceda de un valor lmite dado de satu-
racin o rebose, X, se procede segn:
x=x.*(abs(x) < X)+X.*(abs(x)>X);
6
Simulink

6.1. INTRODUCCIN A SIMULINK

www.fullengineeringbook.net

Figura 6.1. Ventana de paquetes de libreras de Simulink.


81
82 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Simulink es un software para simulacin, anlisis y modelado de sistemas


dinmicos, que acompaa a MatLab, en forma de toolbox. Su interface grfica
permite ver los modelos.

Figura 6.2. Libreras de bloques de operadores continuos.

Simulink soporta sistemas lineales y no lineales, continuos, discretos e h-

www.fullengineeringbook.net
bridos. Simulink viene con muchos ejemplos a modo de demos para facilitar su
uso.

Figura 6.3. Libreras de bloques no continuos.

En la Figura 6.1 se presentan los mens de las libreras que suministran con-
juntos de bloques operacionales, cuyos contenidos se muestran en las Figu-
ras 6.2, a 6.8, con los que se compondrn los modelos deseados.
SIMULINK 83

Figura 6.4. Bloques generadores de seales.

La notacin matemtica de los bloques es la utilizada en los tratados de


Control Automtico, en los que se utiliza la variable compleja s, que tiene, en-
www.fullengineeringbook.net
tre otras, la propiedad de que multiplicar por s representa derivar, y dividir por
s representa integrar.

Figura 6.5. Libreras de funciones y tablas.

En los diagramas de bloques lo que sale es el producto de lo que entra por


el contenido del bloque.
84 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Figura 6.6. Libreras de bloques matemticos.

www.fullengineeringbook.net

Figura 6.7. Libreras de seales y sistemas.


SIMULINK 85

Figura 6.8. Libreras de salidas.

6.2. CONSTRUCCIN DE UN MODELO MUY SENCILLO

A continuacin se describe paso a paso cmo se elabora el esquema Simu-


link del modelo ms sencillo, la integracin de 2 t, con condicin inicial 0,
www.fullengineeringbook.net
cuyo resultado es t2.

1. Desde la ventana de comandos de MatLab se ejecuta simulink, o se


activa pulsando sobre su icono en la barra de tareas, obtenindose la
ventana de libreras de Simulink
2. De la ventana de libreras se consigue la ventana de construccin del
modelo, pulsando File, New, Model, con lo que se obtiene una
nueva ventana vaca, para construir ah el modelo deseado.
3. Se despliega Sources de la ventana de libreras. Se arrastra o copia
Clock a la ventana del modelo. Clock suministrar t, tiempo conti-
nuo.
4. Se abre la ventana Math de la ventana de libreras, y se copia Gain,
ganancia, a la ventana del modelo. Gain se coloca delante de Clock.
Para conectar Gain a Clock, se posiciona el ratn en el ngulo de sa-
lida de Clock, manteniendo pulsado el botn izquierdo del ratn, se
desplaza a la entrada de Gain. De este modo Clock y Gain quedan
unidos. Pulsando dos veces sobre Gain se seleciona su valor a 2. La sa-
lida de Gain es su entrada multiplicada por su valor seleccionado. La
salida de Clock suministra t, y la salida de Gain suministra 2 t.
5. Pueden ponerse comentarios informativos donde se desee haciendo do-
ble click en el lugar elegido para pasar a modo texto. Para cambiar ta-
maos y tipos de letra, se coloca el puntero del ratn encima del texto, al
pulsar el botn derecho se accede a Propiedades del texto.
86 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Figura 6.9. Esquema de la integracin de 2 t.

6. Desplegando Continuous de la ventana de libreras, se copia In-


tegrator a la ventana del modelo. Se une la salida de Gain con la
entrada de Integrador. Pulsando dos veces sobre Integrador, se
abre una ventana de propiedades del bloque integrator, en este caso
nicamente se selecciona la condicin inicial a 0, valor por defecto.
7. La salida del integrator, es la integral de su entrada, por tanto, con l se
logra el objetivo buscado, t2.
www.fullengineeringbook.net
8. Para ver la integracin conseguida, es necesario llevar esa salida a un
visualizador, X Y graph, que se halla en la librera Sinks, desde
donde se copia a la ventana del modelo, cuyas entradas corresponden a
las salidas del reloj, X, y del integrador, Y.
9. Los mtodos y parmetros de integracin, son seleccionables desde la
ventana del modelo en Simulation parameters, del men Si-
mulation.
10. Para ejecutar la simulacin se activa Start del men Simulation
de la ventana del modelo. Para ver el resultado grfico se pulsa dos ve-
ces en X Y graph.
11. Para llevar variables del modelo de simulacin al entorno MatLab, se
utiliza el mdulo To workspace de la librera Sinks. Este mdulo
se conecta en la salida del bloque del que se desea guardar sus datos;
pulsando dos veces sobre este mdulo, se accede a la asignacin del
nombre de la variable y al formato en que se desean guardar los datos.

6.3. SOLUCIN SIMULINK DE UNA ECUACIN DIFERENCIAL


Para representar un modelo, ecuaciones diferenciales, se abre el espacio de
representacin mediante Nuevo, del men Archivo de la ventana de libreras
de Simulink, hacia donde se arrastrarn los iconos operacionales desde las li-
breras correspondientes, para componer el modelo mediante las conexiones y
relleno con los parmetros pertinentes.
SIMULINK 87

En la Figura 6.10 se representa el diagrama de bloques de la ecuacin


(5.2); y su solucin grfica, en la Figura 6.11.

Figura 6.10. Esquema analgico de la resolucin de la ecuacin diferencial


de segundo grado.

www.fullengineeringbook.net

Figura 6.11. Resultado grfico de la integracin de la ecuacin diferencial


de segundo grado.
88 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Como la ecuacin diferencial es de segundo grado, es necesario integrar dos


veces. El primer integrador tiene por entrada la derivada segunda, y su salida
ser la derivada primera, que ser la entrada del segundo integrador, para su-
ministrar la primitiva en funcin del tiempo.
La entrada del primer integrador es el segundo miembro de la ecuacin di-
ferencial expresada como:

d2y dy
2
= 3 6 y
dt dt

6.4. SIMULACIN DINMICA DE UN ECUALIZADOR

Al ecualizador, tanque de regulacin de caudal y amortiguador de oscila-


ciones de concentracin de influentes, en procesos de aguas, llega una co-
rriente de caudal y concentracin de sustancias variables, y se pretende deter-
minar el volumen variable ocupado por el lquido en el ecualizador cuando se
extrae un caudal de valor medio de las ltimas 24 horas, media mvil, a la vez
que determinar la concentracin de las sustancias, sustrato, variables en la sa-
lida.
www.fullengineeringbook.net

Qi(t)
Ci(t)

Volumen
de seguridad

Variacin
de volumen V(t) C(t)

Volumen
inicial Q
C(t)

Figura 6.12. Esquema y variables de un ecualizador.


SIMULINK 89

La variacin de volumen de lquido en el ecualizador est determinado, por


lo que entra y por lo que sale en un instante:

dV
= Qi Q (6.1)
dt

Si en el tanque ecualizador no hay reaccin qumica alguna, conservacin


de componentes, la concentracin de cada componente que se mezcla con el
contenido del tanque de volumen variable sigue la ecuacin:

= Ci Q +
dC Qi dV C
(6.2)
dt V dt V

La variacin de volumen, puede calcularse analticamente, si se considera


que el caudal de entrada es sinusoidal, tal como:

2
Qi (t ) = Q + Qv sin t (6.3)
T

www.fullengineeringbook.net
El volumen del lquido en el ecualizador estar dado por:

t
2 t
V = V (0) + Qv
sin
0 T
(6.4)

Cuyo resultado es:

Qv T 2
V = V (0) + 1 cos t (6.5)
2 T

Ecuaciones en las que V(0), representa el contenido del tanque en el instante


inicial; T, el perodo de una oscilacin completa; y Qv, representa la amplitud de
la oscilacin del caudal y C la concentracin.
En la Figura 6.13 se muestra el esquema de clculo Simulink para resolver
la ecuacin (6.1). En el bloque denonimado Qi, se suministran los datos del cau-
dal de entrada frente al tiempo, correspondientes a un ciclo, mediante la Re-
peating table, que pide una tabla de valores, tiempo-valor, correspon-
dientes a un ciclo completo, en este caso:

[0 2 4 6 8 10 12 14 16 18 20 22]
[211 168 155 162 220 330 460 533 475 370 290 250]
90 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Figura 6.13. Esquema Simulink para el clculo de la evolucin del volumen contenido
en un ecualizador con caudal variable.

El bloque Mux permite conducir por una lnea varias seales. En el ejemplo,
Mux se utiliza para realizar operaciones en los bloques f(u), y para represen-
tar varias seales en un grfico.

2500
Qi
Q

www.fullengineeringbook.net 2000
Volumen
Caudales, (m3/h), Volumen (m3)

1500

1000

500

0
0 20 40 60 80 100 120
Tiempo, (Horas)
Figura 6.14. Resultado grfico del clculo de la evolucin del volumen contenido
en un ecualizador con caudal variable.

En el bloque Qm(t-24), se realiza la operacin u(l)/u(2), la seal


u(1) corresponde a la integral del caudal retrasado, y u(2) corresponde al
tiempo retrasado.
SIMULINK 91

El bloque Qi(t-24) suministra el caudal de entrada retrasado en 24 horas;


durante las primeras 24 horas, suministra un valor de designacin inicial. El
bloque Vol, integra el caudal retrasado, para obtener el volumen aportado
por el caudal retrasado, que dividido entre t 24 produce el caudal medio re-
trasado en las ltimas 24 horas.
El bloque denominado Limitador, tiene por objeto limitar posibles valo-
res de rebose, por valores iniciales muy altos o muy bajos. El bloque Volumen
integra la diferencia del caudal de entrada menos el caudal medio retrasado.

www.fullengineeringbook.net
Figura 6.15. Esquema Simulink para el clculo del volumen y composicin
de un ecualizador, con alimentacin de caudal y concentracin variables.

Los resultados de la simulacin de los caudales y del volumen ocupado en el


tanque se presentan en la Figura 6.14, en la que se observa que el caudal medio
de las ltimas 24 horas, caudal de salida, en el comienzo de la simulacin, tiene
un valor constante hasta llegar al tiempo de 24 loas, seguido de un valor cons-
tante, lmite superior, y a continuacin oscila, con tendencia hacia un valor
constante, debido a que el caudal de entrada se repite de la misma manera.
El volumen del lquido sufre una primera aportacin muy grande, debido a
que en el comienzo, el caudal purgado est en un valor mnimo, observndose
que tiende a una oscilacin constante.
En la Figura 6.15 se muestra el esquema de clculo Simulink para resolver
las ecuaciones (6.1) y (6.2); cabe destacar nicamente que el integrador C va
provisto de limitadores, a fin de evitar valores anmalos iniciales que enlente-
cen el clculo en alcanzar el estado estacionario.
El bloque Ci suministra los datos de la concentracin de entrada de un su-
puesto componente qumico o sustrato:

[0 2 4 6 8 10 12 14 16 18 20 22]
[150 130 89 109 165 195 398 413 364 270 215 174]
92 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

La Figura 6.16 muestra la reduccin de la variabilidad de la concentracin


de salida del ecualizador, lnea continua, frente a la concentracin de entrada, l-
nea discontinua.

450
C
Ci
400

350
Conc. Entrada/salida (mg/l)

300

250

200

150

100

www.fullengineeringbook.net 50
0 20 40 60 80 100 120 140 160 180 200
Tiempo (Horas)
Figura 6.16. Concentracin de salida del ecualizador, lnea continua,
frente a concentracin de entrada.

Las Estaciones Depuradoras de Aguas Residuales que se vienen instalando


desde hace unos aos, incluyen el tanque de homogeneizacin o ecualizacin,
que si es de tamao suficiente y con buen control de operacin, ahorrar ener-
ga, diluir posibles txicos o permitir su by-pass a esta zona segura, evita-
r los problemas de las variaciones bruscas de caudal y cortribuir a la estabi-
lidad del proceso biolgico posterior.
Bibliografa

[1] Brian D. Hanhn. Essential MatLab for scientists and engineers. Buter-
worth-Heinemann. (2002).
[2] Brian D. Hunt. A guide to MatLab for beginners and experienced users.
Cambridge Univ. Press. (2001).
www.fullengineeringbook.net
[3] Duane Hanselman, Bruce R. Littlefield. Mastering MatLab 6. The MatLab
curriculum series. Prentice Hall. (2000).
[4] James B. Dabney; Thomas L. Harman. Mastering simulink 4 S/E. The
MatLab curriculum series. Prentice Hall. (2001).
[5] Edward B. Magrab. Engineers guide to MatLab. Prentice Hall. (2000).
[6] Rudra Pratrap. Getting starting with MatLab, Version 6: Quick introduc-
tion. Oxford University Press. (2001).
[7] Stephen J. Chapman. MatLab programming for engineers. Brooks-Cole
Pub. Co. (2001)
[8] Gil Rodrguez M. Clculos avanzados en procesos de descontaminacin de
aguas. Consejo Superior de Investigaciones Cientficas. (2003).

93
www.fullengineeringbook.net
ndice alfabtico

..., 21 continue, 40
LATEX, 19, 45 conv, 16
TEXtos en grficos, 45
date, 20
www.fullengineeringbook.net
Ajuste de datos, 56
Ajuste lineal, 72
datenum, 20
datestr, 20
angle, 12
ans, 12 datetick, 44
area, 48 datevec, 20
ascii, 22, 23 deconv, 16
atan2, 13 demo, 1
axes, 44 Derivadas, 27, 67
axis, 43, 44 de polinomios, 17
det, 15, 26
bar, 41 diary, 23
bar3, 46 diff, 27, 32
Bazin, ecuacin, 63 double, 28
break, 40 dsolve, 29, 32

case, 40 else, 36, 37


ceil, 22 elseif, 37
clear, 5 eps, 80
clf, 44, 54 errorbar, 41
clock, 20 etime, 21
Color, 47, 48 ezplot, 27
Complejos, nmeros, 12
conj, 12, 79 factor, 27

95
96 INTRODUCCIN RPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERA

Factorial, 11 laplace, 30, 32, 33


feval, 10 LaPrint, 46
fft, 78 leftarrow, 48
fix, 11 legend, 44
floor, 22 length, 55, 72
fminbnd, 52 limit, 31
fmins, 51 line, 44, 54
fminsearch, 53 LineWidth, 44, 48
fontsize, 45, 48 linspace, 2, 13
for-end, 10, 38 load, 21
format, 5, 6
fplot, 41 loglog, 41
logspace. 13
Fracciones simples, desarrollo, 17 long, 6
Funciones del tiempo, 20 lookfor, 9
function, 8 lsqcurvefit, 55
fzero, 62
magic, 26
global, 10, 69 Maple V, 25, 31, 32
grid, 8 matlabpath, 19
gtext, 44 Matriz, 13
www.fullengineeringbook.net
help, 1, 9
max, 8
mpower, 15
hold on/off, 44 mux, 90

if else end, 36 now, 20


ilaplace, 30 num2str, 57
imag, 12
inline, 11 ode113, 57
input, 35 ode15s, 57
int, 27 ode23, 57
integrador, 86 ode23s, 57
Integrales, 27 ode23t, 57
de polinomios, 18 ode23tb, 57
interp1, 18 ode45, 57
Interpolacin odegil4, 57, 60
cubic, 18 optimset, 55
polinomial, 18 Orden de ejecucin, 19
spline, 18, 71 otherwise, 40
inv, 15
invlaplace, 33 path, 19
pie, 41
keywords, 4 plot, 8, 41
plot3, 41
NDICE ALFABTICO 97

plotmatrix, 41, 43 Simblico, clculo, 25


plotyy, 41 simplify, 27
polar, 43 size, 4
Polinomios, 16 solve, 28
poly, 16 spline, 71
polyder, 17 sqrt, 6, 7, 21
polyfit, 56 stairs, 41
polyint, 18 stem, 41
polyval, 16 subplot, 43, 44
power, 15 subs, 58
pretty, 26 sum, 55
switch, 40
quad, 51 sym, 25
quadl, 51 syms, 26

rand, 21 taylor, 19, 31


rat, 5 text, 44, 54, 55
real, 12 title, 44
realmax, 80 Transposicin, 7
realmin, 80
recursion, 11 variables, 3
www.fullengineeringbook.net
reshape, 14
residue, 17
Vector, 13
Vertedero, 63
Retrasos, 67
return, 9 what, 21
root, 16 which, 19
round, 29, 70 while-end, 38
Runge-Kuta, 57, 59 who, 2, 3
whos, 2, 3
save, 21 workspace, 2
scripts, 9
semilogx, 41 xlabel, 44
semilogy, 41
short, 5 ylabel, 44
www.fullengineeringbook.net
www.fullengineeringbook.net
www.fullengineeringbook.net