Introduccion Rapida a Matlab y Simulink Para Ciencia e Ingenie

105

description

.

Transcript of Introduccion Rapida a Matlab y Simulink Para Ciencia e Ingenie

MANUEL GIL RODRÍGUEZCientífico Titular del Consejo Superiorde Investigaciones Científicas (CSIC)

INTRODUCCIÓN RÁPIDAA MATLAB Y SIMULINK

PARA CIENCIA E INGENIERÍA

© Manuel Gil Rodríguez 2003 (Libro en papel) 2015 (Libro electrónico) 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. Albasanz, 2 28037 MADRID [email protected] www.editdiazdesantos.com ISBN: 978-84-9969-944-8 (Libro electrónico) ISBN: 978-84-7978-596-3 (Libro en papel)

PRÓLOGO...............................................................................................

1. PRIMEROS PASOS EN MATLAB ................................................1.1. Introducción ...........................................................................1.2. Comenzando ..........................................................................1.3. Espacio de trabajo ..................................................................1.4. Variables ................................................................................1.5. Formato de números ..............................................................1.6. Programas ...............................................................................1.7. Funciones ...............................................................................

1.7.1. Reglas de construcción de funciones ..........................1.7.2. Funciones en línea ......................................................1.7.3. Ejemplo de función recursiva .....................................

1.8. Números complejos ...............................................................1.9. Manejo de vectores y matrices ...............................................1.10. Polinomios ..............................................................................

1.10.1. Multiplicación y división de polinomios ..................1.10.2. Desarrollo en fracciones simples ..............................1.10.3. Derivadas de polinomios ..........................................1.10.4. Integración de polinomios ........................................1.10.5. Interpolación polinomial............................................

1.11. matlabpath ..............................................................................1.12. lookfor.....................................................................................1.13. LATEX ...................................................................................1.14. Funciones del tiempo .............................................................1.15. Intercambio de datos ..............................................................

VII

Índice

XI

111235789

111112131616171718181919192021

2. CÁLCULO SIMBÓLICO ...............................................................2.1. Introducción ...........................................................................2.2. Objetos y expresiones simbólicas ..........................................2.3. Ejemplos de cálculo simbólico ..............................................

2.3.1. Derivadas e integrales .................................................2.3.2. Sistemas de ecuaciones ...............................................2.3.3. Ecuaciones diferenciales..............................................

2.4. Transformación de Laplace e inversa ....................................2.5. Límites ...................................................................................2.6. Series de Taylor y Mac Laurin ..............................................2.7. Invocando a Maple V..............................................................

2.7.1. Transformación de Laplace e inversa con Maple V ....2.7.2. Resolución de ecuaciones diferenciales con Maple V.2.7.3. Resolución de ecuaciones diferenciales con la trans-

formación de Laplace ..................................................

3. SENTENCIAS DE CONTROL DE FLUJO ...................................3.1. input .......................................................................................3.2. if - else - end ..........................................................................3.3. while - end .............................................................................3.4. for - end ..................................................................................3.5. continue ..................................................................................3.6. break .......................................................................................3.7. switch end ...............................................................................

4. GRÁFICOS EN MATLAB .............................................................4.1. Tipos de gráficos ....................................................................4.2. Utilidades de gráficos ............................................................4.3. TEXtos en gráficos ................................................................4.4. LaPrint ...................................................................................4.5. Estilos de líneas, marcas y colores .........................................4.6. area .........................................................................................

5. APLICACIONES DE CÁLCULO NUMÉRICO.............................5.1. Integración numérica .............................................................5.2. Mínimos, ceros y optimización...............................................

5.2.1. Mínimos y ceros de funciones ....................................5.2.2. Resolución de ecuaciones no lineales .........................5.2.3. Minimización y ajuste de datos ..................................

5.3. Integración numérica de ecuaciones diferenciales .................5.3.1. Método de Runge-Kuta ...............................................

5.4. Modelo dinámico de un tanque ..............................................5.5. Determinación de retrasos y derivadas ..................................5.6. Ajuste de datos experimentales a una recta ...........................

VIII ÍNDICE

25252527272829303131313132

33

3535363838404040

41414445454748

5151515152535759626772

5.6.1. Ajuste de funciones no líneales por linealización .......5.7. Anális Espectral .....................................................................5.8. Evitando la división por cero y rebose ...................................

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

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

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

ÍNDICE IX

747880

8181858688

93

95

MatLab (MATrix LABoratory) comenzó siendo un programa interactivo deanálisis integrado, especializado en cálculos matriciales. En muy poco tiempotuvo 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 entres 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 yvectores propios, descomposiciones, factorizaciones...

Desde las primeras versiones, MatLab disponía de potentes herramientas derepresentaciones 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 cuadrosgráficos a otras aplicaciones.

Esta obra abarca lo esencial de MatLab y Simulink, que ya no cambian conlas versiones que van saliendo. Está especialmente indicada para alumnos deCiencias, Ingeniería, Postgrado o profesionales que deseen familiarizarse, en untiempo mínimo con las principales herramientas de cálculo suministradas porMatLab a través de ejercicios prácticos a lo largo de este manual.

Manuel GIL RODRÍGUEZ

XI

Presentación

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, endonde 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 otrosde mayor complejidad.

Este Capítulo es adecuado para principiantes absolutos, y de afianzamientoa 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 + 4ans =

7>> 3*5ans =

15>> 15/3 ans =

5

1

1Primeros pasos en MatLab

>> 15\3 ans =

0.2000 >> 2ˆ3 ans =

8 >> sin(2*pi*30/360) ans =

0.5000

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

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

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

147

10

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

Your variables are:

t A B

>> whos

Name Size Bytes Classt 1 × 4 32 double arrayA 1 × 4 32 double arrayB 1 × l 8 double array

Grand total is 9 elements using 72 bytes

>> what

M-files in the current directory D:\MatLab\workAjusNL Datos EcudifP AjusN1Fun Ecudif Fun MAT-files in the current directory D:\MatLab\workDatos 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 1elemento, de modo que son 9 elementos a 8 bytes por elemento, lo que hace untotal 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 elsigno «'».

