Introduccion a Matlab

June 12, 2019 | Author: Daniel Guerra | Category: Matlab, Matrix (Mathematics), Eigenvalues And Eigenvectors, Derivative, Mathematical Objects
Share Embed Donate


Short Description

Download Introduccion a Matlab...

Description

Introducci´ on on a MATLAB

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

2

Cap´ıtulo 1 Los primeros pasos en Matlab 1.1

Caracter´ Caracter´ısticas

Matlab es un paquete de software orientado hacia el c´  ci ent´ıfico ıfic o e inalculo alc ulo num´ num ´ erico eri co cient´ genieril. genieril. Integra Integra c´ alculo alc ulo num´erico, eri co, comp c omputa utaci´ ci´on on de matrices y gr´aficos aficos en un entorno de trabajo c´ omodo para el usuario. Su nombre significa omodo significa Laboratorio de Matrices y fue escrito inicialmente en base a los ya existentes paquetes de c´alculo alculo matricial LINPACK y EISPACK. Posteriormente se han a˜ nadido nadido librer´ıas, ıas, denominada denom inadass Toolboxes, especializadas especializadas en diferentes areas a´reas cient ci ent´´ıficas. De entre ellas ella s podemos po demos destaca de stacarr

• Simulink Toolbox  • Control System Toolbox  • System Identification Toolbox  • Robust Conntrol Toolbox  • Signal Processing Toolbox  • Filter Design Toolbox  • Symbolic Math Toolbox  por su particu pa rticular lar inter´ int er´es es para pa ra nuestra nues tra area a´rea de conocimiento. La ultima u´ltima de la lista, Symbolic a basada en el programa de c´alculo alculo simb´olico olico Maple y utiliza una sintaxis Math Toolbox , est´ diferente. Matlab ha evolucionado y crecido con las aportaciones de muchos usuarios. En entornos universitarios se ha convertido, junto con Mathematica y Maple, Ma ple, en una herramienta instructora b´ asica para cursos de matem´ asica aticas atica s aplicadas apli cadas as´ as´ı como para cursos curso s avanzados en otras ´areas. areas. En entornos industriales industriales se utiliza para investigar investigar y resolver resolver problemas pr´acticos acticos y c´alculo alc uloss de ingeni ing enier´ er´ıa. ıa. Son aplic a plicaci acione oness t´ t´ıpicas ıpic as el c´alculo alc ulo num´ nu m´erico, eri co, la l a realiz rea lizaaci´on on de algoritmos, la resoluci´on on de problemas con formulaci´ on on matricial, matric ial, la estad esta d´ıstica, ıstica , la optimizaci´on, on, etc. Es de destacar la aplicaci´on on en el estudio, simulaci´on on y dise˜ no no de los sistemas din´amicos amicos y de control. 3

CAP ´ ITULO ITULO 1.

4

1.2

LOS PRIMER PRIMEROS OS PASOS PASOS EN MATLAB MATLAB

Funcion uncionami amien ento to

Matlab es un programa programa int´ in t´erpre er prete te de comandos. Esto quiere decir que es capaz de procesar de modo secuencial secuencial una serie de comandos previamente previamente definidos, obteniendo de forma inmediata los resultados. Los comandos pueden estar ya definidos en el propio Matlab y pueden tambi´en en ser definidos d efinidos por po r el usuario. Para que Matlab pueda realizar este proceso pro ceso el usuario ha de escribir la lista de d e comandos en la ventana de comandos, si su n´ n umero u´mero es reducido, o en un fichero con extensi´on on .m, constituyendo entonces un programa. El m´etodo eto do que debe deb e seguirse seguir se para proce pr ocesar sar los datos dat os es muy simple: 1. El usuario escribe expresiones en la ventana de comandos, o bien en un archivo de texto apropiado (archivo.m). 2. Tras la orden de ejecuci´ on on enter (o escribir el nombre del fichero), fichero), Matlab procesa pro cesa la informaci´on. on. 3. Matlab Escribe Escribe los resultados en la ventana ventana de comandos y los gr´ aficos aficos (si los hubiere) en otras ventanas gr´ aficas. aficas.

1.3 1.3

Sin Sintaxi taxiss

Para escribir las expresiones es preciso respetar ciertas reglas sint´acticas acticas propias de Matlab. Algunas se parecen bastante a las de otros lenguajes de programaci´on on por lo que no resultan extra˜ nas. nas.

1.3.1 1.3.1

Expre Expresio siones nes algebr algebraic aicas as

