Está en la página 1de 112

Subido por:

Libros de Ingeniería Química y más

https://www.facebook.com/pages/Interfase-
IQ/146073555478947?ref=bookmarks

Si te gusta este libro y tienes la posibilidad,


cómpralo para apoyar al autor.
INTRODUCCIÓN RÁPIDA
A MATLAB Y SIMULINK
PARA CIENCIA E INGENIERÍA
MANUEL GIL RODRÍGUEZ
Científico Titular del Consejo Superior
de Investigaciones Científicas (CSIC)

INTRODUCCIÓN RÁPIDA
A MATLAB Y SIMULINK
PARA CIENCIA E INGENIERÍA
© Manuel Gil Rodríguez, 2003

Reservados todos los derechos.

«No está permitida la reproducción total o parcial de este libro,


ni su tratamiento informático, ni la transmisión de ninguna
forma o por cualquier medio, ya sea electrónico, mecánico,
por fotocopia, por registro u otros métodos, sin el permiso
previo y por escrito de los titulares del Copyright.»

Ediciones Díaz de Santos, S. A.


Doña Juana I de Castilla, 22.
28027 MADRID

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

ISBN: 84-7978-596-9
Depósito legal: M. 43.971-2003

Diseño de cubierta: Angel Calvete


Fotocomposición e impresión: Fernández Ciudad, S. L.
Encuadernación: Rústica-Hilo, S. L.
Impreso en España
Índice

Presentación ........................................................................................... XI

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


1.1. Introducción ........................................................................... 1
1.2. Comenzando .......................................................................... 1
1.3. Espacio de trabajo .................................................................. 2
1.4. Variables ................................................................................ 3
1.5. Formato de números .............................................................. 5
1.6. Programas ............................................................................... 7
1.7. Funciones ............................................................................... 8
1.7.1. Reglas de construcción de funciones .......................... 9
1.7.2. Funciones en línea ...................................................... 11
1.7.3. Ejemplo de función recursiva ..................................... 11
1.8. Números complejos ............................................................... 12
1.9. Manejo de vectores y matrices ............................................... 13
1.10. Polinomios .............................................................................. 16
1.10.1. Multiplicación y división de polinomios .................. 16
1.10.2. Desarrollo en fracciones simples .............................. 17
1.10.3. Derivadas de polinomios .......................................... 17
1.10.4. Integración de polinomios ........................................ 18
1.10.5. Interpolación 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. CÁLCULO SIMBÓLICO ............................................................... 25


2.1. Introducción ........................................................................... 25
2.2. Objetos y expresiones simbólicas .......................................... 25
2.3. Ejemplos de cálculo simbólico .............................................. 27
2.3.1. Derivadas e integrales ................................................. 27
2.3.2. Sistemas de ecuaciones ............................................... 28
2.3.3. Ecuaciones diferenciales.............................................. 29
2.4. Transformación de Laplace e inversa .................................... 30
2.5. Límites ................................................................................... 31
2.6. Series de Taylor y Mac Laurin .............................................. 31
2.7. Invocando a Maple V.............................................................. 31
2.7.1. Transformación de Laplace e inversa con Maple V .... 31
2.7.2. Resolución de ecuaciones diferenciales con Maple V. 32
2.7.3. Resolución de ecuaciones diferenciales con la trans-
formación 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
3.5. continue .................................................................................. 40
3.6. break ....................................................................................... 40
3.7. switch end ............................................................................... 40

4. GRÁFICOS EN MATLAB ............................................................. 41


4.1. Tipos de gráficos .................................................................... 41
4.2. Utilidades de gráficos ............................................................ 44
4.3. TEXtos en gráficos ................................................................ 45
4.4. LaPrint ................................................................................... 45
4.5. Estilos de líneas, marcas y colores ......................................... 47
4.6. area ......................................................................................... 48

5. APLICACIONES DE CÁLCULO NUMÉRICO............................. 51


5.1. Integración numérica ............................................................. 51
5.2. Mínimos, ceros y optimización............................................... 51
5.2.1. Mínimos y ceros de funciones .................................... 51
5.2.2. Resolución de ecuaciones no lineales ......................... 52
5.2.3. Minimización y ajuste de datos .................................. 53
5.3. Integración numérica de ecuaciones diferenciales ................. 57
5.3.1. Método de Runge-Kuta ............................................... 59
5.4. Modelo dinámico de un tanque .............................................. 62
5.5. Determinación de retrasos y derivadas .................................. 67
5.6. Ajuste de datos experimentales a una recta ........................... 72
ÍNDICE IX

5.6.1. Ajuste de funciones no líneales por linealización ....... 74


5.7. Anális Espectral ..................................................................... 78
5.8. Evitando la división por cero y rebose ................................... 80

6. SIMULINK ...................................................................................... 81
6.1. Introducción a Simulink ......................................................... 81
6.2. Construcción de un modelo muy sencillo .............................. 85
6.3. Solución Simulink de una ecuación diferencial ..................... 86
6.4. Simulación dinámica de un ecualizador ................................ 88

BIBLIOGRAFÍA ..................................................................................... 93

ÍNDICE ALFABÉTICO .......................................................................... 95


Presentación

MatLab (MATrix LABoratory) comenzó siendo un programa interactivo de


análisis integrado, especializado en cálculos matriciales. En muy poco tiempo
tuvo una gran difusión, facilitado por su potencia de cálculo y facilidad de uso.
La primera versión de MatLab, de éxito generalizado, se lanzó el 3 de fe-
brero de 1989 para MS-DOS, Mac y Workstations, era la versión 3.5 y venía 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 cálculo, de Bessel, de complejos,
transformadas e inversas de Laplace y Fourier, filtros para procesado de seña-
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 disponía de potentes herramientas de
representaciones gráficas, ya en 2-d como 3-d, que en el transcurso de las su-
cesivas versiones se vieron muy potenciadas, permitiendo exportar los cuadros
gráficos 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, Ingeniería, Postgrado o profesionales que deseen familiarizarse, en un
tiempo mínimo con las principales herramientas de cálculo suministradas por
MatLab a través de ejercicios prácticos a lo largo de este manual.

Manuel GIL RODRÍGUEZ

XI
1
Primeros pasos en MatLab

1.1. INTRODUCCIÓN

MatLab, desde las primeras versiones dispuso de help y demo, para ini-
ciación rápida. La información suministrada a través de los menús de estas ayu-
das, correspondientes a las últimas versiones, crecieron de forma exponen-
cial, siendo de utilidad práctica disponer de un libro resumen de MatLab, en
donde se encuentren los comandos de uso más frecuente, a la vez que se mues-
tren sus aplicaciones prácticas en ejercicios, desde lo más sencillo, hasta otros
de mayor complejidad.
Este Capítulo 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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

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 características:

>> 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


AjusNL Datos EcudifP
AjusN1Fun Ecudif Fun
MAT-files in the current directory D:\MatLab\work
Datos
MDL-files in the current directory D:\MatLab\work
Bcont Bfuntab BnoLineal Bseñsis
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 versión 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

De ese modo se crean variables numéricas, 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) % Dimensión 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 dígitos 0 a 9 y el signo «_»,
distinguiéndose mayúsculas de minúsculas.
2. Los nombres de las variables han de comenzar por una letra y no deben
contener espacios en blanco.
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 sólo 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 información adicional mediante help clear.

1.5. FORMATO DE NÚMEROS

MatLab presenta los resultados numéricos en varios formatos, según se ex-


presa a continuación:

>> 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Al mostrar resultados numéricos, MatLab sigue estas dos reglas:

1. MatLab intenta mostrar números enteros. Si el entero es muy grande, se


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

A continuación se muestran ejemplos demostrativos de formatos numéri-


cos:
>> sqrt(2)

ans =

1.4142

>> format long


>> sqrt(2)

ans =

1.41421356237310

>> 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-
tensión «.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 inglés 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 raíces 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-
gún:
% ----------------Numeros.m -----------------------------------
x=1:10; % Crea un vector de 1 a 10 de 1 en 1. Vector en lí-
nea.
x=x'; % Transposición. Vector en columna.
x=[x,1../x,x.ˆ2,sqrt(x)]; % Matriz de 4 columnas.
% ------------------------------------------------------------

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


las sentencias se finalizaron con «;», no se muestra ningún valor numérico. 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 líneas de los comandos previamente


ejecutadas.
8 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

1.7. FUNCIONES

El otro tipo de archivos utilizado por MatLab son las funciones, cuya pri-
mera característica 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 básicas y las distribuidas de forma separada para aplicaciones es-
pecíficas, 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 función.
y=1../((x–1).ˆ2+0.1)+1../((x–3).ˆ2+0.2)–5;
%-------------------------------------

Para evaluar Fun gráficamente, 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 % Representación 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 gráficamente.
Hay funciones del sistema o construidas por un usuario, que toman diferen-
te número de argumentos de entrada que de salida. Así la función max, toma un
vector de argumentos y puede suministrar una o dos salidas, según se use:
>> A = [1 2 1 5 2 3];
>> max(A) % Suministrará el valor máximo de A.
ans =
5
>> [X, i] = max(A) % X, valor máximo, i posición del máximo.
X =
5
i =
4
PRIMEROS PASOS EN MATLAB 9

–2

–4

–6
–2 –1 0 1 2 3 4 5 6

Figura 1.2. Representación gráfica de Fun.

1.7.1. Reglas de construcción de funciones

1. El nombre de la función y del archivo deben ser idénticos.


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

>> help Fun


----------------Fun.m -------------
Esto es un ejemplo
de una función.

6. Una función termina al encontrar un retun o al llegar a la última línea


de la función.
7. Si una función llama a un programa, éste es evaluado en el espacio de
trabajo de la función y no en el workspace de MatLab.
8. Cada función tiene su espacio de trabajo separado del de MatLab, de
modo que la conexión entre estos ambientes se realiza a través de las va-
riables de entrada y salida de la función.
10 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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


trabajo, se declaran variables globales donde se necesiten mediante la
instrucción global.
>> global X a b % Declaración 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 % Creación directa de F.

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

Se consigue el mismo resultado con:


>> eval('Fun(2)')
ans =
-3.2576
>> Fun(2)
ans =
-3.2576
>> F(2)=@cos % Creación directa de F(2).

F =

@Fun @cos

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


primero evalúa directamente lo que se invoca, mientras que eval llama al in-
terpretador completo de MatLab. La diferencia en tiempo de ejecución 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 línea


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 función recursiva


En muchas aplicaciones se presenta la recursividad, función que en su in-
terior se llama a sí misma. El ejemplo más secillo de recursividad es el cálculo
del factorial de un número:
N! = N × (N – 1)!
definiendo 1! como 1.
La función Factorial.m, toma un número de entrada, y suministra como sa-
lida su factorial:
function f = Factorial(N)
% Esta función calcula el factorial de la parte
% entera de un número.
n = fix(N); % n toma la parte entera de N.
if n > 1
f = n*Factorial(n – 1);
else
f = 1;
end

Esta sencilla función toma un número y calcula el factorial de su parte


entera.
>> Factorial(3.3)
ans =
6
12 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

1.8. NÚMEROS COMPLEJOS

MatLab admite operaciones con números complejos, permitiendo usar in-


distintamente la i y la j, según 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)

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 más sencilla de crear un vector es mediante el uso de [], vector


en línea, 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 =

3 5 7 8 9

También 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 10ˆ0 a
10ˆ2.

x =

1.000 3.1623 10.0000 31.6228 100.000

Con el siguiente ejemplo se muestra la creación y manejo de matrices:


>> x = 0:4

x =

0 1 2 3 4

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


% hace que la exponenciación
y = % sea elemento a elemento.
0 1 4 9 16

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


% vectores.
14 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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] % Añadir una línea a una ma-
% triz.
B =
0 0
1 1
2 4
3 9
4 16
5 25

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


% con 3 líneas y 4 columnas.
C =
0 3 0 9
1 4 1 16
2 25 4 50
>> C(2,:)=[] % Eliminar la 2a línea. Los
% dos puntos indican para
C = % todos los valores de esa
% dimensión.
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

>> Aˆ2 % 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 =

-1

>> inv(A)

ans =

-5.0000 2.0000
3.0000 -1.0000

Las exponenciaciones, elemento a elemento y matricial, también se realizan


con los comandos power y mpower, según:

>> 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 = xˆ2
y
7 18
6 19
16 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

1. 10. POLINOMIOS

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

>> C = [1 -5 6];

Las raíces de este polinomio se obtienen, mediante:

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

poly sobre las raíces devuelve los coeficientes del polinomio:


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

polyval evalúa el polinomio sobre un valor:


>> polyval(C,5)
ans =
6

1.10.1. Multiplicación y división de polinomios


La multiplicación de dos polinomios, Pol1 = x2 + 2x + 3 por Pol2 = x – 1,
se efectúa 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 división 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 raíces de cada denominador, y t los coeficientes del término indepen-
diente:
5 x2 − 20 x + 9 3 2
= + +5
x2 − 5 x + 4 x − 4 x −1

Si se conocen los numeradores, las raíces de los denominadores y los tér-


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, raíces y


términos 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

1.10.4. Integración 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 integración
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

1.10.5. Interpolación polinomial

Matlab permite varios modos de interpolación, relacionados y descritos


en help interp1; a continuación se muestran unos ejemplos:
>> x = [2 4 6];
>> y = power(x,2); % Por defecto se utiliza el méto-
do de
>> y5 = interp1(x,y,5) % interpolación lineal.

y5 =

26

>> y5c = interp1(x,y,5,'cubic') % Interpolación cúbica.

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 ejecución de programas.
Al invocar un comando, MatLab lo busca, y ejecuta el que primero coinci-
da con el nombre invocado, según el siguiente orden:

1. Si es una variable del workspace.


2. Si es una función 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 función 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


primera línea de comentarios de los archivo.m encontrados en el matlab-
path.
>> lookfor Fun.m
Fun.m: %---------------- Fun.m --------------------

1.13. LATEX

La función latex(A) devuelve la representación LATEX de una expresión


simbólica:

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

A =
1 - x + 1/2*xˆ2 - 1/6*xˆ3 + 1/24*xˆ4 - 1/120*xˆ5
>> 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

1.14. FUNCIONES DEL TIEMPO

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


caracteres, 12-Oct-1498, como una variable numérica, 739476 o como
un vector, 1789 07 14 0 0 0.
La función 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[año mes día hora minutos se-


gundos].
now devuelve la fecha y hora en un número, datestr convierte una fecha
numérica en string, datevec individualiza los componentes de fecha y hora,
datenum convierte una fecha en un número:
>> now

ans =

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 función 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


temporización 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 continuación en la siguiente línea.


La ejecución de las raíces cuadradas de 1 a 1 millón, en un Pentium III a
866 Mhz, con Linux Suse 8.2 y Student MatLab 12, tarda 3.62 segundos.
La función etime devuelve el tiempo, en segundos, transcurrido entre
dos valores del tiempo:
>> etime(Tiempo,clock)