>> numero_de_visitantes = 25

numero_de_visitantes =

25

PRIMEROS PASOS EN MATLAB 3

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 suvalor 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 debencontener espacios en blanco.

3. Los nombres de las variables no pueden coincidir con los nombres de laskeywords, 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'

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

>> if = 5??? if = 5

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

Los nombres de las variables pueden ser tan extensos como se quiera, peroMatLab 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.

PRIMEROS PASOS EN MATLAB 5

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

1. MatLab intenta mostrar números enteros. Si el entero es muy grande, sepresenta 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, semuestran 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

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

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 cuadradasde 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 todaslas sentencias se finalizaron con «;», no se muestra ningún valor numérico. Alejecutar «x», se obtendrá la tabla desada:

>> Numeros>> x

x =

1.0000 1.0000 1.0000 1.00002.0000 0.5000 4.0000 1.41423.0000 0.3333 9.0000 1.73214.0000 0.2500 16.0000 2.00005.0000 0.2000 25.0000 2.23616.0000 0.1667 36.0000 2.44957.0000 0.1429 49.0000 2.64588.0000 0.1250 64.0000 2.82849.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 previamenteejecutadas.

PRIMEROS PASOS EN MATLAB 7

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 definidasen el espacio de trabajo, ni en otras funciones.

Buena parte de la potencia de MatLab se basa en su extenso conjunto defunciones, 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 desalida, sea:

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

Fun xx x

( )( ) , ( ) ,

=− +

+− +

−11 0 1

13 0 2

52 2

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

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íneade la función.

7. Si una función llama a un programa, éste es evaluado en el espacio detrabajo de la función y no en el workspace de MatLab.

8. Cada función tiene su espacio de trabajo separado del de MatLab, demodo que la conexión entre estos ambientes se realiza a través de las va-riables de entrada y salida de la función.

PRIMEROS PASOS EN MATLAB 9

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

–4

–2

0

2

4

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

9. Para compartir variables del interior de las funciones y del espacio detrabajo, se declaran variables globales donde se necesiten mediante lainstrucción global.

>> global X a b % Declaración de variables globales

Para facilitar el manejo de funciones, MatLab incorporó recientemente @, yfeval, 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 elprimero 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

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

1.7.2. Funciones en línea

Un segundo modo de definir funciones, sin editar archivos, se logra coninline:

>> 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álculodel 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 parteentera.

>> Factorial(3.3)

ans =

6

PRIMEROS PASOS EN MATLAB 11

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)

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

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 [], vectoren línea, o con []', vector en columna. Los elementos se separan por espacioso 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 ylogspace, ambos con dos o tres argumentos, y con «:», ya mencionado:

>> x = logspace(0,2,5) % Vector de 5 componentes de 10ˆ0 a10ˆ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.

PRIMEROS PASOS EN MATLAB 13

a =

0 1 2 3 40 1 4 9 16

>> A = a' % Crear la matriz A, transpues-% ta de a.

A =

0 01 12 43 94 16

» B = [A; 5 25] % Añadir una línea a una ma-% triz.

B =

0 01 12 43 94 165 25

>> C = reshape(B,3,4) % Reconfigurar la matriz B% con 3 líneas y 4 columnas.

C =

0 3 0 91 4 1 162 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 92 25 4 50

>> C(:,3) = [] % Eliminar la 3a columna,% 0 4.

C =0 3 92 25 50

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

1 23 5

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

>> Aˆ2 % Diferencia entre ˆ y .ˆ

ans =

7 1218 31

>> A.ˆ2

ans =

1 49 25

>> 1../A

ans =

1.0000 0.50000.3333 0.2000

>> det(A)

ans =

-1

>> inv(A)

ans =

-5.0000 2.00003.0000 -1.0000

Las exponenciaciones, elemento a elemento y matricial, también se realizancon 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ˆ2y

7 186 19

PRIMEROS PASOS EN MATLAB 15

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 =

32

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

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

1.10.2. Desarrollo en fracciones simples

Mediante residue, aplicado a dos polinomios, se obtienen fraccionessimples, 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:

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

5 20 9

5 4

34

21

52

2

x x

x x x x− +− +

=−

+−

+

PRIMEROS PASOS EN MATLAB 17

1.10.4. Integración de polinomios

La integral de un polinomio se obtiene mediante polyint(p), o conpolyint(p,C); en el primer caso se supone que la constante de integraciónes 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.10.5. Interpolación polinomial

Matlab permite varios modos de interpolación, relacionados y descritosen 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

13

52

4 23 3x x x− + +

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

1.11. matlabpath

El path de MatLab, llamado matlabpath, establece el camino parabuscar 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 Fund:/MatLab6p5/work/Fun.m

1. 12. lookfor

lookfor aplicado a una variable de caracteres, busca esos caracteres en laprimera línea de comentarios de los archivo.m encontrados en el matlab-path.

>> lookfor Fun.mFun.m: %---------------- Fun.m --------------------

1.13. LATEX

La función latex(A) devuelve la representación LATEX de una expresiónsimbó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 51 - 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}

PRIMEROS PASOS EN MATLAB 19

1.14. FUNCIONES DEL TIEMPO

MatLab suministra datos relacionados con el tiempo, como una variable decaracteres, 12-Oct-1498, como una variable numérica, 739476 o comoun 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 fechanumé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:

>> dateans =

29-Jan-2003

Numerosas transformaciones de fechas pueden encontrarse mediante helpdatestr.

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

Para temporizaciones se usan tic, para comienzo, y toc para finalizar latemporizació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 presentauna 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 ejecutadosen 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.30280.1897 0.6822 0.5417

>> Y=round(X)

Y =

0 0 00 1 1

PRIMEROS PASOS EN MATLAB 21

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

Your variables are:

X Y>> XX =

0.3046 0.1934 0.30280.1897 0.6822 0.5417

>> YY =

0 0 00 1 1

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

>> A=[1.5 2.49; 0.2 9.99]

A =