Est´an an formadas por cadenas de caracteres, n´ umeros umeros y operadores operadore s algebraicos. Las cadenas de caracteres pueden ser s´ımbolos ımbolos de variables ariables (matrices) (matrices) o funciones funciones de Matlab. Las may´ usculas usculas y min´ usculas usculas son distintas. Podemos distinguir dos tipos tip os de expresiones: num´ ericas ericas (propias de Matlab) y simb´ olicas olicas (propias de Maple). Una expresi´ on on num´ nu m´erica eri ca pued p uedee conter co nterner ner s´ımbolo ımb oloss (nombr (n ombres es de d e variavaria bles) pero p ero ´estos estos han h an de estar es tar previame pr eviamente nte asignadas asign adas a valores num´ericos. erico s. Las expresio ex presiones nes >> a = 2; b = 3; >> a + b

son num´ ericas; ericas; el valor de a + b es hallado y mostrado por Matlab inmediatamente: ans = 5. Sin embargo, embargo, una expresi´ expresion o´n simb´ simb´olica olica puede contener conten er s´ımbolos ımbolo s sin valor num´erico erico asignado. asigna do. Si escribi es cribimos mos >> syms x >> p = 2*x^2 - 7;

la segunda expresi´on on representa un polinomio en la indeterminada x. El valor de p para x = 1 se puede obtener con >> subs(p,x subs(p,x,1) ,1)

que dar´a como resultado: ans = 5.

1.3. 1.3.

5

SINT SINTAXIS  AXIS 

1.3. 1.3.2 2

Opera Operado dore ress

Hay operadores para n´ umeros (reales o complejos) y para matrices. umeros Para n´ umeros: umeros: +

-

*

/

^

N´umeros umeros complejos: Est´a definida la unidad imaginaria, mente ment e por p or los s´ımbolo ımb oloss i y j Para matrices: +

-

*

/

\

√−1, que se denota indistinta-

^

Para matrices elemento por elemento: .+

.-

.*

./

.^

Los operadores para n´ umeros se colocan entre dos n´ umeros umeros y dan como resultado otro umeros n´umero. umero. Por ejemplo ejemplo 2 + 3 o a + b, si a y b han sido asignadas previamente a n´ umeros. umeros. Los operadores para matrices se colocan entre dos matrices y dan como resultado otra matriz. Los operadores de relaci´ relacion o´n son para n´ umeros umeros reales, se colocan entre dos n´ umeros umeros y dan como resultado 1, que significa cierto, o 0, que significa falso. El significado significado de todos ellos resulta obvio, si bien conviene aclarar que el operador operado r == significa igual , en el sentido de condici´on on (por ejemplo a==b puede ser cierto o falso), y es diferente del operador operado r = que sirve sirve para asignar un valor a una variable variable (por ejemplo ejemplo a=3) significa dar a la variable valorr de 3. El operador operador ~= significa distinto, tambi´en en en e n el sentido de condici c ondici´ on. o´n. a el valo Los operadores de condici´ condicion o´n se utilizan, utilizan, sobre todo, en las estructuras de programaci´ on on if-then-else, for, y while. Para delimitar delimitar las matrices se utilizan utilizan los corchetes “[ ]”. Para separar separar elementos elementos consecutivos, el espacio en blanco (barra espaciadora) o la coma , y para pasar de fila, la tecla enter o el punto y coma ; . La traspuesta conjugada de una matriz de n´ numeros ´ complejos A se representa por A’. Otros operadores, para usos varios, son who, help help, , ! , save save, , load load Ayudas al usuario: who, (AND), ), ! (OR) (OR), , ~ (NOT (NOT) ) Operaciones l´ogicas: ogicas: & (AND

1.3.3 1.3.3

Funcion unciones es elemen elemental tales es

Matlab dispone de las funciones elementales m´as as comunes (las que tienen las calculadoras de bolsillo) y otras especiales, especiales, propias. Realizan Realizan una operaci´ on on sobre un argumento num´erico erico dado da do de tipo tip o matriz y operan op eran elemento ele mento por po r elemento. elemento . Las m´ as as usuales son: Trigonom´ rigon om´etricas: etric as: sin, cos, tan, asin, asin , acos, atan, sinh, sinh , cosh, tanh, asinh, asin h, acosh, atanh. ata nh. L´ogicas: ogicas: any, any, all, find, exist, isnan, finite, isempty, isempty, isstr, strcomp. Otras: abs, angle, sqrt, real, imag, conj, round, fix, floor, ceil, sign, rem, exp, log, log10. Especiales: bessel, gamma, rat, ert, invertf, ellipk, ellipj.

CAP ´ ITULO 1.

6

1.4

LOS PRIMEROS PASOS EN MATLAB

Desarrollo de una sesi´ on

MA LcoAB nd ndow

Los manuales de Matlab explican detalladamente los conceptos, comandos y procedimientos del programa. Aqu´ı vamos realizar una introducci´ on a su manejo mediante algunos ejemplos. Es conveniente que los alumnos realicen por su cuenta otros parecidos y traten de utilizar Matlab para resolver problemas de Matem´aticas, F´ısica y otras asignaturas. La instalaci´on se realiza autom´aticamente con el CD de Matlab. Una vez instalado el programa, al picar con el rat´on en el icono de MATLAB aparece en la pantalla la ventana:

Esta ventana se llama En la primera l´ınea aparecen las opciones disponibles.

1.4.1

y es en la que el usuario opera.

Comandos de Utilidad

Los comandos demo, help, who, whos, dir, diary y algunos otros, resultan muy ´utiles pera el usuario en el desarrollo de la sesi´on. El comando demo nos muestra, de modo interactivo, un amplio abanico de ejemplos de aplicaci´on de Matlab y es de gran ayuda durante nuestros inicios con el programa. El comando help funci´ omo on_deseada muestra en la pantalla un texto explicando c´ se utiliza. Por ejemplo, >> help poly POLY Characteristic polynomial. If A is an N by N matrix, POLY(A) is a row vector with N+1 elements which are the coefficients of the characteristic polynomial, DET(lambda*EYE(A) - A) . If V is a vector, POLY(V) is a vector whose elements are the coefficients of the polynomial whose roots are the elements of V . For vectors, ROOTS and POLY are inverse functions of each other, up to ordering, scaling, and roundoff error.

´ OPERACIONES NUM ERICAS 

1.5.

7

ROOTS(POLY(1:20)) generates Wilkinson’s famous example. See also ROOTS, POLYVAL.

muestra en la pantalla la ayuda sobre el polinomio caracter´ıstico de una matriz. El uso de la ayuda es muy conveniente, sobre todo en el per´ıodo de aprendiza je. Los comandos who y whos dan una lista de las variables que est´an actualmente en la memoria (workspace de Matlab. El comando dir, igual que el de DOS, lista el directorio actual. El comando diary sirve para que todo lo que vamos tecleando y los resultados obtenidos (incluidos los errores) se almacene en un archivo. Para ello debemos escribir, en el instante a partir del cual queremos grabar la sesi´on >> diary dia12

en donde dia12 es el nombre del archivo en el que queremos que se escriba. Para terminar el proceso de grabaci´ on hemos de teclear >> diary off

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

1.5

Operaciones num´ ericas

Matlab puede operar como una calculadora: si el usuario escribe las o´rdenes apropiadas, los resultados aparecen en la ventana de comandos (Command Window ). Obs´ervese que si ponemos ; al final de la expresi´on el resultado no se escribe en la pantalla. Es capaz de realizar las operaciones aritm´eticas suma , resta , multiplicaci´  on , divisi´  on  y umeros (reales y complejos), con vectores (polinomios) y con matripotenciaci´  on , con n´ ces. Adem´ as, mediante la librer´ıa Symbolic Math Toolbox, puede tambi´en operar con expresiones simb´olicas.

1.5.1

Operaciones aritm´ eticas

Las operaciones aritm´eticas con n´ umeros son, quiz´as, las m´as sencillas que pueden efectuarse. Para ilustrar su realizaci´ on, a continuaci´on se muestran una serie de l´ıneas que comienzan por >>, indicativo (o prompt ) de la pantalla de comandos en una sesi´on de Matlab, seguido de una orden y del resultado que aparecer´ıa inmediatamente en la pantalla si se ejecutara. >> a = 4 a = 4 >> b = 5 + a b = 9 >> c = a^2 + b^2 c = 97 >> sin (30*pi/180) ans = 1/2

 N o c o 8

CAP ´ ITULO 1.

LOS PRIMEROS PASOS EN MATLAB

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

La forma de operar con n´ umeros complejos es igual que para los reales. >> a=1; b=2; c=3; >> x1=(-b+sqrt(b^2-4*a*c))/(2*a) x1 = -1.0000 + 1.4142i >> x2=(-b-sqrt(b^2-4*a*c))/(2*a) x2 = -1.0000 - 1.4142i >> a*x1^2+b*x1+c ans = 0 >> c1=1+2*i c1 = 1.0000 + 2.0000i >> c2=1-2*i c2 = 1.0000 - 2.0000i

cione con cto

Paso rectangulares

↔ polares:

>> M=abs(c1) M = 2.2361 >> alpha=angle(c1) alpha = 1.1071 >> alpha_grados=alpha*180/pi alpha_grados = 63.4349 >> M*cos(alpha) ans = 1 >> M*sin(alpha) ans = 2

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

MATLAB no precisa una notaci´on especial para vectores. Vamos a hacer algunas operaciones sencillas con vectores.

1.5.

cione con no

´ OPERACIONES NUM ERICAS 

>> a a = 1 >> b b = 3 >> c c = 4 >> d c = 3

9

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

2 3 = a + 2

4

6

4

3

4

5

4 5 = a + b

6

8

6

5

6

7

6 8 10 = a .* b

14

10

8

10

12

48

24

15

24

35

8

15

24

Los vectores, por defecto, son vectores fila.

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



>> p=[3 -5 7 3]

Las ra´ıces de un polinomio se hallan mediante la funci´on roots: >> r=roots(p)

El producto de dos polinomios se realiza a trav´es de la convoluci´ on de los vectores de sus coeficientes, mediante la funci´on conv. Por ejemplo, >> p1=[-1 -3 3 4]; >> p2=[1 2 4 0]; >> p=conv(p1,p2);

Para la divisi´on se usa la deconvoluci´on. Mediante la funci´ on deconv se obtiene el cociente q y el resto r de la divisi´on. >> [c,r]=deconv(p,p1);

La funci´on polyval sirve para hallar el valor de un polinomio. Si el par´ametro que le pasamos es un vector, calcula otro vector con los valores del polinomio para cada uno de los del vector. La funci´on polyfit sirve para hacer ajustes polin´omicos de una secuencia de datos dada por dos vectores X e Y. Se puede elegir el grado del polinomio. En el siguiente ejemplo se utilizan estas dos funciones: >> >> >> >> >> >> >>

x=[0:10]; y=rand(x); plot(x,y) p=polyfit(x,y,3); z=polyval(p,x); hold plot(x,z)

% Elegimos grado 3

10

cione con ce

CAP ´ ITULO 1.

LOS PRIMEROS PASOS EN MATLAB

Citaremos por u´ltimo la funci´on residue que sirve para hallar los residuos de una funci´on racional en los polos de la misma (o coeficientes de su expansi´on en fracciones simples), bajo el supuesto de que los polos sean simples. Adem´ as, dicha funci´on calcula tambi´en los polos y el t´ermino directo. >> B = [1 2 3 4]; >> A = [1 2 3 4 5 6 7]; >> [r,p,k] = residue(B,A);

Veamos c´omo se efect´ uan algunas de las operaciones m´as comunes con matrices: Introducir una matriz A: >> A = [1 2 3;4 5 6;7 8 0]

C´alculo de la transpuesta: >> B = A’

Producto matricial: >> C = A * B

Determinante: >> det(A)

Rango de la matriz: >> rank(A)

N´umero de condici´ on: >> cond(A)

Matriz inversa: >> inv(A)

Valores propios y vectores propios: >> [val,vec]=eig(A)

Valores singulares: >> svd(A)

Exponenciaci´on matricial (eA ): >> expm(A)

Polinomio caracter´ıstico: >> p = poly(A)

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

1.6.

´ OPERACIONES SIMBOLICAS 

1.6

11

Operaciones simb´ olicas

La librer´ıa Symbolic Math Toolbox da acceso a Matlab a algunas funciones del n´ ucleo de Maple que permiten operar con expresiones simb´ olicas.

1.6.1

Operaciones aritm´ eticas

En las primeras versiones de la librer´ıa Symbolic Math Toolbox  era necesario emplear los comandos especiales symadd, symsub, symmul, symdiv y sympow para las operaciones de suma, resta, multiplicaci´on, divisi´on y potenciaci´ on, respectivamente, de expresiones simb´ olicas. Afortunadamente, esto ya no es necesario y se pueden usar para ello los operadores num´ericos +, -, +, *, / y ^, siempre y cuando las variables simb´olicas se hayan declarado previamente con sym() o syms. Si ponemos >> syms a b p x >> a = x^3+3*x^2-2*x+7; >> b = x^2+x+3; >> p = a * b p = (x^3+3*x^2-2*x+7)*(x^2+x+3)

obtenemos el polinomio producto en forma factorizada. Si lo queremos ver forma expandida, pondremos >> expand(p) ans = x^5+4*x^4+4*x^3+14*x^2+x+21

Las dem´as operaciones simb´olicas se efect´ uan de modo similar.

1.6.2

Sustituci´ on de variables

La sustituci´on de un s´ımbolo por otro en una expresi´ on simb´olica se puede realizar con la orden subs. La forma de hacerlo es subs(expr, old, new), en donde expr es una expresi´on simb´olica, old es el s´ımbolo (o valor) que se desea sustituir y new es el nuevo s´ımbolo o valor. Supongamos que en el polinomio f  = ax2 + bx + c queremos sustituir x por -1. Para ello, si escribimos >> syms x a b c >> f = a*x^2 + b*x + c; >> g = subs(f,x,-1)

entonces sale g = a - b + c

Se pueden tambi´en sustituir varias variables a la vez. Si en el mismo polinomio de antes quisi´eramos sustituir a por 1, b por 2 y c por k, podemos poner

 N doe y no a do onv deon on o 12

CAP ´ ITULO 1.

LOS PRIMEROS PASOS EN MATLAB

>> syms x a b c k >> f = a*x^2 + b*x + c; >> g = subs(f,[a,b,c],[1,2,k])

y obtendremos

g = x^2+2*x+k

En una expresi´on simb´olica racional suele interesar conocer el numerador y el denominador de la misma. Para esto tenemos la orden numden. Si, por ejemplo, nos dan la expresi´on x2 + 1 x + h= , 2x 1 x 1





podemos hallar el denominador y el denominador de la misma con >> x=sym(’x’) >> h = (x^2+1)/(2x-1) + x/(x-1); >> [n,d] = numden(h) n = x^3+x^2-1 d = (2*x-1)*(x-1)

Las o´rdenes poly2sym y sym2poly sirven, respectivamente, para convertir un polinomio expresado en forma num´erica (vector de coeficientes) en su expresi´ on simb´olica, y viceversa. El siguiente ejemplo ilustrar´a su utilizaci´on. >> syms x >> p = [1 2 3 4 5] >> px = poly2sym(p,x) px = x^4+2*x^3+3*x^2+4*x+5 >> sym2poly(px) ans = 1 2 3 4 5

1.7

Gr´ aficos

Matlab tiene una buena colecci´on de comandos para obtener representaciones gr´ aficas a partir de datos num´ericos y tambi´en algunos para expresiones simb´ olicas.

1.7.

´ GRAFICOS 

1.7.1

13

Gr´ aficos en 2D

En las aplicaciones interesa a veces conocer el valor num´erico de una funci´ on y = f (x) para uno o varios valores de la variable. En Matlab, dada una funci´ on y = f (x), definida en un intervalo [a, b], es posible representarla por un par (x,y) de vectores de n´umeros, tales que el vector x contiene un conjunto finito de valores de x y el vector y contiene el conjunto de valores im´ agenes de x por la funci´on y, calculados por el propio Matlab. Una vez representada de este modo la funci´on, se puede representar gr´aficamente. Por ejemplo, dada la funci´on y = 10(1 e x/3 sin(10x)), definida en el intervalo [0, 10], una posible representaci´ on en Matlab, seguida de su representaci´on gr´afica, ser´ıa





>> x=[0:0.1:10]; >> y=10*(1-exp(-x/3).*sin(10*x)); >> plot(x,y),title(’Gr´ a fica de una funci´ on’) Gráfica de una función 20

18

16

14

12

10

8

6

4

2

0 0

1

2

3

4

5

6

7

8

9

10

La gr´afica corresponde a una funci´ on sinusoidal amortiguada m´as una constante.

1.7.2

Gr´ aficos en 3D

Las funciones de dos variables, de la forma f (x, y) se pueden representar gr´ aficamente con Matlab en 3D. Para ello es preciso crear un dominio de puntos en forma de malla rectangular en el plano (x, y), dentro del cual se desea representar la funci´o n. Esto se hace con la orden meshgrid (antes meshdom) de Matlab. Ve´amoslo con un ejemplo. Sea la funci´on z : R2 R, z = 1 x2 y 2 ,



 −



cuyo dominio es el c´ırculo x2 + y 2 < 1, y supongamos que queremos calcular los valores de z en una regi´on rectangular del plano (x, y) definida por los puntos (-1.25,-1.25) y (1.25,1.25), y representarla gr´aficamente. Para ello escribiremos:

CAP ´ ITULO 1.

14

LOS PRIMEROS PASOS EN MATLAB

>> [x,y] = meshgrid(-1.25:0.2:1.25,-1.25:0.2:1.25); >> z = sqrt(1 - x.^2 - y.^2); >> mesh(z)

y en la pantalla aparecer´a el gr´afico.

1

0.8

0.6

0.4

0.2

0 15 14 10

12 10 8 5

6 4 2 0

1.8

0

Ficheros-m

Matlab est´ a dotado de un mecanismo que le permite interpretar ficheros de texto, con la condici´on de que su nombre termine por .m. Se utilizan principalmente para crear funciones (en el sentido matem´atico), programas y funciones (´ ordenes) de Matlab.

1.8.1

Funciones-funci´ on

Mediante ficheros-m podemos crear funciones en el sentido matem´atico: f  : x

→ f (x)

La denominaci´ on que da Matlab a estas funciones es funciones-funci´on (function functions). Estas funciones permiten realizar integraci´ on num´erica, resolver ecuaciones no lineales, problemas de optimizaci´on y resolver ecuaciones diferenciales. Veamos un par de ejemplos. Dentro del editor definimos la funci´on f 1(x) function y=f1(x) y=1 ./ ((x-0.3).^2+0.01) + 1 ./((x-0.9).^2+0.04)-6;

Una vez salvado el fichero podemos calcular la funci´on en un intervalo y dibujarla.

1.8.

15

FICHEROS-M 

>> x=[-1:0.1:2]; >> y=f1(x); >> plot(x,y); Función y=f1(x) 100

80

60

40

20

0

−20 −1

−0.5

0

0.5

1

1.5

2

Es posible hallar los valores m´aximo y m´ınimo de la funci´on en un intervalo: >> xmin = fmin(’f1’,0.5,1); xmin = 0.6370 >> ymin=f1(xmin); ymin = 11.2528

Otro ejemplo puede ser representar la funci´on f  =

1 1 1 + x y

utilizada en Optica. Para ello creamos el fichero lente.m con la definici´on de la funci´on. Escribimos function z=lente(x,y) z = 1 ./ (1 ./ x + 1 ./ y);

grabamos el fichero, con el nombre lente.m, y ya podemos utilizar la funci´on y representarla gr´aficamente.

CAP ´ ITULO 1.

16

LOS PRIMEROS PASOS EN MATLAB

>> x=[-1:0.05:1]; >> y=x; >> [xx,yy]=meshdom(x,y); z=lente(xx,yy); atgz=atan(z);   mesh(atgz,[60 60]) title(’Funci´ o n lente. f= 1/(1/x + 1/y)’) Función de dos variables

2 1.5 1 0.5 0 −0.5 −1 −1.5 −2 0 10 20

0 10

30 20 40

30 40 50

50

Podemos asimismo hallar el valor m´ınimo en un intervalo: >> xmin=fmin(’f1’,0.5,1) >> ymin=f1(ymin)

1.8.2

Programaci´ on

Para evitar teclear repetidamente las mismas funciones, Matlab permite crear un fichero con una lista de comandos que luego, al ser llamado, interpreta secuencialmente. Dispone, como otros lenguajes de programaci´ on, de las estructuras if-then-else, while y for. El archivo en el que se escriben las ´ordenes de Matlab (programa) ha de tener la extensi´on .m y se puede escribir con cualquier editor de texto. Para ejecutar el programa, simplemente ponemos su nombre >> nombre-fichero

el mismo nombre que hayamos puesto antes (pero sin .m). En un fichero-m podemos colocar simplemente una lista de instrucciones de Matlab con lo que al llamarlo se ejecutar´ an secuencialmente. Matlab tiene un lenguaje de programaci´ on propio, de tipo int´ erprete. Es decir, es capaz de interpretar una lista de instrucciones contenidas en un fichero-m. Igual que

1.8.

ct nct o

FICHEROS-M 

17

otros lenguajes de programaci´ on, dispone de las estructuras de programaci´on cl´asicas: if-then-else, for, y while.

La sintaxis de la estructura if-then-else es if condici´ on1 orden1a orden2a ... ... elseif condici´ on2 orden1b orden2b ... ... else orden n end

en donde orden1*, orden2*, . . . , son ´ordenes y condici´ on1, condici´ on2, . . . , estamentos condicionales o booleanos de Matlab. Puede observarse que no se pone la palabra then. Veamos un ejemplo. if i==j A(i,j) = 2; elseif abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end

La sintaxis de la estructura for es for variable=expression orden1a orden2a ... ... end

en donde orden1*, orden2*, . . . , son o´rdenes de Matlab. Por ejemplo, A = zeros(3,4) for i=[1:4] for j=[1:4] A(i,j) = i+j;

18

ct

CAP ´ ITULO 1.

LOS PRIMEROS PASOS EN MATLAB

end end

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

La sintaxis de la estructura while es while condici´ on orden1a orden2a ... ... end

en donde orden1a, orden2a, .. . , son o´rdenes y condici´ on es un estamento condicional o booleano de Matlab. Como ejemplo, podr´ıamos poner n = 0; eps=1; while 1+eps > 1 eps = eps/2; n = n+1; end

Cap´ıtulo 2 Simulink 2.1

Inicio

Un diagrama de bloques es un modelo gr´afico que representa el modelo matem´ atico de un determinado sistema din´amico. Simulink es una librer´ıa (toolbox ) de Matlab que permite representar el diagrama de bloques de un sistema y a continuaci´ on proceder a su simulaci´ on. El programa se inicia escribiendo simulink en la pantalla de comandos de Matlab o tambi´en pulsando con el rat´on en el icono coloreado de Simulink que aparece en la ventana de comandos de Matlab. Con ello se abre una ventana titulada Simulink Library Browser  que contiene la librer´ıa Simulink  y otras que son, digamos, complementarias. Al pulsar sobre el signo + que precede a su nombre, aparece una nueva lista y entonces en la pantalla veremos:



Simulink Countinous Discrete Math Operations Signal Routing Sinks Sources .. .

+

Dials & Gauges Blockset

+

Stateflow .. .

Los elementos de la lista de Simulink son los esenciales para construir diagramas de bloques. El resto son librer´ıas adicionales especializadas a´reas espec´ıficas de control, en formas avanzadas de simulaci´on, etc. 19

CAP ´ ITULO 2. SIMULINK 

20

2.2

Creaci´ on y simulaci´ on de un modelo

Para aprender a manejar Simulink comenzaremos realizando el modelo de un sistema de control simple. Dado el diagrama de bloques de un sistema de control, U (s)

+ -

G(s)



Y (s)

H (s) en donde

s+1 2s + 1 , H  ( s) = s2 + 4 s+1 y suponiendo que la entrada es una funci´on de tipo escal´on unitario, queremos realizar la simulaci´ on del mismo con Simulink. La construcci´ on del modelo es muy sencilla. En primer lugar hemos de abrir una ventana para hacer el dibujo. Esto se hace picando con el rat´ on en primer el icono de la izquierda (ho ja en blanco) de la ventana de Simulink o tambi´en seleccionando con el rat´ on File New Model, en la misma. A continuaci´on iremos colocando en esta ventana los bloques del diagrama, para lo cual hemos de buscarlos en las librer´ıas de Simulink. Veamos d´onde se encuentran en este caso. Para los bloques G(s) y H (s), funciones de transferencia, utilizaremos el elemento Transfer Fcn que se encuentra en la librer´ıa Continuous de Simulink. Una vez encontrado el bloque, lo arrastramos con el rat´ on a la ventana de dibujo. Como necesitamos dos elementos, repetiremos la misma acci´on de nuevo. Tambi´en es posible efectuar una copia del elemento, sin salir de la pantalla de dibujo, sin m´as que arrastrar dicho elemento manteniendo pulsado el bot´on derecho del rat´ on. Una vez que hemos colocado los dos bloques, procederemos a ponerles sus datos. Para introducir los datos de G(s) repicaremos con el rat´on en uno de los iconos Transfer Fcn. Veremos entonces que se abre una ventana, y en ella pondremos, en formato num´ erico, los datos correspondientes a los polinomios numerador y denominador de G(s), es decir los vectores [1, 1] y [1, 0, 4] correspondientes, respectivamente, a dichos polinomios. Del mismo modo, lo que haremos para poner los datos de H (s) es repicar en su icono e introducir los vectores [2, 1] y [1, 1] en la ventana que se abra. Para el bloque con funci´on de transferencia K  constante se podr´ıa usar tambi´en el bloque Transfer Fcn si bien parece m´as apropiado el bloque Gain que se encuentra en la librer´ıa Math Operations de Simulink. Elegido ´este, lo arrastraremos con el rat´ on a la pantalla del dibujo y, tras un repique en el mismo, pondremos un 5 como valor de la ganancia. El bloque adecuado para poner el punto de suma es Sum y se encuentra en la librer´ıa Math Operations. La ventana que se abre al repicar en ´el permite poner dos o m´ as signos + o y cambiar la orientaci´on de las flechas de entrada y salida seg´ un que la barra vertical est´e en la posici´on izquierda, derecha, o entre los signos + y . Para realizar la simulaci´on hemos de poner como entrada una funci´ on de tipo escal´on. Esto lo hacemos escogiendo el bloque Step de la librer´ıa Sources de Simulink. Lo K  = 5,



G(s) =







2.2.

´ Y SIMULACI ON ´ DE UN MODELO CREACI ON

21

arrastraremos tambi´en a la ventana de dibujo y, repicando en su icono, pondremos como par´ametros los siguientes. Step time = 0, Initial value = 0, Final value = 1. Y por u ´ltimo, para ver el resultado de la simulaci´on, necesitamos un elemento en el que se genere el gr´afico de la respuesta temporal. Lo m´ as sencillo es colocar el bloque Scope que se encuentra en la librer´ıa Sinks. Una vez colocados todos los bloques, utilizando el bot´on izquierdo del rat´on, los uniremos entre s´ı mediante flechas y acomodaremos su posici´on hasta dejarla a nuestro gusto. El resultado puede ser, m´as o menos, el siguiente. s+1

5 Sum

Step

s2+4

Gain

Scope

Transfer Fcn

2s+1 s+1 Transfer Fcn

A veces puede ser conveniente invertir la orientaci´on de alg´ un bloque para mejorar el aspecto de su conexi´on. Esto ocurre en este caso con el bloque H (s) en el que las flechas van hacia atr´as. El cambio orientaci´on de un bloque se realiza picando en el mismo con el bot´on derecho del rat´on y a continuaci´ on, con el bot´on izquierdo, en Format en posibles otras operaciones, como por ejemplo Flip block. De modo similar son tambi´ ocultar el nombre de un bloque. Los bloques pueden tener otras opciones que no describimos aqu´ı pero que el usuario puede ver con facilidad con la ayuda de Matlab, accesible mediante el bot´on derecho del rat´on para cada bloque. Una vez que el modelo ha sido completado, podemos proceder a la simulaci´on. En la ventana del dibujo de Simulink, seleccionamos con el rat´ on en Simulation Simulation parameters. Esto nos permitir´ a escoger los instantes de tiempo inicial y final, el algoritmo y su paso, fijo o variable, as´ı como algunos otros par´ ametros relacionados con la simulaci´on. Aparte los tiempos, que pueden variar mucho seg´ un la simulaci´on de que se trate, los otros valores que Matlab pone por defecto suelen resultar adecuados muchas veces. Como resultado de la simulaci´on aparecer´ a en el bloque Scope la gr´afica de la respuesta temporal.





Respuesta temporal 0.7

0.6

0.5

0.4         )         t         (

      y

0.3

0.2

0.1

0

0

0.1

0.2

0.3

0.4

0.5 t

0.6

0.7

0.8

0.9

1

CAP ´ ITULO 2. SIMULINK 

22

2.3

Stateflow

Stateflow es una librer´ıa (toolbox ) de Matlab que permite modelar sistemas de eventos discretos dentro de Simulink, utilizando cartas de estado (statecharts). Las cartas de estado fueron introducidas por David Harel (Harel, 1987) y son una generalizaci´ on de las m´aquinas de estados. La librer´ıa de Stateflow posee un u´nico elemento o bloque, denominado Chart , que sirve para representar un sistema de eventos discretos. El bloque Chart  se puede conectar con otros bloques de Simulink, de tiempo continuo o discreto, para formar modelos de sistemas h´ıbridos que pueden ser muy ´utiles en la investigaci´on del comportamiento de tales sistemas mediante simulaci´on. aficos sobre Una carta de estados (statechart ) es un gr´afico formado por elementos gr´  los que van escritos ciertos elementos de texto escritos en un lenguaje especial. Entre ellos, hay unos elementos de texto especiales que son los datos y los eventos. La carta es como la hoja de papel en la que se representan los elementos. Cada carta representa un sistema de eventos discretos y constituye un bloque de Simulink que puede conectarse con otras cartas o con otros bloques de Simulink.

do

2.3.1

Elementos gr´ aficos

Los elementos gr´ aficos de son

• Estados • Transiciones • Uniones mientras que los elementos de texto son

• Datos • Eventos Los estados tienen forma de rect´ angulo con los bordes redondeados y representan estados (a veces llamados modos o fases) del sistema de eventos discretos. No debemos confundir estos estados con los estados del cl´asico modelo de estado de un sistema de control. Los estados aqu´ı considerados representan los modos o formas de evoluci´ on del sistema al reaccionar frente a los eventos. Junto a la esquina superior izquierda, cada rect´angulo lleva un texto con un nombre que identifica al estado. Tras el nombre del estado y el separador opcional “/”, pueden aparecer otros textos indicando las acciones que llevar´ a a cabo el sistema cuando est´e en ese estado. La sintaxis de Stateflow  permite especificar el instante en que se iniciar´ a la acci´on y la duraci´on de esta: on se inicia al entrar en este estado. entry: la acci´ exit: la acci´ on se inicia al salir de este estado.

23

2.3. STATEFLOW 

during: la acci´ on se inicia al entrar en este estado y permanece activa durante el tiempo

que dura el estado. on se inicia si, estando en este estado, se produce el evento e. on event  e : La acci´ Posibles acciones son cambiar el valore de una salida o efectuar una llamada a una funci´ on de Matlab. S1

e

S2

Figura 2.1: Estados p

untado uc otosubj16.2994 0 Td(eveado)Ts,j44.789984

nioe

CAP ´ ITULO 2. SIMULINK 

24

[c] (en donde c es una condici´on): la transici´on se dispara si la condici´on c (expresi´on booleana) es verdadera y se produce el evento e. Si esta parte no existe, se asume que c es cierta. Si la parte e del texto no existe, se disparar´a, bajo la misma condici´on, siempre y cuando se produzca un evento cualquiera en el sistema.

{a} (en donde a es una acci´on): al producirse transici´on el sistema lleva a cabo la acci´on a.

Si la transici´on no lleva ning´un texto, entonces se disparar´a autom´aticamente, siempre y cuando se produzca un evento cualquiera en el sistema.

Las uniones tienen forma de peque˜no c´ırculo. Hay dos tipos de uniones: uniones conectivas (connective junctions ) y uniones de historia history junctions. Las uniones conectivas son puntos de bifurcaci´ on de la carta de estados y representan puntos de decisi´on del sistema de eventos discretos. Permiten conectar una transici´on de entrada con varias transiciones de salida. Su empleo puede a veces simplificar la carta de estados y hacer que el c´odigo generado sea m´ as eficiente.

 D o

e1

e2

e3

P

H

C1

C2

Figura 2.2: Estados, subestados y uniones

Al entrar en una uni´on conectiva, el sistema, a trav´es de una condici´ on, selecciona una de las transiciones de salida para su evoluci´on. Las uniones de tipo historia se utilizan en estados que han sido divididos por una descomposici´on OR. Si en el estado padre se pone el s´ımbolo H entonces cada vez que se active el estado padre, el primer estado que se activar´a ser´a el estado hijo que estuvo activo por u ´ltima vez.

2.3.2



Elementos de texto especiales

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

• Entrada de Simulink

2.4.

nto

´ DE UN MODELO CON STATEFLOW–SIMULINK  CREACI ON

25

• Salida de Simulink • Local • Constante • Temporal • Workspace Los datos declarados como entrada o salida de Simulink generan autom´ aticamente una entrada o una salida en el bloque Chart  creado por Stateflow en Simulink. Los de los tipos local, constante y temporal pueden definirse para toda la carta o dentro de un estado individual. Los datos temporales son s´olo v´alidos mientras el estado padre se est´ a ejecutando y son reinicializados cada vez que ´este se activa. El tipo workspace es una construcci´on especial que permite utilizar el entorno de trabajo (workspace ) de Matlab para compartir datos a trav´es de toda la simulaci´ on. Los datos por defecto, se almacenan en memoria en formato double de C pero se puede cambiar a otros formatos. Cada dato tiene asociado un valor inicial y un intervalo de posibles valores.

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

• Entrada de Simulink • Salida de Simulink • Local Para los eventos que son entradas o salidas de Simulink, Stateflow crea autom´aticamente un u ´nico puerto de entrada–salida de eventos en el bloque Chart  de Simulink, de forma que todos los eventos entran o salen, formando un vector de eventos, por el mismo puerto. Cada evento lleva asociado un ´ındice que refiere la posici´ on del evento en el vector. La forma de producir un evento en Simulink para que entre en el bloque Chart  es a trav´es de cambio brusco (flanco) de alguna se˜ nal. Al declarar el evento en Stateflow, se puede elegir entre:

• Flanco de subida • Flanco de bajada • Flanco indiferente 2.4

Creaci´ on de un modelo con Stateflow–Simulink

Tras arrancar el programa Matlab, creamos un modelo nuevo (new-model ) de Simulink y colocamos en el mismo, con el rat´on, el bloque Chart  de Stateflow. Con el editor gr´afico se pueden crear cartas Stateflow, de modo interactivo, simplemente picando con el rat´ on en cada elemento y arrastr´andolo a la ventana de dibujo. Una vez colocados varios estados, podemos crear transiciones picando con el rat´on en

CAP ´ ITULO 2. SIMULINK 

26

un estado y arrastr´ andolo hasta otro estado. Se etiquetan los estados y las transiciones indicando las acciones que van a ocurrir durante la ejecuci´ on y bajo que condiciones se har´an las transiciones. Finalmente se a˜ nade el historial, uniones, y estados en paralelo para detallar las operaciones del modelo. Se pueden utilizar sub-cartas (una carta dentro de otra carta) para dotar de jerarqu´ıa al dise˜ no. Se permite crear transiciones entre objetos que residen en diferentes sub-cartas al mismo nivel o a diferentes niveles en la carta superior. Las sub-cartas permiten reducir una carta complicada a un conjunto de diagramas organizados jer´ arquicamente. Con ello se consigue que la carta sea m´as f´acil de entender y de mantener sin cambiar para nada su sem´antica. Los pasos a seguir para una aplicaci´on completa son:

cione

• Crear la carta Stateflow • Utilizar el Explorer de Stateflow • Definir un interface de bloques de Stateflow • Ejecutar la simulaci´on • Generar el c´odigo La generaci´ on de c´odigo depende de la m´ aquina en donde se vaya a implementar la aplicaci´on y no se hace hasta la ´ultima fase del dise˜no. El c´odigo generado por defecto es ANSI C pero existen programas que a partir del modelo de Stateflow generan c´ odigo para otros lenguajes. Entre ellos cabe citar el programa sf2vhld, que es un traductor de Stateflow a VHLD, y el programa sf2plc que genera c´ odigo para programar algunos aut´omatas programables.

• Si la simulaci´on va a ser larga se puede adoptar un tiempo de simulaci´on “infinito” poniendo el par´ ametro de simulaci´on Stop time = inf.

• Para que se inicie la simulaci´on el sistema necesita un primer evento, como de

arranque. Esto en ocasiones puede resultar molesto porque suele requerir que usuario produzca ese evento inicial de forma no muy ortodoxa. Esto puede evitarse marcando  en la casilla con el texto “Execute (enter) Chart At Initialization” que aparece en el men´ u File Chart Properties de la ventana Chart  de Stateflow.



2.4.1

Ejemplo

Un sistema de seguridad muy antiguo del ferrocarril son las barreras que se colocan en los cruces entre la v´ıa f´errea y las carreteras o caminos. Como todos sabemos, el funcionamiento de una de estas barreras como la de la figura 2.3 es muy sencillo: se abre y se cierra para evitar que los coches choquen con los trenes. El problema que se plantea es dise˜ nar un sistema de control autom´ atico que sea capaz de cerrar la barrera cuando se aproxime un tren y de cerrarla cuando el tren haya pasado. Supondremos en principio que la v´ıa f´errea es de un s´ olo sentido.

2.4.

´ DE UN MODELO CON STATEFLOW–SIMULINK  CREACI ON

27

Figura 2.3: Barrera de tren

Estamos ante un sistema de eventos discretos ya que la presencia y la ausencia del tren son eventos que pueden aprovecharse para abrir y cerrar la barrera. Para medir desplazamientos consideraremos una recta, eje x, dispuesta a lo largo de la v´ıa y con origen 0 en el punto en que est´a colocada la barrera, siendo el sentido positivo el de salida del tren. Los componentes necesarios para montar el sistema pueden ser: una barrera accionada por un motor-reductor, dos sensores de presencia s1 y s2, un sistema digital y rel´es y elementos auxiliares de conexi´on. Cada sensor de presencia se instalar´a junto al ra´ıl de la v´ıa de tal forma que al pasar el tren emita una se˜ nal. Colocaremos el sensor s1 en un punto x1 en el sentido de llegada del tren y alejado lo suficiente del cruce como para que d´e tiempo a bajar la barrera. El sensor s2 ser´a colocado en otro punto x2 en el sentido de partida del tren, en otro lugar pr´oximo al cruce. De este modo podremos utilizar las se˜ nales de los sensores como eventos indicativos de la presencia del tren dentro del intervalo [x1 , x2 ]. La operaci´ on de la barrera debe ser: cuando el sensor s1 se activa, la barrera debe cerrarse; cuando el sensor s2 se activa la barrera puede abrirse. Para realizar el modelo del sistema de control de eventos discretos vamos a emplear las posibilidades de divisi´on en paralelo (paralelismo) y de trasmisi´on de eventos de que disponen las cartas de estado. Los interruptores Sw 1 y Sw 2 indicados en la figura 2.4 son elementos de tipo Manual  Switch  de Simulink y sirven de modelos de los sensores de llegada y de salida del tren. Una transici´on de 0 a 1 del interruptor Sw 1 (flanco de subida) indicar´a que llega el tren y una transici´ on de 1 a 0 del interruptor Sw 2 (flanco de bajada) indicar´ a que el tren se ha ido. La carta de estados de Stateflow se compone de dos estados que evolucionan en paralelo, denominados Tren  y Barrera , con dos hijos cada uno. El estado Barrera  representa el estado de la barrera y tiene dos hijos denominados Abrir  y Cerrar . El estado Tren  representa el estado del tren y tiene dos hijos denominados Fuera  y Dentro. La carta de estados tiene como entrada (multiplexada) las se˜ nales generadas por los interruptores Sw 1 y Sw 2 . En el estado Tren , un flanco de subida en la entrada de Sw 1 es el evento preciso para disparar la transici´on s1 mientras que un flanco de bajada la entrada de Sw 2 lo es para la s2 . A su vez las transiciones s1 y s2 transmiten eventos

CAP ´ ITULO 2. SIMULINK 

28

Tren

1

Fuera



Barrera

Abrir

1

s1/e1

0 Sw1

Dentro

s2/e2

e1

e2

Cerrar

1 0 Sw2

Chart

Figura 2.4: Diagramas de Simulink y Stateflow

locales al estado Barrera  para disparar las transiciones e1 y e2 . Supondremos que inicialmente el tren est´ a lejos y la barrera est´a abierta. Por tanto, los estados iniciales del sistema son Fuera  y Abrir . La proximidad de un tren se simula accionando de 0 a 1 el interruptor Sw 1. Entonces el estado Tren  cambiar´ a de Fuera  a Dentro y antes de que se termine la transici´on s1 , el evento local e1 ser´a transmitido. El evento e1 accionar´a entonces la transici´on dentro del estado Barrera  de Abrir  a Cerrar .

Cap´ıtulo 3 Ejercicios de C´ alculo 3.0.2

Funciones variable compleja

En las aplicaciones de Sistemas Din´amicos y Teor´ıa de Control aparecen con frecuencia las funciones de variable compleja. Una funci´on de variable compleja es una funci´on f  :

→C z → f (z)

C

Las funciones de variable compleja f (z) no se pueden representar en 3D. Caben dos alternativas. La primera consiste en restringir el dominio de la funci´on a una l´ınea en el plano z, obteniendo otra l´ınea en el plano f (z). En el siguiente ejemplo, la l´ınea es el eje imaginario. (transformaci´ on conforme), >> z=[-100:.1:100]*j; >> f=1./(1+z); >> plot(f); 0.5

0.4

0.3

0.2

0.1

0

−0.1

−0.2

−0.3

−0.4

−0.5 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

La segunda posibilidad consiste en representar en 3D bien la parte real o bien la parte imaginaria de f (z) (o bien m´odulo o argumento). En el siguiente ejemplo se representa el argumento. 29

CAP ´ ITULO 3.

30 >> >> >> >> >>

3.0.3

´ EJERCICIOS DE C ALCULO

eps = 1e-9 [x,y] = meshdom(-1:0.1:1,-1:0.1:1); z=x + j*y f=1./(1+z+eps); mesh(z)

Soluci´ on num´ erica de ecuaciones

El c´alculo aproximado de las ra´ıces de la ecuaci´ on f (x) = 0 en un intervalo [a, b] es un problema cl´asico del an´alisis num´erico. Son sin duda conocidos por el lector algunos algoritmos como el m´etodo de las tangentes de Newton, el de la horquilla y el de las cuerdas (o secantes) que lo realizan. Todos ellos realizan iteraciones sucesivas xi f (xi ), i = 1, 2, . . ., a partir de un valor xi supuesto de una ra´ız y hasta conseguir que el valor de f (xi ) sea menor que un n´umero ε prefijado. Para resolver este problema con Matlab, disponemos de la funci´ on fzero. Hay que pasarle un valor inicial de prueba. Por ejemplo,



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

Aqu´ı, f1 es el nombre del fichero en el que est´a definida la funci´on.

3.0.4

Integraci´ on num´ erica

Ahora vamos a integrar num´ericamente f 1(x) en el intervalo [01] utilizando la funci´on quad (cuadratura) o quad8 >> I=quad(’f1’,0,1) >> I=quad8(’f1’,0,1)

El resultado es el mismo.

3.1

Derivaci´ on e integraci´ on

El paquete Symbolic Toolbox de Matlab permite realizar las operaciones de derivaci´on e integraci´ on simb´olicas.

3.1.1

Derivadas

El comando diff() de Matlab permite calcular derivadas, totales y parciales, de una expresi´on algebraica, funci´ on de una o varias variables y par´ametros, respecto de una de ellas (o de ellos). Supongamos que nos dan una expresi´on f (x), por ejemplo el polinomio f (x) = a3x3 + a2x2 + a1x + a0 y deseamos hallar sus derivadas respecto de x. Podemos hallar

df (x) dx

de dos formas:

´ E INTEGRACI ON  ´ 3.1. DERIVACI ON

31

>> syms a0 a1 a2 a3 x >> f=a3*x^3+a2*x^2+a1*x+a0 f = a3*x^3+a2*x^2+a1*x+a0 >> fx=diff(f) fx = 3*a3*x^2+2*a2*x+a ,

ya que Matlab asume por defecto que la variable independiente es x, o bien especificando la variable respecto a la que queremos derivar, >> fx=diff(f,x) fx = 3*a3*x^2+2*a2*x+a1 .

La derivada segunda,

d2 f (x) , dx2

la obtenemos poniendo

>> f2x=diff(f,x,2) f2x = 6*a3*x+2*a2

y, del mismo modo, las derivadas sucesivas: >> f3x=diff(f,x,3) f3x = 6*a3 >> f4x=diff(f,x,4) f4x = 0

Ahora bien, si lo que queremos es derivar respecto a un par´ametro, supongamos que a 2, escribiremos >> fa3=diff(f,a3) fa3 = x^3

La operaci´ on de derivaci´on, como otras, se puede extender a vectores y matrices. Si pedimos la derivada de una matriz A respecto de una variable x, Matlab calcula otra matriz cuyos elementos son las derivadas de los de la matriz A respecto de x. >> syms x y >> A=[1, x*y; x^2+y^2,x/y] A = [ 1, x*y] [ x^2+y^2, x/y] >> diff(A,y) ans = [ 0, x] [2*y, -x/y^2] .

Lo mismo puede hacerse con vectores.

CAP ´ ITULO 3.

32

3.1.2

´ EJERCICIOS DE C ALCULO

Integrales

El comando int() de Matlab permite resolver integrales, tanto indefinidas como definidas. x Sea la funci´on f (x) = ln(x) . Para hallar la integral f (x)dx, indefinida, basta con poner

 

>> syms a b x >> f=log(x)/x f = log(x)/x >> int(f) ans = 1/2*log(x)^2 .

y para obtener la expresi´on de una integral definida, tal como

  b a

f (x)dx, pondremos

>> int(f,a,b) ans = 1/2*log(b)^2-1/2*log(a)^2

Observar que, en lugar de a y b, tambi´en habr´ıamos podido poner dos n´umeros. Si la variable de integraci´on no es x, debemos especificarla: >> syms u v >> int(sin(u*v)*cos(u*v),v) ans = 1/2*sin(u*v)^2/u

Igual que la derivaci´ on, la integraci´on se puede extender a vectores y matrices.

3.2

Ecuaciones diferenciales

Matlab permite resolver ecuaciones diferenciales de dos formas: num´erica y simb´ olica.

3.3

Resoluci´ on num´ erica

Matlab dispone de las funciones ode23 y ode45 para resolver ecuaciones diferenciales. Para ello hemos de convertir primero (si es posible) la ecuaci´on diferencial de orden n en n ecuaciones diferenciales de primer orden (forma normal). Veamos el m´etodo mediante el ejemplo del p´endulo.

3.4.

´ SIMBOLICA ´ RESOLUCI ON

33

En la figura, f (t) es una fuerza exterior, tangencial, aplicada al p´endulo. La ecuaci´on diferencial de deduce aplicando la segunda ley de Newton:

β

f (t) mg sin(β ) ma = 0 ¨ = 0 f (t) mg sin(β ) mlβ  ¨ mg sin(β ) f (t) = 0 mlβ +

− −

 f  (t )

− − −

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



x˙ 1

= x2 f (t) mg sin x1 x˙ 2 = lm Para resolver este sistema de ecuaciones de primer grado Matlab exige crear un fichero de funci´on con la definici´on de dicho sistema (ecuaciones de estado). Esto lo hacemos escribiendo la ecuaci´on diferencial en el fichero pendulo.m, con el editor:



function x_prima=p´ endulo(t,x) l=1; m=1; g=9.8; % Constantes del p´ endulo if t> >> >> >>

3.4

t0=0; tf=5; % Intervalo de integraci´ on x0=[0]; % Condiciones iniciales [t,x]=ode23(’p´ endulo’,t0,tf,x0); plot(t,x)

Resoluci´ on simb´ olica

La orden dsolve permite resolver ecuaciones diferenciales escritas en forma simb´olica en Matlab. Esto se hace denotando las derivadas por medio del operador D. Por ejemplo, la ecuaci´on diferencial lineal d2 x dx a2 2 + a1 + a0 x = b dt dt

CAP ´ ITULO 3.

34

´ EJERCICIOS DE C ALCULO

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

2

1.5

1

0.5

0

−0.5 0

3.4.1

1

2

3

4 t

5

6

7

8

Transformada de Laplace

En los sistemas de control con modelo matem´ atico de funci´on de transferencia se presenta el problema del c´alculo de la transformada inversa, de cara a la obtenci´ on de la respuesta del sistema (variable y(t) de salida) dada la variable de entrada x(t). Las variables de entrada y de salida son funciones del tiempo. X (s) e Y (s) son las transformadas de Laplace de x(t) e y(t) respectivamente. Por tanto, dada x(t), X (s) = [x(t)] = y(t) = 1 [Y (s)] Y (s) = X (s)G(s)

⇒

L

L



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

3.4.2

Resoluci´ on num´ erica

Uno de los m´etodos m´as utilizados para hallar la antitransformada de Laplace de una b(s) funci´on racional Y (s) = a(s) es expandirla en fracciones simples, de transformada inversa conocida. Sean p1, p2 , . . . , pn las ra´ıces del polinomio a(s), y supongamos que no hay ninguna repetida. Entonces, la expansi´on en fracciones simples es de la forma Y (s) =

b(s) r1 r1 rn = + + ... + + k(s) a(s) s  p1 s  p1 s  pn







en donde los n´ umeros (en general complejos) r1 , . . . , rn se llaman residuos de la funci´on Y (s) y k(s) es el cociente de la divisi´ on de b(s) entre a(s), el cual es cero si Y (s) es propia. Los polos, los residuos, y el t´ermino k(s) pueden hallarse mediante Matlab. Entonces, la transformada inversa es inmediata: y(t) = r1e p t + r2e p t + . . . + rn e p t + 1

2

n

L

1



[k(s)]

3.4.

´ SIMBOLICA ´ RESOLUCI ON

35

Como aplicaci´on, vamos a resolver mediante Matlab el ejercicio de la figura.

k   f (t ) m

0

x(t )

b

La ecuaci´ on diferencial de este sistema es m¨ x(t) + bx(t) ˙ + kx(t) = f (t) La transformada de Laplace, con condiciones iniciales nulas, es ms2 X (s) + bsX (s) + kX (s) = F (s)

Si, por ejemplo, f (t) es la funci´on escal´on unitario, f (t) = u(t), F (s) = 1/s, queda

X (s) =

1 ms3 + bs2 + ks

N´otese que el t´ermino independiente del polinomio denominador de X (s) es cero. La resoluci´on con Matlab, para los valores m = 1, b = 1, k = 1, se puede hacer del siguiente modo:

>> >> >> >> >> >> >>

m=1; b=1; k=1; B=1; A=[m b k 0]; [r,p,k]=residue(B,A) t=[0:0.05:15]; x=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t)+r(3)*exp(p(3)*t); plot(t,x)

CAP ´ ITULO 3.

36

´ EJERCICIOS DE C ALCULO

y(t) 1.2

1

0.8

0.6

0.4

0.2

0

0

5

10

15

t

Esto mismo se puede hacer de modo a´ u n m´as sencillo utilizando la funci´on step (escal´on) o la funci´on lsim del ToolBox Signals and Systems de Matlab.

3.5

Resoluci´ on simb´ olica

La librer´ıa Symbolic Toolbox de Matlab permite hallar, mediante las o´rdenes laplace e ilaplace, las transformadas directa e inversa de Laplace. Dada una funci´ on f (t), denotamos por F (s) su transformada de Laplace. Es decir

L(f (t)) = F (s). Para hallar la transformada de Laplace F (s) de la funci´on f (t) hemos de escribir >> F = laplace(f)

en donde f es la expresi´on simb´olica de f (t). Por defecto Matlab asume que la variable independiente de f  es t. Para hallar la transformada inversa f (t) de una F (s), pondremos >> f = ilaplace(F)

en donde f es la expresi´on simb´olica de F (s). Por defecto Matlab asume que la variable independiente de F  es s. Como ejercicio, vamos a resolver de nuevo el ejemplo mec´anico que antes hemos calculado num´ericamente. >> syms s m b k >> G = 1/(m*s^2+b*s+k) >> G1 = subs(G,[m,b,k],[1,1,1])

3.5.

´ SIMBOLICA ´ RESOLUCI ON

G1 = 1/(s^2+s+1) >> Y = symmul(G1,1/s); >> y = ilaplace(Y); >> ezplot(y, [0,15]), axis([0, 15, 0, 1.25]), title(’y(t)’)

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

37

38

CAP ´ ITULO 3.

´ EJERCICIOS DE C ALCULO

Cap´ıtulo 4 Ejercicios de Algebra Lineal 4.1

Sistemas de ecuaciones lineales

Supongamos que nos dan las matrices A y b del sistema lineal Ax = b. Para introducirlas en el workspace de Matlab, ponemos >> A = [1 2 3 4 5; 0 0 0 0 1; 0 0 0 0 1]; >> b = [1 2 3]’

Una vez que hemos introducido las matrices, para ver si el sistema tiene soluci´ on, formamos la matriz ampliada Aa , >> Aa = [A b];

y, calculando los rangos de las matrices A y Aa, >> rank(A) ans = 2 >> rank(Aa) ans = 3

vemos que el sistema es incompatible, no tiene soluci´on. Consideremos ahora el sistema homog´eneo Ax = 0. Sabemos que ´este siempre tiene soluci´on (al menos la trivial) y que el conjunto de soluciones son los vectores del n´ucleo de la matriz A. Para hallar estas soluciones ponemos >> kerA = nullspace(A) kerA = [-2 -3 -4] [ 1 0 0] [ 0 1 0] [ 0 0 1] [ 0 0 0]

Esta matriz nos da los vectores columna de una base del n´ucleo de la aplicaci´on lineal asociada a A: z1 = [ 2 1 0 0 0] , z2 = [ 3 0 1 0 0] y z3 = [ 4 0 0 1 0] . Por tanto, el n´ucleo de la aplicaci´on lineal es el conjunto





{z = k z

1 1





+ k2 z2 + k3 z3 k1 , k2 , k3

|

39



∈ C}.



CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

40

4.1.1

Aplicaci´ on a circuitos el´ ectricos

Las leyes b´asicas de la Teor´ıa de Circuitos son la ley de Ohm, Z  = V I  en donde Z  es la impedancia del circuito, V  el voltaje aplicado e I  la intensidad que circula por el mismo, y las leyes de Kirchhoff. Para calcular las intensidades y voltajes en los circuitos el´ectricos se suelen aplicar los conocidos m´etodos de mallas y nudos. Estos m´etodos conducen al planteamiento de un sistema de ecuaciones el cual ha de resolverse para hallar los valores de las intensidades y voltajes del circuito. Veamos como se resuelve el circuito de la figura, aplicando el m´etodo de mallas, con Matlab. Dadas las impedancias z1 , . . . , z6 y el voltaje v(t) aplicado, se pide hallar las intensidades de malla i1 , i2 e i3 .  Z 1

+ i1

v

-

o cniu ca

 Z 4

 Z 2 i3 i2

 Z 6

 Z 5

 Z 3

Las ecuaciones de las tres mallas indicadas en la figura son: v = (z1 + z2 + z4 )i1 z2 i2 z4 i3 0 = z4 i1 z5i2 + (z4 + z5 + z6 )i3 0 = z2 i1 + (z2 + z5 + z3 )i2 z5 i3

− −







(4.1)



o, en forma matricial,

  

  

v z1 + z2 + z4 z2 z4 i1 0 = z4 z5 z4 + z5 + z6 , i2 0 z2 z2 + z5 + z3 z5 i3

es decir

en donde V, I 

∈C

3

y Z 

− −

− −

− −

V  = Z I 

∈C

3×3

. La soluci´ on del problema consiste en hallar i1, i2 y i3 .

La soluci´on num´ erica consiste en despejar el vector I  de intensidades, una vez que se han dado valores num´ericos (complejos) a las impedancias z1 , . . . , z6 y al voltaje v. Al

41

4.1. SISTEMAS DE ECUACIONES LINEALES 

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

I  = Z  1 V  −

Para hacer estos c´alculos con Matlab, escribiremos en un fichero-m los valores dados al voltaje y a las impedancias. Por ejemplo, podr´ıamos poner lo siguiente. % Ejemplo de circuito % Datos: Vef=220; f=50; w=2*pi*f; R1=1; L1=0.1; C1=100e-6; z1=R1+j*L1*w+1/(i*C1*w) R2=1; L2=0.03; C2=220e-6; z1=R2+j*L2*w+1/(i*C2*w) R3=0.25; L3=0.2; C3=100e-6; z1=R3+j*L3*w+1/(i*C3*w) R4=5; L4=0.1; C4=100e-6; z1=R4+j*L4*w+1/(i*C4*w) R5=20; L5=0.01; C5=100e-6; z1=R5+j*L5*w+1/(i*C5*w) R6=25; L6=0.33; C6=100e-6; z1=R6+j*L6*w+1/(i*C6*w) V = [Vef 0 0]’ Z = [ z_1+z_2+z_4 - z_2 - z_4 -z_4 - z_5 z_4+z_5+z_6 -z_2 z_2+z_5+z_3 - z_5 ]; I = inv(Z)*V

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

obtendremos el valor del vector de intensidades, I = 17.9962 +10.1363i 2.1462 - 3.5405i -0.4702 - 1.3816i

en amperios. Finalmente, podemos hallar el valor eficaz y el a´ngulo de fase de las mismas. >> Ief = abs(I) Ief = 20.6545 4.1402 1.4594 >> fase = angle(I) Ief = 0.5130 -1.0258 -1.8988

Este problema se puede tambi´en resolver simb´ olicamente de dos formas. La primera, resolviendo el sistema de ecuaciones (4.1), en forma simb´ olica, mediante el comando solve y la segunda, por inversi´on de la matriz Z  de impedancias en forma simb´olica.

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

42

4.1.2

Aplicaci´ on a los Sistemas de Control

El modelo de estado de un sistema de control viene dado por las ecuaciones x(t) ˙ = A x(t) + B u(t) y(t) = C x(t) + D u(t)

(4.2)

en donde A Rn n , B Rn q , C  R p n y D R p q . Uno de los problemas que se presentan en las aplicaciones es hallar la soluci´on del problema de condiciones iniciales, es decir, la soluci´on del sistema (4.2) junto con un sistema de condiciones iniciales dadas x(0) = x0 Rn . La soluci´on, que se puede hallar por el m´etodo de variaci´on de las constantes (o por otros m´etodos), viene dada por las f´ormulas





×

×





×

×



  t

At

x(t) = e x(0) +

eA(t

τ )



B U (τ ) dτ 

(4.3)

0

y(t) = Cx(t) + Du(t) El c´alculo num´erico de estas expresiones est´a implementado en la funci´on lsim de Matlab. Un sencillo ejemplo nos aclarar´ a sobre su uso. Sea un sistema din´ amico lineal definido por las matrices 0 2 0 A= B= 1 1 1 C  = 1 1 D= 0

   − −  

Vamos a calcular la respuesta temporal y(t) cuando la entrada u(t) es una funci´on escal´on unitario en t = 0 y las condiciones iniciales vienen dadas por el vector x(0) = [00] . Para hallar la soluci´on con Matlab, introducimos las cuatro matrices, 

>> A = [0

2; -1

-1],

B = [0; 1], C = [1

1], D = [0]

y las condiciones iniciales >> x0 = [0

0]’

Para hallar la soluci´on num´erica hemos de definir un vector t cuyos elementos son los valores del tiempo en los que queremos a calcular la soluci´on. Por ejemplo, >> t = [0: 0.1; 10]’;

Ahora definimos los valores de la entrada u(t), >> u = ones(size(t));

que en este caso es un vector del mismo tama˜no que t y cuyos elementos son todos igual a uno. Para obtener la soluci´ on, ponemos >> y = lsim(A,B,C,D,u,t,x0);

y Matlab nos calcula x(t) e y(t) para los valores de t antes definidos. Para representar gr´aficamente y(t), ponemos

43

4.1. SISTEMAS DE ECUACIONES LINEALES  y(t) 1.5

1

0.5

0

0

1

2

3

4

5

6

7

8

9

10

con lo que obtenemos la gr´afica de la respuesta temporal. Otra forma de obtener la soluci´ on de las ecuaciones de estado es utilizando la transformada de Laplace. Sabemos que la matriz de transferencia tiene dada por la f´ormula G(s) = C (sI n

− A)

1



B+D

y que, dadas G(s) y U (s) podemos hallar Y (s) con Y (s) = G(s)U (s) en donde U (s) = (u(t)). Una vez hallada Y (s), la transformada inversa de Laplace nos dar´a y(t). y(t) = 1 (Y (s))

L



L

Apliquemos este m´etodo al mismo ejercicio que acabamos de resolver con lsim. Primero definimos la matriz identidad de orden 2. >> I2 = [1

0; 0

1];

Ahora, para hacer la operaci´on G(s) = C (sI n

− A)

1



B + D, escribimos

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

Ahora, para hallar Y (s), ponemos >> Y = symdiv(G,s) Y = (s+2)/(s^2+s+2)/s

y, finalmente, >> y = ilaplace(Y);

con lo que obtendremos la expresi´on de y(t). Podemos comprobar con >> ezplot(y, [0,10]), axis([0, 10, 0, 1.5]), title(’y(t)’)

que obtenemos la misma gr´afica que antes.

44

4.2

dcloezngo + +

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Comandos m´ as interesantes

El n´ umero de ´ordenes y programas disponibles en Matlab es muy elevado y por ello no es posible un listado exhaustivo de todos ellos. En esta secci´ on se da un resumen, a modo de lista, de los que consideramos m´as importantes para las asignaturas del a´rea de Autom´atica y Control.

General

help facility run demonstrations list variables in memory list M-files on disk row and column dimensions vector length clear workspace type of computer local abort exit MATLAB same as exit

Matrix Operators

addition subtraction multiplication right division left division power conjugate transpose

− ∗ \

 

Array Operators

− ∗ \



addition subtraction multiplication right division left division power transpose

Relational and Logical Operators

< < > >



less than less than or equal greater than greater than or equal equal not equal

| ∼

and or not

], n Nckdnl,afosN choedciknyt