ans =

-1.2835e + 03

1.15. INTERCAMBIO DE DATOS

A partir de la versión 6, taınbién numerada como 12, MatLab presenta


una ventana de Historia de Comandos, en donde se listan las órdenes efectua-
das, de modo que en una sesión 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, según:

>> 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

>> 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:

>> 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, añadiendo 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 sesión 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:
2
Cálculo simbólico

2.1. INTRODUCCIÓN

MatLab se caracterizó desde un principio por ser muy potente en cálculo


numérico, mientras que el cálculo simbólico fue incorporado como una toolbox,
cuando MathWorks, empresa que comercializa MatLab, se extendió interna-
cionalmente.
La Symbolic Math Toolbox es una colección de herramientas para MatLab,
que se utilizan para manejar y resolver expresiones simbólicas.
Las herramientas simbólicas disponibles más usadas son; combinar, sim-
plificar, factorizar, derivar, integrar, límites, resolución de sistemas de ecua-
ciones algebraicas o diferenciales, transformaciones integrales, la mayoría de
las operaciones del álgebra lineal...
Estas herramientas de cálculo simbólico son parte del programa Maple V,
comercializado por Waterloo Maple Software Inc.

2.2. OBJETOS Y EXPRESIONES SIMBÓLICAS


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

x =
x

25
26 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Un objeto numérico puede convertirse en simbólico según:


>> M=magic(2) % M, variable numérica.
M =
1 3
4 2
>> N=sym(M) % N, variable simbólica.
N =
[1, 3]
[4, 2]
>> syms a b c d % Definición de simbólicos.
>> Mat=[a,b;c,d]
Mat =
[a, b]
[c, d]
>> det(Mat) % Cálculo del determinante.
ans =
a*d-b*c
>> M=(a-b)/(c+d)
M =
(a-b)/(c+d)
>> pretty(M)
a - b
c + d

Para la simplificación 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. Representación gráfica de y.


CÁLCULO SIMBÓLICO 27

2.3. EJEMPLOS DE CÁLCULO SIMBÓLICO

2.3.1. Derivadas e integrales

Se crea la función y, dependiente de t, según:


>> 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 representación gráfica de y, para valores de -π a π, se consigue con la


instrucción:
>> ezplot(y,[-pi pi])

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


gún:

>> 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 representación gráfica de dy se obtiene, como en el caso anterior, me-


diante ezplot.
La integral de la derivada es la propia función, por lo tanto, integrando dy,
ha de obtenerse una expresión idéntica 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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. Representación gráfica de dy.

2.3.2. Sistemas de ecuaciones

Los sistemas de ecuaciones se resuelven mediante la instrucción solve, to-


mando como argumentos el primer miembro de las ecuaciones igualadas a 0,
según:

x+ y= 5
x – y = –1
ez·x = 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 solución analítica, solve devuelve


una expresión numérica, que se ejecuta mediante double, transformación a
doble precisión.
CÁLCULO SIMBÓLICO 29

2.3.3. Ecuaciones diferenciales

La función dsolve calcula las soluciones simbólicas 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 operación 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 derivación de y', se puede componer con y e y', la si-
guiente ecuación diferencial:

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

La solución a esta ecuación diferencial se obtiene según:


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

yc =

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

La especificación de las constantes iniciales es opcional, a continuación 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

2.4. TRANSFORMACIÓN DE LAPLACE E INVERSA

La transformación de Laplace calcula la integral:


 (s) = ∫0 f (t) ⋅ e – s⋅t 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)
(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)
CÁLCULO SIMBÓLICO 31

2.5. LÍMITES

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

ans =
-inf

El límite 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))
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 función maple, que toma
como argumento la expresión con sintaxis de Maple V, mediante las instruc-
ciones genéricas:

r=maple('Sentencia Maple')
r=maple('Función',Argl,Arg2,...)

2.7.1. Transformación de Laplace e inversa con Maple V

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


transformación de Laplace, es necesario cargar previamente el paquete de
transformaciones integrales with(inttrans):
>> maple('with(inttrans)') % Se carga el paquete de ...
% transformaciones integrales.
32 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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. Resolución de ecuaciones diferenciales con Maple V

Para resolver la ecuación diferencial:

ÿ + 3 y· + 6y = 0

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)


CÁLCULO SIMBÓLICO 33

2.7.3. Resolución de ecuaciones diferenciales con la transformación


de Laplace

Para resolver la ecuación 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')

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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

{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
3
Sentencias de control de flujo

3.1. input

La forma de input, se indica en los ejemplos siguientes, según se trate de


variables literales o numéricas:
>> R=input('> Cuál 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

3.2. if - else - end

El salto condicional de flujo más sencillo, se construye de la siguiente ma-


nera:
if condición
comandos
end

Los comandos entre if y end, se ejecutarán, si la condición es verdad,


uno. Si la condición es falsa, cero, se puentearán 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

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
condición es falsa.
>> if 'a'=='a', 'hola', end

ans =

hola

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

Para evaluar dos alternativas, la construcción if - else - end toma la


siguiente construcción:
if condición
Ejecución de comandos de esta zona,
si la condición es verdad
else
Ejecución de comandos de esta zona,
si la condición es falsa
end

Si hubiese tres alternativas, la construcción sería:


SENTENCIAS DE CONTROL DE FLUJO 37

if condición 1

Ejecución de instrucciones si la condición 1 es ver-


dad
elseif condición 2
Ejecución de instrucciones si la condición 2 es ver-
dad
elseif condición 3
Ejecución de instrucciones si la condición 3 es ver-
dad
else
Ejecución de instrucciones si ninguna condición 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 cuántas botellas se desean e indique el precio unitario y el total del
gasto.

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


C=input('Cuantas Botellas ?');
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 continuación se muestra la ejecución de este programa:


>> Vino

Cuantas Botellas ? 8

Pu =

5.5000

Pt =

44
38 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

3.3. while - end

La sentencia while - end funciona según:

while Condición Comandos end

Se ejecutarán los comandos de este bucle, mientras la Condición sea ver-


dad.
Se expone a continuación la generación de una tabla que suministre los in-
versos, cuadrados y raíces 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);
% ---------------------------------------------

>> 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 subíndices, su forma genérica es:
for I = vector
Comandos
end

A continuación se muestra la generación 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, creándo-
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 cálculo vuelve a cabecera,
donde se comprueba si I rebasa o no el valor límite, 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 ejecutarán las sen-
tencias del interior del for, se continuará con lo que venga después de end.
A continuación se muestra una estructura de un for dentro de otro, anida-
miento, para ejercitar el funcionamiento de los subíndices.
Para cada variación 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 varía de 1 a 3 al descender por cada columna, y la


J varía en horizontal, del principio al final de cada línea, tomando siempre los
40 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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


para la cuarta y así en cada línea.
En la primera línea del programa Tabla2 se crea la matriz A sin contenido,
para seguridad, siendo equivalente a clear A.
Se ejecuta Tabla2 según:
>> 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 cálculo


pasa a la siguiente iteración del end de ese bucle.

3.6. break

Si aparece un break en un lazo for end o while end, el cálculo se


puentea a la siguiente instrucción 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 expresión:
switch Expresión % Escalar o de caracteres.
case Valor 1
Sentencias % Se ejecutan si Expresión igual Valor 1.
case Valor 2
Sentencias
.
.
.
otherwise
Sentencias % Se ejecutan para Valor no contemplado.
end
4
Gráficos en MatLab

4.1. TIPOS DE GRÁFICOS

Desde las primeras versiones, MatLab traía suficientes utilidades gráficas,


que en las versiones posteriores fueron incorporando cantidades ingentes de
nuevas facilidades. Se reseñan los principales tipos de construcción de gráficos:

— fplot. Para representación de funciones: fplot('Fun',[-pi pi]).


— plot. Representación de x frente a y: plot(x,y).
— plotyy. Representación en los ejes opuestos de ordenadas: plotyy
(x1,y1,x2,y2).
— plotmatrix. Matriz de representaciones: plotmatrix(x,y).
— bar. Representación con barras: bar(x,y,ancho,tipo).
— stairs. Representación en escalones: stairs(x,y).
— errorbar. Representación acompañada de un parámetro de desviación:
errorbar(x,y,e).
— stem. Representación discreta: stem(x,y).
— pie. Representación en tarta: pie(x).
— plot3. Representación en 3-d: plot3(x,y,z).
— semilogy. Representación semilogarítmica en el eje y: semilogy
(x,y).
— semilogx. Representación en el eje x: semilogx(x,y).
— loglog. Representación logarítmica en los dos ejes: loglog(x,y).

En las Figuras 4.1 y 4.2, se representan los principales tipos de gráficos


mencionados.
41
42 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

6 5

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

–2

–4

–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 gráficos.

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

0 0

–2

–4

–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 gráficos.


GRÁFICOS 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 representación 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];
>> plotmatrix(x,A,'h-')