1.5 2.490.2 9.99

>> ceil(A)

ans =

2 31 10

>> floor(A)

ans =

1 20 9

save y load permiten salvar o cargar variables determinadas, separadaspor 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

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

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:

PRIMEROS PASOS EN MATLAB 23

2.1. INTRODUCCIÓN

MatLab se caracterizó desde un principio por ser muy potente en cálculonumé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 delas 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

2Cálculo simbólico

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

>> M=magic(2) % M, variable numérica.

M =1 34 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 - bc + 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.

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

–3 –2 –1 0 1 2 3

–10

0

10

20

30

40

50

60

70

80

t

2 151/2 /5 sin(151/2 /2 t) exp(–3/2 t)

Figura 2.1. Representación gráfica de y.

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 lainstrucción:

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

La derivada y’, almacenada en dy, simplificada y factorizada se obtiene se-gún:

>> yY=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)

CÁLCULO SIMBÓLICO 27

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 = 5x – 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 devuelveuna expresión numérica, que se ejecuta mediante double, transformación adoble precisión.

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

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

–80

–60

–40

–20

0

20

40

60

t

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

Figura 2.2. Representación gráfica de dy.

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

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

d y

dt

dydt

y2

23 6 0+ + =

CÁLCULO SIMBÓLICO 29

2.4. TRANSFORMACIÓN DE LAPLACE E INVERSA

La transformación de Laplace calcula la integral:

permite transformar f(t) en el dominio del tiempo, a �(s), en el dominio de lavariable 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)

�(s f t e dts t) ( ) –= ⋅∞ ⋅∫0

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

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

2exp(-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 tomacomo 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 latransformación de Laplace, es necesario cargar previamente el paquete detransformaciones integrales with(inttrans):

>> maple('with(inttrans)') % Se carga el paquete de ...% transformaciones integrales.

CÁLCULO SIMBÓLICO 31

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)

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

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 =

CÁLCULO SIMBÓLICO 33

{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)}

y t e et t ( ) – ( – )–= 14

14 3

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

3.1. input

La forma de input, se indica en los ejemplos siguientes, según se trate devariables literales o numéricas:

>> R=input('> Cuál es tu nombre ? ','s')

> Cual es tu nombre ? Pepe

>> ['Hola',R]

ans =

Hola Pepe

>> ['Hola';R]

HolaPepe

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

> Dime el radio de la rueda ? 5

>> P+1

ans =

6

35

3Sentencias de control de flujo

3.2. if - else - end

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

if condicióncomandos

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 == Igualne ~= No iguallt < Menor quegt > Mayor quele <= Menor que o igualge >= Mayor que o igual

En la primera de las siguientes instrucciones se responde con «hola», yaque es verdad que 'a' es igual a 'a'. En la segunda esto se obvia, dado que lacondició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 lasiguiente construcción:

if condiciónEjecución de comandos de esta zona,si la condición es verdad

elseEjecución de comandos de esta zona,si la condición es falsa

end

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

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

if condición 1

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

elseif condición 2Ejecució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

elseEjecución de instrucciones si ninguna condición es

verdadend

En un comercio se vende un vino a un precio condicionado por la cantidadrequerida. Hasta 5 botellas el precio unitario es de 6 €, desde 6 a 12 botellas elprecio es de 5,5 €, y a partir de 13, a 5 € la botella. Elaborar un programa, quepregunte cuántas botellas se desean e indique el precio unitario y el total delgasto.

%------------ Vino.m --------------C=input('Cuantas Botellas ?');if C<=5

Pu=6;Pt=Pu*C;

elseif C<=12Pu=5.5;Pt=Pu*C;

elsePu=5;Pt=Pu*C;

endPuPt% ----------------------------------

A continuación se muestra la ejecución de este programa:

>> Vino

Cuantas Botellas ? 8

Pu =

5.5000

Pt =

44

SENTENCIAS DE CONTROL DE FLUJO 37

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

endD=[I;J;A;B;C];D=reskape(D,3,4);% ---------------------------------------------

>> Tabla>> D

D =

1.0000 1.0000 1.0000 1.00002.0000 0.5000 4.0000 1.41423.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 = vectorComandos

end

A continuación se muestra la generación de la tabla anterior utilizandofor.

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

% --------------- Tabla1. m -----------for I=1:3

J(I)=I;A(I)=1/I;B(I)=power(I,2);C(I)=sqrt(I);

endD=[I;J;A;B;C];D=reshape (D,3,4);% -------------------------------------

>> Tabla1>> D

D =

1.0000 1.0000 1.0000 1.00002.0000 0.5000 4.0000 1.41423.0000 0.3333 9.0000 1.7321

El funcionamiento de for, en el programa anterior, comienza tomando I elvalor 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 seincrementa 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 modoque continuará el ciclo, se creará J(2) con el valor 2, A(2) con el valor de 1/2 yasí 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 valor2, y J vuelve a tomar los valores de 1, 2, 3 y 4, y así hasta completar la últimavuelta con I=3.

% ------------- Tabla2.m ----------------------A=[]; % Crear una matriz vacia.x=[1 -1 2 0.5];

for I=1:3for 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 laJ varía en horizontal, del principio al final de cada línea, tomando siempre los

SENTENCIAS DE CONTROL DE FLUJO 39

valores de 1 para la primera columna, 2 para la segunda, 3 para la tercera y 4para 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.00002.0000 0.5000 4.0000 1.41423.0000 0.3333 9.0000 1.7321

3.5. continue

Si aparece un continue en un lazo for end o while end, el cálculopasa 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 sepuentea a la siguiente instrucción del end de ese bucle, es decir se finaliza esebucle.

3.7. switch end

switch ejecuta un grupo determinado de sentencias basado en el valor deuna 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

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

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 denuevas 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áficosmencionados.

41

4Gráficos en MatLab

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

–2 0 2–6

–4

–2

0

2

4

6

–2 0 2–5

0

5

–2 0 2–5

0

5

–4 –2 0 2 4–5

0

5

–1

0

1