´ INTERESANTES  4.2. COMANDOS M AS

Special Characters

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

Special Values

answer when expression not assigned floating point precision π 1

√− ∞

Not-a-Number wall clock date floating point operation count number of function input arguments number of function output arguments

Disk Files

change current directory delete file diary of the session directory of files on disk load variables from file save variables to file list function or file show M-files on disk write to a file compact memory via

45

46

cdoociyvesnak cend dozndocea oz oi 9d nydiacm y

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Special Matrices

companion diagonal identity esoteric Hadamard Hankel Hilbert inverse Hilbert linearly spaced vectors logarithmically spaced vectors magic square domain for mesh points constant Pascal random elements Toeplitz Vandermonde zero

Matrix Manipulation

rotation flip matrix left-to-right flip matrix up-to-down diagonal matrices lower triangular part upper triangular part reshape transpose convert matrix to single column; A(:)

Relational and Logical Functions

logical conditions logical conditions find array indices of logical values detect NaNs detect infinities detect empty matrices detect string variables compare string variables

nod ,o ncaphyctoonnd vu nutconu

´ INTERESANTES  4.2. COMANDOS M AS

Control Flow

conditionally execute statements used with used with terminate repeat statements a number of times do while break out of  and loops return from functions pause until key pressed

Programming and M-Files