Título del gráfico


6
4
Función

2
0
–2
–4
1
Seno de X
Seno de X

0,5

–0,5

–1

20
Tangente de X
0

–20

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

Figura 4.3. Matriz de gráficos.


44 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

35

30

25

20

15

10

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

Figura 4.4. Gráfico en 3-d.

La representación en 3-d, se efectúa según el ejemplo:

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

4.2. UTILIDADES DE GRÁFICOS

Las principales utilidades de los gráficos 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 ratón.
• title('Título del gráfico').
• axis([xmin xmax ymin ymax]).
• hold on/off, para que el siguiente gráfico se presente sobre el anterior.
• subplot(abc), para representar una matriz de gráficos.
• axes('Posición',[x y],'XColor','r','YColor','b')
• clf, borrar figuras.
• legend, para insertar leyendas, legend(leyenda1,leyenda2..., posi-
ción)
• datetick(eje,formato de fecha), eje puede ser 'x', 'y' o 'z', el forma-
to de fecha es un número del 0 al 28, 29 posibilidades de expresar las fe-
chas, véase help datetick.
GRÁFICOS EN MATLAB 45

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

19%

44%

31%
Figura 4.5. Gráfico en tarta.

4.3. TEXTOS EN GRÁFICOS

Para poder mostrar ecuaciones en cuadros gráficos, ya sea en las leyendas


de los ejes, o en otras partes del cuadro, MatLab incorpora un subconjunto de
comandos LATEX, y una colección de símbolos de uso frecuente en las ecua-
ciones, entre otros se encuentra el alfabeto griego, minúsculas y mayúsculas.
El conjunto de caracteres puede verse en la documentación en línea de
MatLab, en la sección de Handle Graphics.
La sintaxis de LATEX utiliza los argumentos entre llaves, «{ }». Los
subíndices deben ir precedidos de «_», los superíndices van precedidos de
«^». Para conseguir el símbolo de las letras griegas, ha de escribirse su nombre
en inglés precedido de «\», con la primera letra en minúscula o mayúscula.
En el siguiente ejemplo se muestra cómo poner varias líneas de texto en las
leyendas de los ejes, cómo incorporar una ecuación en un eje y en el interior de
cuadros gráficos.

>> 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

2
y= μ ϖ ⋅ sin(x) ⋅ e -Φ ⋅ x
y=sin(x) ⋅ e - Φ ⋅ x

–1

–2

–3

–4

–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 gráficos.

4.4. LAPRINT

Al incluir cuadros gráficos procedentes de MatLab, en textos LATEX, es-


calados ya con resizebox o scalebox, suele haber recortes indeseados y
desproporción en los textos de los cuadros gráficos 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. Gráfico de barras, bar3(peaks(8)).


GRÁFICOS EN MATLAB 47

LaPrint es un archivo, laprint.m, cuya versión más 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
idéntica, 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 gráfico 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 LÍNEAS, MARCAS Y COLORES


Los estilos de líneas, marcas y colores se presentan en la Tabla 4.1.

Símbolo Color Símbolo Marca Símbolo Estilo de línea

b Azul · · – Continua
g Verde o o : Punteada
r Rojo x x –· Trazo-Punto
c Cian + + –– Trazo-Trazo
m Magenta * *
y Amarillo s ⵧ
k Negro d 䉫
w Blanco ∧ 䉭
M 䉮
< 䉰
> 䉯
p 夽
h 夹

Cuadro 4.1. Características de las líneas gráficas.

En la Figura 4.8 se muestra un ejemplo de modificación de atributos de lí-


neas como son: color de línea, 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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,25⋅abs(t)
0,4
sin(t)⋅e 0,25⋅ abs(t)

0,2

–0,2

–0,4

–0,6

–10 –5 0 5 10
t

Figura 4.8. Gruesos de líneas, color...

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

4.6. area

area es una función análoga a plot, rellena el espacio comprendido en-


tre 0 y una línea gráfica. En la Figura 4.9, se rellena la superficie limitada entre
0 y Fun(x), gráfico superior, y entre –5 y Fun(x), gráfico inferior:
GRÁFICOS EN MATLAB 49

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

–2

–4

–6
–2 –1 0 1 2 3 4 5

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

–2

–4

–6
–2 –1 0 1 2 3 4 5

Figura 4.9. Relleno de áreas en gráficos.

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

14%

25%

19% Valor destacado

Figura 4.10. Gráfico en tarta en 3-d.


5
Aplicaciones de cálculo numérico

5.1. INTEGRACIÓN NUMÉRICA

Matlab dispone de dos funciones para integración, quad, basado en la regla


de Simpson, y quadl, evaluación mediante la técnica de cuadratura de Lo-
batto.
En el siguiente ejemplo se muestra el cálculo de la integral de la función
Fun, previamente definida, desde el límite inferior 0, hasta 5.

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


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

-10.0814

5.2. MÍNIMOS, CEROS Y OPTIMIZACIÓN

Las principales funciones de MatLab para optimización son: fminbnd, que


encuentra el mínimo de una función de una variable; fminsearch, corres-
pondiente a fmins de versiones anteriores, calcula mínimos 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. Mínimos y ceros de funciones


Para encontrar un mínimo de la función, Fun, entre 0 y 3, se procede se-
gún:
51
52 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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

x =
2.0351

La siguiente instrucción busca un cero en las proximidades de 4:


>> fzero('Fun',4)

ans =
3.0965
>> fzero(F,4)

ans =
3.0965

5.2.2. Resolución de ecuaciones no lineales

La resolución de ecuaciones no lineales se efectúa con la instrucción


fsolve, cuya aplicación se realiza según el ejemplo que sigue.

Sea el sistema:

Sea el sistema x+y=5 ⎫



x − y = –1 ⎬

e z– x = 7, 389⎭

La solución se consigue con el programa EcusP.m


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

En la fución Ecus se definen las ecuaciones a resolver, según el listado:


% --------------- Ecus.m ----------------------------
function q=Ecus(p)
x=p(1); y=p(2); z=p(3);
q(1)=x+y–5;
q(2)=x–y+1;
q(3)=exp(x.*z)–7.389;
q=[q(1);q(2);q(3);
% ------------------------------------------------------------
APLICACIONES DE CÁLCULO NUMÉRICO 53

La ejecución de EcusP produce el siguiente resultado:


> EcusP
Optimización terminated successfully:
Relative function value changing by less than OPTIONS.TolFun

x =

2.000
3.000
1.000

>>

5.2.3. Minimización y ajuste de datos

El objetivo de fminsearch es encontrar un mínimo de una función mul-


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

En este caso, se llama a la función a minimizar, pHAjusMin, suministran-


do a continuación los valores iniciales de los parámetros a minimizar, siendo
opcional añadir una variable de opciones, seleccionables con optimset.
La aplicación y funcionamiento de fminsearch se comprende fácilmen-
te con el siguiente ejemplo de ajuste de datos experimentales a una función,
ecuación (5.1).
En el proceso de lodos activos, la tasa de crecimiento de los lodos es fun-
ción del pH, datos experimentales.
Las reacciones de biodegradación, actividad microbiana, transcurren a un
pH óptimo, próximo 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 específica de generación de lodos se re-
presenta adecuadamente por una función 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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 ecuación (5.1), se presenta a continuación:

% --------------- 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 función a minimizar es:


function q=pHAjusMin(p)
%----------------- pHAjusMin.m --------------------
% Función llamada por pHAjus.m
%--------------------------------------------------
APLICACIONES DE CÁLCULO NUMÉRICO 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 función pHAjusMin.m, se define q, parámetro a minimizar; en este


caso minimizar la suma de los cuadrados de las desviaciones de los μ experi-
mentales a los calculados.
La función lsqcurvefit es más específica para el ajuste de datos; se eje-
cuta según:
X=lsqcurvefit('FUN',XO,X,Y,LI,LS,Opciones)

Se invoca a la función FUN, en la que se define la ecuación de ajuste, XO re-


presenta los valores iniciales de partida, X e Y son los datos experimentales, LI
representa el límite inferior de los valores de los parámetros a calcular, LS es el
límite superior, y Opciones es un conjunto de valores en los que se definen
parámetros del cálculo, siendo opcional su especificación.
A continuación se muestra un ejemplo de la utilización de lsqcurvefit:

>> 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ˆ{-B·X}')

La función 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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
A·sen X·e –B·X

–1

–2

–3
–8 –6 –4 –2 0 2 4 6 8
X

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 función polyfit, cuya utilización se
muestra en el ejemplo siguiente.

30

25

20 Ac=0,95551
Bc= 4,6119
Cc= 5,6322
x 2+5⋅x+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 CÁLCULO NUMÉRICO 57

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


una función polinómica 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 función polyfit
sobre x e Y, se pretende recalcular los coeficientes del polinomio original, según
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. INTEGRACIÓN NUMÉRICA DE ECUACIONES


DIFERENCIALES
Las ecuaciones diferenciales que representan a los procesos reales suelen
ser ecuaciones diferenciales no lineales, impidiendo su integración simbólica,
de modo que es necesario recurrir a métodos numéricos, cuya solución útil será
una tabla de valores o la representación gráfica de éstos.
MatLab dispone de las funciones ode23, ode45, ode113, ode15s,
ode23s, ode23t y ode23tb para la evaluación numérica de ecuaciones di-
ferenciales. Las funciones más utilizadas son ode23 y ode45, basadas en el
método de Runge-Kuta de 2 y 4 parámetros respectivamente, algunas de las
otras funciones se utilizan para ecuaciones con rigideces, stiff.
Las funciones de integración mencionadas son de paso de integración va-
riable, evaluándose en cada iteración la solución con el paso de integración h,
h/2 y 2h, si los resultados no superan una tolerancia determinada, el paso de in-
tegración se reduce a h/2, si la superan el paso de integración se incrementa, y
así sucesivamente. En opciones de integración se posibilita limitar el paso de
integración a topes máximo y mínimo.
En ocasiones ocurre que integrando una ecuación diferencial en un de-
terminado valor existen diferencias significativas en la solución encontrada,
aún reduciéndose sucesivamente el paso de integración, que si se supera un
número determinado de reducciones, el sistema se para a causa de valores
singulares, pudiendo ser de utilidad disponer de una función de integración de
ecuaciones diferenciales de paso fijo, definido por el usuario, para lo cual se
elaboró la función odegil4, cuyo listado y aplicaciones se muestra más ade-
lante.
Los métodos numéricos evalúan ú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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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


perior.
En el Capítulo anterior se resolvió simbólicamente la ecuación:

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

para su resolución numérica se realiza la siguiente transformación:

z = y'

con lo que la ecuación (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 según:
>> 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 continuación, se presenta el listado de la llamada a integración de las


ecuaciones consideradas y su representación gráfica:

%--------------------- 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 CÁLCULO NUMÉRICO 59

250

200
Función y derivada

150 y’

100

50 y

–50

–100
–3 –2 –1 0 1 2 3
Tiempo

Figura 5.4. Gráfico del resultado de la integración numérica.

En el siguiente listado se muestra el programa de definición 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. Método de Runge-Kuta

El método más común de resolución numérica de ecuaciones diferenciales


es el método de Runge-Kuta de cuarto orden, cuya aplicación se resume a
continuación.
Sean las ecuaciones diferenciales tales como:
60 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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 integración se realiza evaluando los siguientes parámetros:

pk = h ⋅ ƒ(tk , yk )

qk = h ⋅ ƒ ⎛ tk + , yk + k ⎞
h p
⎝ 2 2⎠

rk = h ⋅ ƒ ⎛ tk + , yk + k ⋅⎞
h q
⎝ 2 2 ⎠

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

Las ecuaciones integradas numéricamente se obtienen mediante:

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

Para integración de ecuaciones diferenciales por el método de Runge-Kuta


de cuatro parámetros se elaboró la función odegil4.m de paso de integración
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 integración.
%-------------------------------------------------------------
-------
x=x'; t=[]; t(1)=x(1); y=y0;
APLICACIONES DE CÁLCULO NUMÉRICO 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 aplicación práctica se materializa en el siguiente ejemplo, en el que se


evalúa a modo de demostración la integración de 2t, 3t2, 4t3 y cos(x), cu-
yas soluciones son: t2, t3, t4 y seno(t).
Las ecuaciones diferenciales se definen en la función ecudif.m:

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 presentación de resultados.
>> y0=[0 0 0 0]; % Condiciones iniciales.
>> h=0.01; % Paso de integración.
>> tic % Comienzo de temporización.
>> [t,y]=odegil4('ecudif',x,y0,h); % Llamada a integración.
>> toc % Final de la temporización.
elapsed_time =
1.2010

>> [t,y] % Presentación de resultados.


ans =
t tˆ2 tˆ3 tˆ4 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

5.4. MODELO DINÁMICO DE UN TANQUE

Cuando un tanque se alimenta con un caudal variable de un líquido hasta


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

U
Y
X
Qi V Qe
h

Figura 5.5. Esquema general de un sistema dinámico.

U representa la entrada al sistema, caudal de entrada.


X reprepresenta el estado del sistema, volumen del líquido en el tanque.
Y representa las salidas del sistema, altura de lámina en el tanque y caudal
de salida.
El esquema físico 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 CÁLCULO NUMÉRICO 63

Considerando que el líquido circulante es agua, el caudal que sale por un


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

Q = μ ⋅ L ⋅ h1,5 ⋅ 2 ⋅ g (5.5)

μ es un coeficiente que depende de la altura de lámina h [m], y de la pro-


fundidad del tanque H [m], según la ecuación (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 válido para alturas


de lámina de 2,5 a 80 cm.
La variación del volumen de agua en el tanque, es la diferencia de los
caudales de entrada al de salida, según la ecuación (5.7).

dV
= Qi − Qe (5.7)
dt

La altura de la lámina será el volumen total de agua entre la sección, menos


la altura del rebosadero, según la ecuación (5.8):

V
h= −H (5.8)
A

Para resolver el ejemplo numérico 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 biológico, alimentado con cau-
dales mínimos en horas nocturnas y máximo en horas diurnas. El tiempo de
análisis para este ejemplo se fijó en 20 minutos, suficiente para observar
esta dinámica.
El programa de cálculo se estructura en tres partes, un programa y dos
funciones. La primera función calcula el estado del sistema, volumen de agua
en el tanque X, en función de la diferencia de caudales de entrada, impuesto, y
del de salida. La segunda función calcula las salidas Y, altura de lámina y cau-
dal de salida. En el programa principal se definen los datos de partida, desde el
que se llama a la primera función, y ésta a la segunda, para finalmente realizar
los cálculos requeridos y presentación gráfica de resultados.
64 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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 análisis
%
% X Volumen variable del agua
% U Caudal de entrada
% Y(:,1) Caudal de entrada
% Y(:,2) Caudal de salida
% Y(:,3) Altura de lámina
%
% Parámetros y Estado Inicial
%---------------------------------------------------------
%
A=150; H=4; L=10; tf=20*60;
Qe1=50/3600; Qe2=100/3600; Qe3=150/3600; V=590;
%
% Integración de la ecuación de estado
%---------------------------------------------------------
%
Opciones=odeset('RelT',1e-7,'AbsTol',1e-7);
[t,X]=ode23('VerteX',[0,tf],V,Opciones);
%
% Cálculo de las Salidas
%---------------------------------------------------------
%
Y=verteY(t,X);
%
% Representación 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 Lámina (cm)')
APLICACIONES DE CÁLCULO NUMÉRICO 65

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

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

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 lámina y volumen de un tanque


con caudal de entrada escalonada.
66 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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

El listado de la función que calcula las salidas del sistema es:

function Y=VerteY(t,X)
%---------------------- VerteY.m -------------------------
%
% Cálculo de Caudal de Salida y Altura de Lámina
%
%---------------------------------------------------------
%
%
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;
else
Y(i,1)=Qe3;
end
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*hˆ2/(h+H)ˆ2);
% Caudal de salida y altura de lámina
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 simulación obtenida,


caudal de salida, altura y volumen de lámina de un tanque alimentado con un
caudal de entrada escalonado.
Observando la Figura 5.7 se aprecia que la dinámica de este proceso no es
instantánea; al aumentar el caudal de entrada, la altura de lámina aumenta de
forma gradual, tardando en este ejemplo alrededor de 5 minutos en alcanzar el
estado estacionario. El caudal de salida, por ser función de la altura de la lá-
mina, lleva una dinámica análoga.
APLICACIONES DE CÁLCULO NUMÉRICO 67

5.5. DETERMINACIÓN 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, mostrándose a continuación un método aproxi-
mado de cálculo numérico de variables afectadas por retrasos.
El cálculo de una variable sujeta a un retraso se calcula teniendo en cuenta
que la transformación de Laplace de un retraso puro es:

[ f(t – τ)] = e–s · τ · F(s)

 Operador Transformada de Laplace.


Siendo: τ Tiempo de retraso.
s Variable compleja.

Las aproximaciones de retrasos más comunes son las aproximaciones de


Pade de primer y segundo orden:
τ
1− ⋅s
e − s⋅τ
≈ 2
τ
1+ ⋅s
2

τ 2 ⋅ s 2 − 6 ⋅ τ ⋅ s + 12
e − s⋅τ ≈
τ 2 ⋅ s 2 + 6 ⋅ τ ⋅ s + 12

En procesos químicos en los que ocurren tiempos muertos, como en una co-
lunma de rectificación o retrasos hidráulicos, es más útil la aproximación me-
nos común:

1
e − s⋅τ ≈
⎛ τ ⋅ s + 1⎞
n

⎝n ⎠

La aproximación más sencilla de aplicar, a la vez que provoca error míni-


mo, salvo en los instantes iniciales, es la primera aproximación mencionada.
τ
y( s ) 1 − 2 ⋅ s
= (5.9)
x(s) 1 + τ ⋅ s
2
68 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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


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

Realizando la transformación inversa de la ecuación (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 ecuación integrada conduce a:

2
y( t ) = x ( t − τ ) = ∫ ( x (t ) − y(t )) ⋅ dt − x (t )
τ

El cálculo implicado en diagrama de bloques se muestra en la Figura 5.8.

x(t)
x(t- )
2/ –

–1

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

Para el cálculo de las variables retrasadas, haciendo uso de la integración


numérica de la ecuación (5.10), se necesitan conocer las derivadas de las va-
riables a las que se someten los retrasos.
Las derivadas se calculan basándose 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 aproximación para el cálculo de derivadas se muestra en la
APLICACIONES DE CÁLCULO NUMÉRICO 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 cálculo 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 )
Este es un procedimiento aproximado para obtener la derivada de una fun-
ción a través de su integral.
Para visualización rápida de la aproximación del cálculo de variables re-
trasadas y derivadas, se elabora un programa de demostración en el que la fun-
ción de entrada es el tiempo al cuadrado, y la función retrasada, el tiempo al
cuadrado retrasado en tres unidades.
En el programa principal, RetraLan.m se definen los parámetros de ope-
ración, tiempo, retraso, condición inicial, integrador, la representación gráfica
y la tabla de resultados numéricos.
%------------------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} tˆ2')
subplot(212),plot(t,Yr), grid
70 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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 función Retraso.m, se define la función de partida F, de la que se


obtiene, a modo de exposición, el cálculo de la derivada numérica,
dy(1)=100*(F-y(1)), de la que se obtiene la función 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 numéricos y gráficos se obtienen según:


>> RetraLan
ans =
t tˆ2 (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 CÁLCULO NUMÉRICO 71

t2 100

50

0
0 2 4 6 8 10 12

80

60
(t–3)2

40

20

0
0 2 4 6 8 10 12
t

Figura 5.10. Resultado gráfico del cálculo de retrasos.

En el programa principal se hizo uso de la función 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 números enteros, por interpolación 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

La interpolación así conseguida es perfecta.


En el programa principal se utilizó length, para suministrar el número 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 cálculo por varias razones:
para mostrar el manejo de datos, para practicar la evaluación de sumatorios con
MatLab, y porque muchas funciones no lineales pueden transformarse en line-
ales, siendo la recta la mejor prueba de hipótesis de correlación.
Los mejores coeficientes de la recta son los que consiguen hacer mínimo el su-
matorio de las desviaciones al cuadrado, de los puntos experimentales a la recta
postulada. El método se resume en las ecuaciones (5.11), (5.12), (5.13) y (5.14).
La ecuación de la recta buscada se expresa por la ecuación (5.11).

Y=m·X+b (5.11)

Con datos procedentes de medidas experimentales hay una desviación:

δ=Y–m·X–b

Elevando al cuadrado la desviación, 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 mínimo:

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 incógnitas:

m · ΣX 2 + b · ΣX = ΣX · Y
m · ΣX + N · b = ΣY
APLICACIONES DE CÁLCULO NUMÉRICO 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-


lación, cuya expresión general toma la forma de:

Σ(Yc − Y )2
r=±
Σ (Y − Y ) 2

El coeficiente de correlación específico para la recta es:

N ⋅ ΣX ⋅ Y − ΣX ⋅ ΣY
r=± (5.14)
( N ⋅ ΣX − ( ΣX )2 ) ⋅ ( N ⋅ ΣY 2 − ( ΣY )2 )
2

Los datos con los que se va a trabajar se guardarán 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 están 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 mínimos cuadrados, según


las ecuaciones previas, es:
%----------------- Ajulineal.m ---------------------
DatosAL
X=datos(:,1);
Y=datos(:,2);
N=length(X);
SX=sum(X);
SX2=sum(X.ˆ2);
74 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

SY=sum(Y);
SY2=sum(Y.ˆ2);
SXY=sum(X.*Y);
b=(SY*SX2-SX*SXY)/(N*SX2-SXˆ2);
m=(N*SXY-SX*SY)/(N*SX2-SXˆ2);
r=(N*SXY-SX*SY)/((N*SX2-SXˆ2)*(N*SY2-SYˆ2))ˆ.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
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 numérico y gráfico del ajuste de


datos experimentales a una recta; los datos se muestran con el signo «*», y en
línea 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 linealización

Las funciones no lineales con uno o dos parámetros son susceptibles de li-
nealización 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 más fácil elucidar si una
APLICACIONES DE CÁLCULO NUMÉRICO 75

distribución de datos es lineal o no, con relación a comparar distribuciones de


datos a curvas diferentes.
A continuación se muestra un ejemplo de linealización del ámbito de la des-
tilación, operación básica de la Ingeniería Química.
En el equilibrio líquido-vapor de mezclas binarias, no azeotrópicas, la
composición del vapor en función de la composiciórı del líquido sigue la ecua-
ción de uso restringido:

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

en donde:
x Fracción molar del componente más volátil del líquido.
y Fracción molar del componente más volátil del vapor.
R Constante, que indica la posición del máximo en la representación y-x.
C Constante, que indica el valor del máximo en la representación y-x.

Si en la fracción de la ecuación (5.15) se divide numerador y denominador


por (1 – x)2, se obtiene:
x
C⋅ R⋅
y−x = 1− x (5.16)
2
⎡ x + R⎤
⎢⎣1 − x ⎥⎦

Realizando los siguientes cambios de variables:

D=y–x
A=C·R
x
U=
1− x

la ecuación (5.16) toma la forma de:

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

Realizando un nuevo cambio:

U
V2 =
D
76 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

la ecuación (5.17) toma la forma de:


(U + R)2 = A · V2
Ecuación que, reordenada, toma la forma lineal:

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

1 1
m= =
A R⋅C

R R
b= =
A R⋅C
Deshaciendo los cambios hechos, los coeficientes de el ecuación (5.15) son:
1
C=
b⋅m
b
R=
m
Con los valores así calculados de R y C, y los valores de x, se calculan unas
yc, que deberán estar muy próximos a las y de partida.
De la bibliografía especializada se obtuvieron los datos de equilibrio iso-
bárico, 760 mm de Hg. líquido-vapor de Benceno-nButanol, que se utilizan en
el programa Equilibrio.m, en donde se aplican los cálculos 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 CÁLCULO NUMÉRICO 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=y–x; U=x./(1–x); 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,'-')
C=1/(b*m); R=b/m;

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

1,5

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

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. Composición benceno en la fase vapor frente a composición de benceno


en la fase líquida.
78 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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, observándose un buen grado de concordancia. En el gráfico inferior se
representan los datos (x,y) de partida, representados por «o», y en línea continua se
muestra la ecuación (5.15) a partir de las x y con los datos calculados R y C.

5.7. ANÁLIS ESPECTRAL

El procesado de señales digitales para análisis espectral y series temporales,


se facilita con la función fft, fast fourier transform.
En el análisis de señales con perturbaciones, el problema más frecuente es
la determinación de las frecuencias.
En el siguiente ejemplo se crea una señal compuesta, a la que se le añade un
ruido aleatorio de cuantía análogo a la señal.
El período de muestreo se toma en milisegundos, creando una base de
tiempo de 0 a 0,5 segundos.

>> t=[0:0.001:0.5]';
>> size(t)

ans =

501 1

Se crea una señal 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 señal se distorsiona con un ruido aleatorio de 0 a 3.

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

La representación gráfica de y frente a t conduce a una representación en la


que la periodicidad está oculta.
El objetivo de este tratamiento es encontrar las frecuencias de esta señal 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 CÁLCULO NUMÉRICO 79

Ahora se calcula la potencia espectral o energía, mediante:


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

5001 1
La frecuencia se forma mediante la instrucción:
>> 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
2
0
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. Análisis de frecuencias.

Las representaciones gráficas se consiguen con:


>> subplot(221), plot(t(1:50),x(1:50))
>> ylabel('x=sin(2·pi·50·t)+sin(2·pi·100·t)+sin(2·pi·200·t)')
80 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

>> xlabel('Tiempo')
>> subplot(222), plot(t(l:50),y(1:50))
>> ylabel('y=x+3·rand')
>> 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 cálculos ex-


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

5.8. EVITANDO LA DIVISIÓN POR CERO Y REBOSE

La exactitud con que funciona MatLab es eps, cuyo valor es 2,2204 · 10–16.
Al dividir una expresión por una variable x, que en un proceso de cálculo
tomase el valor 0, provoca un warning Divide by zero. Este inconveniente
se obvia mediante:
x=x+(x==O)*eps;

Este procedimiento únicamente cambia el valor de x, cuando su valor es 0,


asignándole el valor de eps.
Los números más grande y más pequeño, en valor absoluto, que utiliza Mat-
Lab son realmax y realmin, de valores 1,7977 · 10308 y 2,2251 · 10–308, res-
pectivamente.
Para evitar que una variable x, no exceda de un valor límite dado de satu-
ración o rebose, ± X, se procede según:
x=x.*(abs(x) < X)+X.*(abs(x)>X);
6
Simulink

6.1. INTRODUCCIÓN A SIMULINK

Figura 6.1. Ventana de paquetes de librerías de Simulink.


81
82 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Simulink es un software para simulación, análisis y modelado de sistemas


dinámicos, que acompaña a MatLab, en forma de toolbox. Su interface gráfica
permite «ver» los modelos.

Figura 6.2. Librerías de bloques de operadores continuos.

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


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

Figura 6.3. Librerías de bloques no continuos.

En la Figura 6.1 se presentan los menús 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 compondrán los modelos deseados.
SIMULINK 83

Figura 6.4. Bloques generadores de señales.

La notación matemática de los bloques es la utilizada en los tratados de


Control Automático, en los que se utiliza la variable compleja s, que tiene, en-
tre otras, la propiedad de que multiplicar por s representa derivar, y dividir por
s representa integrar.

Figura 6.5. Librerías 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Figura 6.6. Librerías de bloques matemáticos.

Figura 6.7. Librerías de señales y sistemas.


SIMULINK 85

Figura 6.8. Librerías de salidas.

6.2. CONSTRUCCIÓN DE UN MODELO MUY SENCILLO

A continuación se describe paso a paso cómo se elabora el esquema Simu-


link del modelo más sencillo, la integración de 2 × t, con condición inicial 0,
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, obteniéndose la
ventana de librerías de Simulink
2. De la ventana de librerías se consigue la ventana de construcción del
modelo, pulsando File, New, Model, con lo que se obtiene una
nueva ventana vacía, para construir ahí el modelo deseado.
3. Se despliega Sources de la ventana de librerías. 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 librerías, y se copia Gain,
ganancia, a la ventana del modelo. Gain se coloca delante de Clock.
Para conectar Gain a Clock, se posiciona el ratón en el ángulo de sa-
lida de Clock, manteniendo pulsado el botón izquierdo del ratón, 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-
maños y tipos de letra, se coloca el puntero del ratón encima del texto, al
pulsar el botón derecho se accede a Propiedades del texto.
86 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Figura 6.9. Esquema de la integración de 2 · t.

6. Desplegando Continuous de la ventana de librerías, 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 condición 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.
8. Para ver la integración conseguida, es necesario llevar esa salida a un
visualizador, X Y graph, que se halla en la librería 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 métodos y parámetros de integración, son seleccionables desde la
ventana del modelo en Simulation parameters, del menú Si-
mulation.
10. Para ejecutar la simulación se activa Start del menú Simulation
de la ventana del modelo. Para ver el resultado gráfico se pulsa dos ve-
ces en X Y graph.
11. Para llevar variables del modelo de simulación al entorno MatLab, se
utiliza el módulo To workspace de la librería Sinks. Este módulo
se conecta en la salida del bloque del que se desea guardar sus datos;
pulsando dos veces sobre este módulo, se accede a la asignación del
nombre de la variable y al formato en que se desean guardar los datos.

6.3. SOLUCIÓN SIMULINK DE UNA ECUACIÓN DIFERENCIAL


Para representar un modelo, ecuaciones diferenciales, se abre el espacio de
representación mediante Nuevo, del menú Archivo de la ventana de librerías
de Simulink, hacia donde se arrastrarán los iconos operacionales desde las li-
brerías correspondientes, para componer el modelo mediante las conexiones y
relleno con los parámetros pertinentes.
SIMULINK 87

En la Figura 6.10 se representa el diagrama de bloques de la ecuación


(5.2); y su solución gráfica, en la Figura 6.11.

Figura 6.10. Esquema analógico de la resolución de la ecuación diferencial


de segundo grado.

Figura 6.11. Resultado gráfico de la integración de la ecuación diferencial


de segundo grado.
88 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Como la ecuación 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 función del tiempo.
La entrada del primer integrador es el segundo miembro de la ecuación di-
ferencial expresada como:

d2y dy
2
= –3 – 6 y
dt dt

6.4. SIMULACIÓN DINÁMICA DE UN ECUALIZADOR

Al ecualizador, tanque de regulación de caudal y amortiguador de oscila-


ciones de concentración de influentes, en procesos de aguas, llega una co-
rriente de caudal y concentración de sustancias variables, y se pretende deter-
minar el volumen variable ocupado por el líquido en el ecualizador cuando se
extrae un caudal de valor medio de las últimas 24 horas, media móvil, a la vez
que determinar la concentración de las sustancias, sustrato, variables en la sa-
lida.

Qi(t)
Ci(t)

Volumen
de seguridad

Variación
de volumen V(t) C(t)

Volumen
inicial Q
C(t)

Figura 6.12. Esquema y variables de un ecualizador.


SIMULINK 89

La variación de volumen de líquido 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 reacción química alguna, conservación


de componentes, la concentración de cada componente que se mezcla con el
contenido del tanque de volumen variable sigue la ecuación:

= ⋅ Ci – ⎛ Q +
dC Qi dV ⎞ C
⋅ (6.2)
dt V ⎝ dt ⎠ V

La variación de volumen, puede calcularse analíticamente, si se considera


que el caudal de entrada es sinusoidal, tal como:

2 ⋅π ⎞
Qi (t ) = Q + Qv ⋅ sin ⎛ ⋅t (6.3)
⎝ T ⎠

El volumen del líquido 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 período de una oscilación completa; y Qv, representa la amplitud de
la oscilación del caudal y C la concentración.
En la Figura 6.13 se muestra el esquema de cálculo Simulink para resolver
la ecuación (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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

Figura 6.13. Esquema Simulink para el cálculo de la evolución del volumen contenido
en un ecualizador con caudal variable.

El bloque Mux permite conducir por una línea varias señales. En el ejemplo,
Mux se utiliza para realizar operaciones en los bloques f(u), y para represen-
tar varias señales en un gráfico.

2500
Qi
Q
Volumen

2000
Caudales, (m3/h), Volumen (m3)

1500

1000

500

0
0 20 40 60 80 100 120
Tiempo, (Horas)
Figura 6.14. Resultado gráfico del cálculo de la evolución del volumen contenido
en un ecualizador con caudal variable.

En el bloque Qm(t-24), se realiza la operación u(l)/u(2), la señal


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 designación 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.

Figura 6.15. Esquema Simulink para el cálculo del volumen y composición


de un ecualizador, con alimentación de caudal y concentración variables.

Los resultados de la simulación 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 simulación, tiene
un valor constante hasta llegar al tiempo de 24 lıoıas, seguido de un valor cons-
tante, límite superior, y a continuación oscila, con tendencia hacia un valor
constante, debido a que el caudal de entrada se repite de la misma manera.
El volumen del líquido sufre una primera aportación muy grande, debido a
que en el comienzo, el caudal purgado está en un valor mínimo, observándose
que tiende a una oscilación constante.
En la Figura 6.15 se muestra el esquema de cálculo 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 anómalos iniciales que enlente-
cen el cálculo en alcanzar el estado estacionario.
El bloque Ci suministra los datos de la concentración de entrada de un su-
puesto componente químico 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 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

La Figura 6.16 muestra la reducción de la variabilidad de la concentración


de salida del ecualizador, línea continua, frente a la concentración de entrada, lí-
nea discontinua.

450
C
Ci
400

350
Conc. Entrada/salida (mg/l)

300

250

200

150

100

50
0 20 40 60 80 100 120 140 160 180 200
Tiempo (Horas)
Figura 6.16. Concentración de salida del ecualizador, línea continua,
frente a concentración de entrada.

Las Estaciones Depuradoras de Aguas Residuales que se vienen instalando


desde hace unos años, incluyen el tanque de homogeneización o ecualización,
que si es de tamaño suficiente y con buen control de operación, ahorrará ener-
gía, diluirá posibles tóxicos o permitirá su «by-pass» a esta zona segura, evita-
rá los problemas de las variaciones bruscas de caudal y corıtribuirá a la estabi-
lidad del proceso biológico posterior.
Bibliografía

[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).
[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 Rodríguez M. Cálculos avanzados en procesos de descontaminación de
aguas. Consejo Superior de Investigaciones Científicas. (2003).

93
Índice alfabético

..., 21 continue, 40
LATEX, 19, 45 conv, 16
TEXtos en gráficos, 45
date, 20
Ajuste de datos, 56 datenum, 20
Ajuste lineal, 72 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, ecuación, 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, números, 12
conj, 12, 79 factor, 27

95
96 INTRODUCCIÓN RÁPIDA A MATLAB Y SIMULINK PARA CIENCIA E INGENIERÍA

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
max, 8
help, 1, 9 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
Interpolación odegil4, 57, 60
cubic, 18 optimset, 55
polinomial, 18 Orden de ejecución, 19
spline, 18, 71 otherwise, 40
inv, 15
invlaplace, 33 path, 19
pie, 41
keywords, 4 plot, 8, 41
plot3, 41
ÍNDICE ALFABÉTICO 97

plotmatrix, 41, 43 Simbólico, cálculo, 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 Transposición, 7
realmin, 80
recursion, 11 variables, 3
reshape, 14 Vector, 13
residue, 17 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

También podría gustarte