>> subplot(221)>> fplot(’Fun’,[pi pi]) >> subplot(222)

>> stairs(x,Fun(x),’*’)

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

Figura 4.1. Diferentes tipos de gráficos.

–2 0 2–5

0

5

–2 0 2–6

–4

–2

0

2

4

6

–2 0 2–5

0

5

0,2 0,3 0,4 0,5

30

210

60

240

90

270

120

300

150

330

180 0

>> subplot(221)>> bar(x,Fun(x),x,.2)

>> subplot(222)>> errorbar(x,Fun(x),e)

>> subplot(223)>>stem(x,Fun(x))

Figura 4.2. Matriz de gráficos.

>> 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, obtenidacon las instrucciones:

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

GRÁFICOS EN MATLAB 43

–3 –2 –1 0 1 2 3 4

–20

0

20

–1

–0,5

0

0,5

1–4

–2

0

2

4

6Título del gráfico

Fun

ció

n

Sen

o d

e X

Seno de X

Tangente de X

Eje de las X

Figura 4.3. Matriz de gráficos.

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.

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

10,5

00,5

1

1

0,5

0

0,5

10

5

10

15

20

25

30

35

Figura 4.4. Gráfico en 3-d.

4.3. TEXTOS EN GRÁFICOS

Para poder mostrar ecuaciones en cuadros gráficos, ya sea en las leyendasde los ejes, o en otras partes del cuadro, MatLab incorpora un subconjunto decomandos 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 deMatLab, 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 nombreen 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 lasleyendas de los ejes, cómo incorporar una ecuación en un eje y en el interior decuadros 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}')

GRÁFICOS EN MATLAB 45

6%

19%

31%

44%

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

Figura 4.5. Gráfico en tarta.

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 ydesproporción en los textos de los cuadros gráficos en los documentos finales.

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

–10 –8 –6 –4 –2 0 2 4 6 8 10–5

–4

–3

–2

–1

0

1

2

3

4

5

y= µ ϖ ⋅ sin(x) ⋅ e-Φ

⋅ x

Eje de las XDistancia µm

y=si

n(x

) ⋅ e

-Φ ⋅ x

Figura 4.6. Ecuaciones en el interior de cuadros gráficos.

12

34

56

78

12

34

56

78

–6

–4

–2

0

2

4

6

Figura 4.7. Gráfico de barras, bar3(peaks(8)).

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 anotacionesde 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, usandoepsfig y psfrag, de modo que la figura incorporada en el documento final seaidéntica, incluidas sus fuentes de texto, a la figura original en MatLab.

Para utilizar laprint.m, es necesario copiarlo a cualquier carpeta delmatlabpath. Una vez que se ha construido el cuadro gráfico en MatLab, seejecuta laprint.m en la ventana de MatLab. El archivo.tex producido,se inserta en el documento LATEX, en donde convenga, y el archivo.epsen 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.

GRÁFICOS EN MATLAB 47

Símbolo Color

b Azulg Verder Rojoc Cianm Magentay Amarillok Negrow Blanco

Símbolo Marca

· ·o ox x+ +* *s �

d �

∧ �

� �

< �

> �

p �

h �

Símbolo Estilo de línea

– Continua: Punteada

– · Trazo-Punto– – Trazo-Trazo

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'), gridaxis([-4*pi,4*pi,-.7,1])

text(2,sin(2).*exp(-.25*abs(2)),...'\fontsize{16}\leftarrow sin(t)\cdote^{-0.25\cdotabs(t)}

')

xlabel('\fontsize{l5} t')ylabel('\fontsize{l5} sin(t)\cdote^{-0.25\cdotabs(t)}')hold ona=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])

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

–10 –5 0 5 10

–0,6

–0,4

–0,2

0

0,2

0,4

0,6

0,8

1

← sin(t)⋅e0,25 ⋅abs(t)

t

sin

(t)⋅

e0,

25⋅a

bs(

t)

← cos(t)⋅e0,25 ⋅abs(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 entre0 y Fun(x), gráfico superior, y entre –5 y Fun(x), gráfico inferior:

GRÁFICOS EN MATLAB 49

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

–4

–2

0

2

4

6

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

–4

–2

0

2

4

6

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

subplot(212)area(x,Fun(x),5)

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

25%

33%

19%

8%

14%

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

Valor destacado

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

5.1. INTEGRACIÓN NUMÉRICA

Matlab dispone de dos funciones para integración, quad, basado en la reglade 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ónFun, 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, queencuentra el mínimo de una función de una variable; fminsearch, corres-pondiente a fmins de versiones anteriores, calcula mínimos de funcionesmultivariables; lsqcurvefiting para ajustes de datos a diferentes tiposde 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

5Aplicaciones de cálculo numérico

>> 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ónfsolve, cuya aplicación se realiza según el ejemplo que sigue.

Sea el sistema:

Sea el sistema

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

% --------------- EcusP.m ----------------------------clearOpciones=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);% ------------------------------------------------------------

x y

x y

ez x

+ =− =

=

5

1

7 389

,–

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

La ejecución de EcusP produce el siguiente resultado:

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

x =

2.0003.0001.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, siendoopcional 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 unpH óptimo, próximo a la neutralidad y disminuyen hasta anularse, al separarsea 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:

(5.1)

Las constantes pk1 y pk2, se calculan por ajuste de datos, representando losvalores en los que µ(pH), tiene el valor de 0,5.

µ( )pH pk pH pH pk=+ +− −

11 10 101 2

APLICACIONES DE CÁLCULO NUMÉRICO 53

El listado del ajuste mediante la ecuación (5.1), se presenta a continuación:

% --------------- pHAjus.m ----------------------------clear,clfglobal pH mupH=[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 onpHc=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%--------------------------------------------------

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

0 2 4 6 8 10 12 140

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

pk1 = 5,2036

pk2 = 10,1128

pH

µ(p

H)

Figura 5.1. Ajuste de la tasa de crecimiento frente al pH.

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 estecaso 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, LIrepresenta el límite inferior de los valores de los parámetros a calcular, LS es ellímite superior, y Opciones es un conjunto de valores en los que se definenpará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);%-----------------------------------------

APLICACIONES DE CÁLCULO NUMÉRICO 55

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 semuestra en el ejemplo siguiente.

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

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

0

5

10

15

20

25

30

Ac=0,95551Bc= 4,6119Cc= 5,6322

x

x2 +

5 ⋅x+

6

Figura 5.3. Ajuste de datos con polyfit.

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

–2

–1

0

1

2

3

4

5

6

A=2

B=0,2

Ac=2,096

Bc=0,19176

X

A·s

en X

·e–B

·X

Figura 5.2. Ajuste de datos con Isqcurvefit.

En la Figura 5.2 se muestra el resultado de este ajuste, en la que se muestranlos valores de partida y los encontrados, teniendo en cuenta que a cada Y, se lesumó aleatoriamente una cantidad comprendida en el intervalo ±0.5.

Se definen 10 valores de x, linealmente espaciados, a los que se le aplicauna 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 polyfitsobre x e Y, se pretende recalcular los coeficientes del polinomio original, segúnlas 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 ECUACIONESDIFERENCIALES

Las ecuaciones diferenciales que representan a los procesos reales suelenser 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 elmétodo de Runge-Kuta de 2 y 4 parámetros respectivamente, algunas de lasotras 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, yasí sucesivamente. En opciones de integración se posibilita limitar el paso deintegració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 unnúmero determinado de reducciones, el sistema se para a causa de valoressingulares, pudiendo ser de utilidad disponer de una función de integración deecuaciones diferenciales de paso fijo, definido por el usuario, para lo cual seelaboró la función odegil4, cuyo listado y aplicaciones se muestra más ade-lante.

Los métodos numéricos evalúan únicamente ecuaciones diferencialesde primer orden, de modo que para evaluar ecuaciones diferenciales de or-den superior, han de definirse variables auxiliares para componer sistemas

APLICACIONES DE CÁLCULO NUMÉRICO 57

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:

(5.2)

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

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

y' = z (5.4)

Se pretende integrar desde –π hasta π, para lo cual es necesario conocer losvalores 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 lasecuaciones 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])%---------------------------------------------------

d y

dt

d y

dty

2

2 3 6 0+ + =

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

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)=zdy(2)=y(1); % y(2)=ydy=[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 diferencialeses el método de Runge-Kuta de cuarto orden, cuya aplicación se resume acontinuación.

Sean las ecuaciones diferenciales tales como:

APLICACIONES DE CÁLCULO NUMÉRICO 59

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

–50

0

50

100

150

200

250

Tiempo

Fun

ció

n y

der

ivad

a

y’

y

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

Su integración se realiza evaluando los siguientes parámetros:

Las ecuaciones integradas numéricamente se obtienen mediante:

Para integración de ecuaciones diferenciales por el método de Runge-Kutade cuatro parámetros se elaboró la función odegil4.m de paso de integraciónfijo:

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;

y yp q r s

k i k ik k k k

, ,+ = + + ⋅ + ⋅ +1

2 26

p h t y

q h th

yp

r h th

yq

s h t h y r

k k k

k k kk

k k kk

k k k

= ⋅ ƒ

= ⋅ ƒ + +

= ⋅ ƒ + + ⋅

= ⋅ ƒ + +

( , )

,

,

( , )

2 2

2 2

d y

dtt y y y

d y

dtt y y y

d y

dtt y y y

n

n

nn n

11 1 2

22 1 2

1 2

= ƒ …

= ƒ …

= ƒ …

( , , , )

( , , , )

( , , , )

M

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

N=(x(length(x))-x(1))/h; Ne=length(y0);for I=1:N

T=t(I);Y=y(I,:);

for J=1:Nep=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);

endt(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 seevalú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.84152.0000 4.0000 8.0000 16.0000 0.90933.0000 9.0000 27.0000 81.0000 0.14114.0000 16.0000 64.0000 256.0000 -0.75685.0000 25.0000 125.0000 625.0000 -0.9589

APLICACIONES DE CÁLCULO NUMÉRICO 61

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.

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 hastaque 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, laaltura 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 leasignarán diferentes valores para observar la respuesta del sistema. El volumenindicará 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 semuestra en la Figura 5.5.

Qeh

QiV

A

H

L

Figura 5.6. Esquema de un tanque con rebosadero lateral.

XV

U Y

QiQe

h

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

Considerando que el líquido circulante es agua, el caudal que sale por unvertedero rectangular, [m3/s], de longitud L [m], viene dado por la expresión deBazin, ecuación (5.5), de uso general en Francia:

(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).

(5.6)

El caudal de salida, calculado con este procedimiento, es válido para alturasde lámina de 2,5 a 80 cm.

La variación del volumen de agua en el tanque, es la diferencia de loscaudales de entrada al de salida, según la ecuación (5.7).

(5.7)

La altura de la lámina será el volumen total de agua entre la sección, menosla altura del rebosadero, según la ecuación (5.8):

(5.8)

Para resolver el ejemplo numérico utilizando un programa en MatLab, sedimensiona el tanque con área de la base de 150 m2, longitud de vertedero 10m 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 deanálisis para este ejemplo se fijó en 20 minutos, suficiente para observaresta dinámica.

El programa de cálculo se estructura en tres partes, un programa y dosfunciones. La primera función calcula el estado del sistema, volumen de aguaen el tanque X, en función de la diferencia de caudales de entrada, impuesto, ydel 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 elque se llama a la primera función, y ésta a la segunda, para finalmente realizarlos cálculos requeridos y presentación gráfica de resultados.

hV

AH= −

dV

dtQ Qi e= −

µ = + ⋅ + ⋅+

0 405

0 0031 0 55

2

2,,

,( )h

h

H h

Q L h g= ⋅ ⋅ ⋅ ⋅µ 1 5 2,

APLICACIONES DE CÁLCULO NUMÉRICO 63

El listado del programa principal es:

%--------------------- Vertedero.m -----------------------%clear, clfglobal 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)')

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

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

APLICACIONES DE CÁLCULO NUMÉRICO 65

0 2 4 6 8 10 12 14 16 18 200

50

100

150

Cau

dal

es (

m3/h

)

0 2 4 6 8 10 12 14 16 18 200

5

10

Alt

ura

de

Lam

ina

(cm

)

0 2 4 6 8 10 12 14 16 18 20590

595

600

Volu

men

del

Ag

ua

(m3

)

Tiempo (Minutos)

Figura 5.7. Caudales de entrada, salida, altura de lámina y volumen de un tanque con caudal de entrada escalonada.

%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 Entradaif 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;

endend%---------------------------------------------------------

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 uncaudal de entrada escalonado.

Observando la Figura 5.7 se aprecia que la dinámica de este proceso no esinstantánea; al aumentar el caudal de entrada, la altura de lámina aumenta deforma gradual, tardando en este ejemplo alrededor de 5 minutos en alcanzar elestado estacionario. El caudal de salida, por ser función de la altura de la lá-mina, lleva una dinámica análoga.

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

5.5. DETERMINACIÓN DE RETRASOS Y DERIVADAS

En los procesos de flujo, como en el caso precedente, hay una variable desalida, caudal de salida, retrasado con respecto al caudal de entrada mientrashay 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 cuentaque 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 dePade de primer y segundo orden:

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:

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.

(5.9)y s

x s

s

s

( )( )

=− ⋅

+ ⋅

12

12

τ

τ

e

ns

sn

− ⋅ ≈⋅ +

τ

τ1

1

es

s

es s

s s

s

s

− ⋅

− ⋅

≈− ⋅

+ ⋅

≈ ⋅ − ⋅ ⋅ +⋅ + ⋅ ⋅ +

τ

τ

τ

τ

τ ττ τ

12

12

6 126 12

2 2

2 2

APLICACIONES DE CÁLCULO NUMÉRICO 67

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

Para el cálculo de las variables retrasadas, haciendo uso de la integraciónnumé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 dominiode Laplace, multiplicar por s, al pasar al dominio del tiempo es derivar:

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

d t

dts F s

ƒ

= ⋅ − ƒ( )( ) ( )0

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:

De donde se obtiene la derivada de la variable retrasada:

(5.10)

Esta ecuación integrada conduce a:

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

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

y x y x' ( ) '= ⋅ − −2τ

y y x x+ ⋅ = − ⋅τ τ2 2

' '

x(t)

–1

2/x(t- )–

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

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:

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 alcuadrado 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áficay 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

b a b dt= ⋅ ⋅( )∫100 –

Figura 5.9, en donde a representa una variable a la que se le calcula su deriva-da, representando b su derivada.

APLICACIONES DE CÁLCULO NUMÉRICO 69

s

1+0,01 s

a b

Figura 5.9. Diagrama de bloques del cálculo aproximado de derivadas.

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 seobtiene, 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 tauF=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:

>> RetraLanans =

t tˆ2 (t-3)ˆ20 0 01 1 -12 4 -13 9 -14 16 05 25 46 36 97 49 168 64 259 81 36

10 100 4911 121 6412 144 81

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

En el programa principal se hizo uso de la función spline, para obtenerdatos interpolados. Su sintaxis es:

Yn=spline(X,Y,Xn)

Su funcionamiento se pone de manifiesto en el ejemplo siguiente: Se tratade 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

APLICACIONES DE CÁLCULO NUMÉRICO 71

0 2 4 6 8 10 120

50

100 t

2

0 2 4 6 8 10 120

20

40

60

80

(t–

3)2

t

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

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 conMatLab, 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 rectapostulada. 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, seobtiene 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:

Igualando a cero, y simplificando estas expresiones, se obtiene un sistemade dos ecuaciones con dos incógnitas:

m · ΣX 2 + b · ΣX = ΣX · Ym · ΣX + N · b = ΣY

d

dmm X X Y b X

d

dbN b Y m X

Σ Σ Σ Σ

Σ Σ Σ

δ

δ

22

2

2 2 2

2 2 2

= ⋅ ⋅ − ⋅ ⋅ − ⋅ ⋅

= ⋅ ⋅ ⋅ + ⋅ ⋅–

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

Resolviendo el sistema se obtienen los coeficientes de la recta:

(5.12)

(5.13)

El grado de bondad del ajuste se analiza mediante el coeficiente de corre-lación, cuya expresión general toma la forma de:

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

(5.14)

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.583 10.844 12.485 13.356 15.817 18.878 20.839 21.82];

%---------------------------------------------------

El programa principal de ajuste a una recta por mínimos cuadrados, segúnlas ecuaciones previas, es:

%----------------- Ajulineal.m ---------------------DatosALX=datos(:,1); Y=datos(:,2); N=length(X);SX=sum(X);SX2=sum(X.ˆ2);

rN X Y X Y

N X X N Y Y= ± ⋅ ⋅ − ⋅

⋅ − ⋅ ⋅ −Σ Σ Σ

Σ Σ Σ Σ( ( ) ) ( ( ) )2 2 2 2

rY Y

Y Yc= ± −−

ΣΣ

( )( )

2

2

mN X Y X Y

N X X= ⋅ ⋅ − ⋅

⋅ −Σ Σ Σ

Σ Σ2 2( )

bY X X X Y

N X X= ⋅ − ⋅ ⋅

⋅ −Σ Σ Σ Σ

Σ Σ

2

2 2( )

APLICACIONES DE CÁLCULO NUMÉRICO 73

En la Figura 5.11 se muestra el resultado numérico y gráfico del ajuste dedatos experimentales a una recta; los datos se muestran con el signo «*», y enlí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

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’)%---------------------------------------------------

1 2 3 4 5 6 7 8 96

8

10

12

14

16

18

20

22

r= 0,99502

b= 4,4372

m= 1,975

Figura 5.11. Ajuste de datos a una recta.

distribución de datos es lineal o no, con relación a comparar distribuciones dedatos 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, lacomposición del vapor en función de la composiciórı del líquido sigue la ecua-ción de uso restringido:

(5.15)

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 denominadorpor (1 – x)2, se obtiene:

(5.16)

Realizando los siguientes cambios de variables:

D = y – xA = C · R

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

(5.17)

Realizando un nuevo cambio:

VU

D2 =

DA U

U R= ⋅

+( )2

Ux

x=

−1

y xC R

xx

xx

R

− =⋅ ⋅

−+

1

1

2

y xC R x x

x R x= + ⋅ ⋅ ⋅ −

+ ⋅ −( )

[ ( )]1

1 2

APLICACIONES DE CÁLCULO NUMÉRICO 75

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

(U + R)2 = A · V2

Ecuación que, reordenada, toma la forma lineal:

(5.18)

La ecuación (5.18) relaciona linealmente V con U. Si la distribución de losdatos (x,y) sometidos a las transformaciones expuestas siguen una trayectorialineal, 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:

Deshaciendo los cambios hechos, los coeficientes de el ecuación (5.15) son:

Con los valores así calculados de R y C, y los valores de x, se calculan unasyc, 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 enel 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

Cb m

Rb

m

=⋅

=

1

mA R C

bR

A

R

R C

= =⋅

= =⋅

1 1

VR

A

U

A= +

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

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

APLICACIONES DE CÁLCULO NUMÉRICO 77

0,2 0,4 0,6 0,8 1 1,20,5

1

1,5

2

U=x/(1–x)

V=(

U/(

y–x)

)0,5

m= 1,152b= 0,55015

R= 0,47756C= 1,5779

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

0,2

0,4

0,6

0,8

x

y

Figura 5.12. Composición benceno en la fase vapor frente a composición de benceno en la fase líquida.

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 lastransformaciones indicadas, y la recta ajustada a estos datos, haciendo uso depolyfit, observándose un buen grado de concordancia. En el gráfico inferior serepresentan los datos (x,y) de partida, representados por «o», y en línea continua semuestra 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 esla determinación de las frecuencias.

En el siguiente ejemplo se crea una señal compuesta, a la que se le añade unruido aleatorio de cuantía análogo a la señal.

El período de muestreo se toma en milisegundos, creando una base detiempo 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 laque 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 departida, (t,Y) para calcular las frecuencias.

A las y a analizar, se les aplica la transformada de Fourier.

Y=fft(y);

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

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

APLICACIONES DE CÁLCULO NUMÉRICO 79

0 0,05 0,1–2

–1

0

1

2

Tiempo (seg.)x=si

n(2

⋅ pi ⋅

50

⋅ t)+

sin

(2 ⋅ p

i ⋅ 1

00 ⋅

t)+s

in(2

⋅ pi ⋅

200

⋅ t)

0 0,05 0,1–2

–1

0

1

2

3

4

5

y=x+

3 ⋅ r

and

(len

gth

(t),

1)

Tiempo (seg.)

50 100 150 200 2500

1

2

3

4

5

6

7x 10 4

Frecuencia

Po

ten

cia

Esp

ectr

al

Figura 5.13. Análisis de frecuencias.

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

>> 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 frecuenciasbuscadas 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 inconvenientese 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);

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

6.1. INTRODUCCIÓN A SIMULINK

81

6Simulink

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

Simulink es un software para simulación, análisis y modelado de sistemasdinámicos, que acompaña a MatLab, en forma de toolbox. Su interface gráficapermite «ver» los modelos.

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

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

Figura 6.3. Librerías de bloques no continuos.

Simulink soporta sistemas lineales y no lineales, continuos, discretos e hí-bridos. Simulink viene con muchos ejemplos a modo de demos para facilitar suuso.

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.

La notación matemática de los bloques es la utilizada en los tratados deControl 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 pors representa integrar.

SIMULINK 83

Figura 6.4. Bloques generadores de señales.

Figura 6.5. Librerías de funciones y tablas.

En los diagramas de bloques lo que sale es el producto de lo que entra porel 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.

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 seactiva pulsando sobre su icono en la barra de tareas, obteniéndose laventana de librerías de Simulink

2. De la ventana de librerías se consigue la ventana de construcción delmodelo, pulsando File, New, Model, con lo que se obtiene unanueva ventana vacía, para construir ahí el modelo deseado.

3. Se despliega Sources de la ventana de librerías. Se arrastra o copiaClock 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, sedesplaza a la entrada de Gain. De este modo Clock y Gain quedanunidos. Pulsando dos veces sobre Gain se seleciona su valor a 2. La sa-lida de Gain es su entrada multiplicada por su valor seleccionado. Lasalida 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, alpulsar el botón derecho se accede a Propiedades del texto.

SIMULINK 85

Figura 6.8. Librerías de salidas.

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 laentrada de Integrador. Pulsando dos veces sobre Integrador, seabre 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 selogra el objetivo buscado, t2.

8. Para ver la integración conseguida, es necesario llevar esa salida a unvisualizador, X Y graph, que se halla en la librería Sinks, desdedonde se copia a la ventana del modelo, cuyas entradas corresponden alas salidas del reloj, X, y del integrador, Y.

9. Los métodos y parámetros de integración, son seleccionables desde laventana del modelo en Simulation parameters, del menú Si-mulation.

10. Para ejecutar la simulación se activa Start del menú Simulationde 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, seutiliza el módulo To workspace de la librería Sinks. Este módulose 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 delnombre 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 derepresentació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 yrelleno con los parámetros pertinentes.

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.

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.

SIMULINK 87

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.

Como la ecuación diferencial es de segundo grado, es necesario integrar dosveces. El primer integrador tiene por entrada la derivada segunda, y su salidaserá 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:

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 seextrae un caudal de valor medio de las últimas 24 horas, media móvil, a la vezque determinar la concentración de las sustancias, sustrato, variables en la sa-lida.

d y

dt

dy

dty

2

2 3 6= – –

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

Qi(t)Ci(t)

Volumende seguridad

Variaciónde volumen

Volumeninicial

V(t) C(t)

C(t)Q

Figura 6.12. Esquema y variables de un ecualizador.

La variación de volumen de líquido en el ecualizador está determinado, porlo que entra y por lo que sale en un instante:

(6.1)

Si en el tanque ecualizador no hay reacción química alguna, conservaciónde componentes, la concentración de cada componente que se mezcla con elcontenido del tanque de volumen variable sigue la ecuación:

(6.2)

La variación de volumen, puede calcularse analíticamente, si se consideraque el caudal de entrada es sinusoidal, tal como:

(6.3)

El volumen del líquido en el ecualizador estará dado por:

(6.4)

Cuyo resultado es:

(6.5)

Ecuaciones en las que V(0), representa el contenido del tanque en el instanteinicial; T, el período de una oscilación completa; y Q

v, 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]

V VQ T

Ttv= + ⋅

⋅⋅ ⋅ ⋅

( ) – cos02

12

ππ

V V QT

tv

t

= + ⋅ ⋅ ⋅

∫( ) sin0

2

0

π

Q t Q QT

ti v( ) sin= + ⋅ ⋅ ⋅

2 π

dC

dt

Q

VC Q

dV

dt

C

Vi

i= ⋅ +

⋅–

dV

dtQ Qi= –

SIMULINK 89

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.

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 contenidoen un ecualizador con caudal variable.

0 20 40 60 80 100 1200

500

1000

1500

2000

2500

Tiempo, (Horas)

Cau

dal

es, (

m3 /

h),

Vo

lum

en (

m3 )

QiQVolumen

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ñalu(1) corresponde a la integral del caudal retrasado, y u(2) corresponde altiempo retrasado.

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. Elbloque Vol, integra el caudal retrasado, para obtener el volumen aportadopor 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 Volumenintegra la diferencia del caudal de entrada menos el caudal medio retrasado.

SIMULINK 91

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 eltanque se presentan en la Figura 6.14, en la que se observa que el caudal mediode las últimas 24 horas, caudal de salida, en el comienzo de la simulación, tieneun 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 valorconstante, 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 aque en el comienzo, el caudal purgado está en un valor mínimo, observándoseque tiende a una oscilación constante.

En la Figura 6.15 se muestra el esquema de cálculo Simulink para resolverlas ecuaciones (6.1) y (6.2); cabe destacar únicamente que el integrador C vaprovisto 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]

La Figura 6.16 muestra la reducción de la variabilidad de la concentraciónde salida del ecualizador, línea continua, frente a la concentración de entrada, lí-nea discontinua.

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

0 20 40 60 80 100 120 140 160 180 20050

100

150

200

250

300

350

400

450

Tiempo (Horas)

Co

nc.

En

trad

a/sa

lida

(mg

/l)

CCi

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

[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 MatLabcurriculum series. Prentice Hall. (2000).

[4] James B. Dabney; Thomas L. Harman. Mastering simulink 4 S/E. TheMatLab 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

Bibliografía

..., 21LATEX, 19, 45TEXtos en gráficos, 45

Ajuste de datos, 56Ajuste lineal, 72angle, 12ans, 12area, 48ascii, 22, 23atan2, 13axes, 44axis, 43, 44

bar, 41bar3, 46Bazin, ecuación, 63break, 40

case, 40ceil, 22clear, 5clf, 44, 54clock, 20Color, 47, 48Complejos, números, 12conj, 12, 79

continue, 40conv, 16

date, 20datenum, 20datestr, 20

datetick, 44datevec, 20deconv, 16demo, 1Derivadas, 27, 67

de polinomios, 17det, 15, 26diary, 23diff, 27, 32double, 28dsolve, 29, 32

else, 36, 37elseif, 37eps, 80errorbar, 41etime, 21ezplot, 27

factor, 27

95

Índice alfabético

Factorial, 11feval, 10fft, 78fix, 11floor, 22fminbnd, 52fmins, 51fminsearch, 53fontsize, 45, 48for-end, 10, 38format, 5, 6fplot, 41

Fracciones simples, desarrollo, 17Funciones del tiempo, 20function, 8fzero, 62

global, 10, 69grid, 8gtext, 44

help, 1, 9hold on/off, 44

if else end, 36ilaplace, 30imag, 12inline, 11input, 35int, 27integrador, 86Integrales, 27

de polinomios, 18interp1, 18Interpolación

cubic, 18polinomial, 18spline, 18, 71

inv, 15invlaplace, 33

keywords, 4

laplace, 30, 32, 33LaPrint, 46leftarrow, 48legend, 44length, 55, 72limit, 31line, 44, 54LineWidth, 44, 48linspace, 2, 13load, 21

loglog, 41logspace. 13long, 6lookfor, 9lsqcurvefit, 55

magic, 26Maple V, 25, 31, 32matlabpath, 19Matriz, 13max, 8mpower, 15mux, 90

now, 20num2str, 57

ode113, 57ode15s, 57ode23, 57ode23s, 57ode23t, 57ode23tb, 57ode45, 57odegil4, 57, 60optimset, 55Orden de ejecución, 19otherwise, 40

path, 19pie, 41plot, 8, 41plot3, 41

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

plotmatrix, 41, 43plotyy, 41polar, 43Polinomios, 16poly, 16polyder, 17polyfit, 56polyint, 18polyval, 16power, 15pretty, 26

quad, 51quadl, 51

rand, 21rat, 5real, 12realmax, 80realmin, 80recursion, 11reshape, 14residue, 17Retrasos, 67return, 9root, 16round, 29, 70Runge-Kuta, 57, 59

save, 21scripts, 9semilogx, 41semilogy, 41short, 5

Simbólico, cálculo, 25simplify, 27size, 4solve, 28spline, 71sqrt, 6, 7, 21stairs, 41stem, 41subplot, 43, 44subs, 58sum, 55switch, 40sym, 25syms, 26

taylor, 19, 31text, 44, 54, 55title, 44Transposición, 7

variables, 3Vector, 13Vertedero, 63

what, 21which, 19while-end, 38who, 2, 3whos, 2, 3workspace, 2

xlabel, 44

ylabel, 44

ÍNDICE ALFABÉTICO 97