get numbers from keyboard call keyboard as M-file display error message define function interpret text in variables evaluate function given by string enable command echoing check if variables exist set case sensitivity define global variables startup M-file get environment string select item from menu elapsed time

Text and Strings

convert string to ASCII values evaluate text macro convert number to string convert integer to string set flag indicating matrix is a string convert number to string detect string variables compare string variables convert hex string to number

47

48

cdolicoh nt ycont do ynpdod cl ntc

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Command Window

clear command screen move cursor home set output display format display matrix or text print formatted number enable command echoing

Graph Paper

linear X-Y plot loglog X-Y plot semi-log X-Y plot semi-log X-Y plot polar plot 3-dimensional mesh surface contour plot domain for mesh plots bar charts stairstep graph add error bars

Graph Annotation

plot title x-axis label y-axis label draw grid lines arbitrarily position text mouse-positioned text graphics input

Graph Window Control

manual axis scaling hold plot on screen show graph window clear graph window split graph window

Graph Window Hardcopy

send graph to printer screen dump graphics metafile

ncoegjnd o con ncohn2h nv

´ INTERESANTES  4.2. COMANDOS M AS

49

Elementary Math Functions

absolute value or complex magnitude phase angle square root real part imaginary part complex conjugate round to nearest integer round toward zero round toward round toward signum function remainder exponential base e natural logarithm log base 10

−∞ ∞

Trigonometric Functions

sine cosine tangent arcsine arccosine arctangent four quadrant arctangent hyperbolic sine hyperbolic cosine hyperbolic tangent hyperbolic arcsine hyperbolic arccosine hyperbolic arctangent

Special Functions

bessel function gamma function rational approximation error function inverse error function complete elliptic integral of first kind Jacobian elliptic integral

50

nodhnufvlok ce nczhdv conkd odenomcy

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Decompositions and Factorizations

balanced form backsubstitution convert complex-diagonal to real-diagonal Cholesky factorization eigenvalues and eigenvectors Hessenberg form inverse factors from Gaussian elimination nonnegative least squares null space orthogonalization pseudoinverse orthogonal-triangular decomposition QZ algorithm reduced row echelon form Schur decomposition singular value decomposition

Matrix Conditioning

condition number in 2-norm 1-norm,2-norm,F-norm, -norm rank condition estimate (reciprocal)



Elementary Matrix Functions

matrix exponential matrix logarithm matrix square root arbitrary matrix function characteristic polynomial determinant trace Kronecker tensor product

ocdoenvyyu ncuioffddi o ocpcvongv dffe d8

´ INTERESANTES  4.2. COMANDOS M AS

Polynomials

characteristic polynomial polynomial roots—companion matrix method polynomial roots—Laguerre’s method polynomial evaluation matrix polynomial evaluation multiplication division partial-fraction expansion polynomial curve fitting

Column-wise Data Analysis

maximum value minimum value mean value median value standard deviation sorting sum of elements product of elements cumulative sum of elements cumulative product of elements approximate derivatives histograms correlation coefficients covariance matrix reorder into complex pairs Signal Processing

complex magnitude phase angle convolution correlation coefficients covariance deconvolution radix-2 fast Fourier transform two-dimensional FFT inverse fast Fourier transform inverse 2-D FFT FFT rearrangement

Numerical Integration

numerical function integration numerical function integration

51

52

de ozeons

ne

CAP ´ ITULO 4. EJERCICIOS DE ALGEBRA LINEAL

Differential Equation Solution

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

Nonlinear Equations and Optimization

minimum of a function of one variable minimum of a multivariable function solution of a system of nonlinear equations (zeros of a multivariable function) zero of a function of one variable Interpolation

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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF