7. desarrollo del identificador gráfico de bifurcaciones del igb.pdf · se plotea en 3d. figura...
TRANSCRIPT
78
7. Desarrollo del Identificador Gráfico de Bifurcaciones
El objeto de este capítulo es exponer la filosofía utilizada para el desarrollo del
identificador Gráfico de Bifurcaciones. El IGB es una herramienta computacional que se
presenta como un toolbox para MATLAB. Su objetivo es localizar puntos de bifurcación por
métodos indirectos (continuación), e identificar bifurcaciones de codimensión 1 por
métodos directos (función de prueba). Los algoritmos utilizados en cada uno de estos
métodos se exponen en el capítulo 6. En los capítulos 8 y 9, que son los manuales de
referencia y de usuario del IGB, se puede consultar tanto el manejo del software como las
características de cada una de las funciones que lo componen.
La interfaz del IGB ha sido diseñada de forma que el usuario pueda configurar el sistema
en estudio en una sola pantalla. Básicamente la interfaz está constituida por los espacios
para la referencia de los archivos donde se encuentran definidas las funciones (campos
de texto), los botones de funciones y las opciones del menú.
Figura 7.1 – Interfaz del IGB
79
Para entender la forma como ha sido concebido el IGB, es necesario conocer en detalle
las variables involucradas en el análisis de un sistema dinámico y cada uno de los
métodos (directos e indirectos) utilizados para la identificación de bifurcaciones. Esto
desde la perspectiva del programador.
7.1 Variables del IGB
Antes de abordar el estudio de los métodos para la detección e identificación de las
bifurcaciones, es necesario hacer una presentación de las variables utilizadas por el IGB.
Estas variables pueden dividirse en dos tipos: externas e internas.
La variables externas son las que el usuario puede modificar. Hacen parte de la interfaz
del toolbox y se presentan como campos de texto editables. Por otro lado, las variables
internas son variables de control para el correcto funcionamiento del programa. El usuario
puede modificarlas a través de los menús.
Como se observa en la interfaz del IGB (Figura 7.1), las variables externas se localizan
alrededor de la gráfica. A la derecha se están las variables de tipo vector (Figura 7.2), y
debajo las variables tipo función (Figura 7.3).
7.1.1 Variables IGB externas tipo vector Límites de la gráfica PLIM. PLIM especifica los límites de la gráfica donde se van a
mostrar los puntos fijos y los equilibrios. PLIM es una matriz 2x2 o 3x2 que contiene los
límites de cada uno de los ejes, en forma de vectores fila. En el caso de una gráfica 2D,
contendrá los límites de los ejes horizontal y vertical. Para 3D contendrá además los
límites del eje transversal.
PLIM=[h_inf,h_sup; v_inf,v_sup; t_inf,t_sup].
80
Cada uno de los vectores fila que componen la matriz PLIM, se consignan en su orden en
los campos de texto editables marcados con X, Y y Z. El campo Z solo se habilita cuando
se plotea en 3D.
Figura 7.2 – Variables externas tipo vector
Tamaño de paso S. Permite especificar las distancias para calcular para determinar los
puntos a partir de los cuales se determinarán los equilibrios o puntos fijos. S es un vector
de dos o tres dimensiones cuyos componentes indican las distancias sobre cada uno de
los ejes.
Precisión PREC. Permite especificar el número de cifras significativas después del cero
para la presentación de los datos. Por defecto este número es 4.
Medidas de convergencia DELTA y EPSILON. Como se ha estudiado en el capítulo 5, se
establecen dos medidas que determinan la convergencia del algoritmo, definidas como,
|| |||| ||ηη1+
< δ , ∧, || ( )|||| ( )||f xf x1+
< ε (7.1)
Donde, tal como se explica en el capítulo 5, ||ηj|| es la norma del desplazamiento y || f(xj) ||
es la norma de la función. DELTA es el valor para el criterio de convergencia por tamaño
de paso, y EPSILON criterio por valor de la función.
81
Número de iteraciones totales ITTOT e iniciales ITINI. En el método de detección de
bifurcaciones por el método de la fuerza bruta (simulación pura), el usuario puede
especificar el número de iteraciones totales que desea ejecutar el sistema a partir de un
punto inicial. Así mismo tiene la posibilidad de no graficar las iteraciones iniciales. Por
defecto estos valor son de 100 para ITTOT y de 50 para ITINI.
Tolerancia TOL. En algunos métodos, como el de Seidel por ejemplo, el criterio de
convergencia se da mediante el tamaño del paso únicamente, tal como se explica en el
capítulo 5. Por defecto este valor TOL es 10^(-5).
Posición de los parámetros independientes PPAR. Este es un vector que contiene la
posición de los parámetros independientes en el vector y = (x, α), en particular las del
vector de entrada Y0. Estas posiciones deben mantenerse en la definición de las
funciones y sus derivadas: FUN, GRADFUN, FUNP, GRADFUNP. Es decir, PPAR no puede
modificarse sin modificar también estos archivos.
Posición de las variables de ploteo PPLT. Este vector contiene las variables (x, α) que
se van a graficar en su respectivo orden x, y, z. Debe anotarse que el programa sólo
reconoce 2 o 3 dimensiones para graficar (Ver Manual de Referencia).
7.1.2 Variables IGB externas tipo función
Figura 7.3 – Variables externas tipo función
Función continua FUN. Archivo de la función continua. Describe la función de estudio de
la forma &x = f(y). Su sintaxis es
XP=FUN(Y)
82
donde el vector de entrada y = (x, α) contiene las variables de estado x = [x1, x2, ...., xn], y
los parámetros independientes α = [α1, α2, ..., αm].
y = [y1, y2, ..., yn+m]
y = [x1, x2, ..., xn, α1, α2, ..., αm]
El vector de entrada y es de dimensión n + m, y contiene n variables de estado y m
parámetros independientes, donde n = 1, 2, ... y m = 0, 1, 2, ....
El vector de respuesta &x es de dimensión n, y contiene el estado de las n variables de
estado.
x& = [ 1x& , 2x& , ..., nx& ].
Tal como se explica en los capítulos 5 y 6, la definición de esta función FUN, es aplicable a
sistemas dinámicos continuos y discretos. Veamos por ejemplo el siguiente sistema
dinámico continuo definido como un archivo .m para MATLAB.
Función 7.1 – Función FOLD function yp=fold(y) x=y(1);alfa=y(2); yp=alfa + x^2;
La información sobre el procedimiento para generar un archivo FUN, se encuentra en el
Manual del Usuario y también puede consultarse en el código mismo de la función.
Jacobiano continuo GRADFUN. Archivo del Jacobiano de la función continua. Este archivo
contiene el Jacobiano de la función FUN. Su sintaxis es,
[J,ValPr,z]=GRADFUN(Y)
El vector de entrada y = (x, α), tal como se describió anteriormente, contiene las variables
de estado x = [x1, x2, ...., xn], y los parámetros independientes α = [α1, α2, ..., αm]. El vector
de entrada y es de dimensión n + m.
83
y = [y1, y2, ..., yn+m]
y = [x1, x2, ..., xn, α1, α2, ..., αm]
El Jacobiano J es una matriz n x n que evalúa las derivadas de las funciones del vector de
funciones descrito en FUN, respecto a la n variables de estado.
J =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
n
nnn
n
n
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
&L
&&
MOMM
&L
&&
&L
&&
21
2
2
2
1
2
1
2
1
1
1
Finalmente, ValPr consigna los valores propios de J evaluados en y, y la matriz Z
consigna las derivadas de la función FUN respecto a los parámetros independientes.
z =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
m
nnn
m
m
dxd
dxd
dxd
dxd
dxd
dxd
dxd
dxd
dxd
ααα
ααα
ααα
&L
&&
MOMM
&L
&&
&L
&&
21
2
2
2
1
2
1
2
1
1
1
Por ejemplo,
Función 7.2 – Jacobiano de la función FOLD – FOLDJ function [J,ValPr,z]=foldj(y) x=y(1); alfa=y(2); J=2*x; ValPr=eig(J); z=1;
84
Función parametrizada FUNP. Este archivo contiene la función continua de estudio en
forma parametrizada px& = F(y). Su sintaxis es
XPP=FUNP(Y)
El vector de entrada y es de dimensión 2n + 2m + 1. Contiene n variables de estado, m
parámetros independientes, n condiciones iniciales de las variables de estado, m
condiciones iniciales de los parámetros independientes y un parámetro adicional s que es
la longitud de arco. Es decir,
y = [y1, y2, ..., y2n+2m+1]
y = [x1, x2, ..., xn, α1, α2, ..., αm, x01, x02, ..., x0n, α01, α02, ..., α0m, s]
El vector de respuesta px& es de dimensión n + m, y contiene el estado de las n variables
de estado más m funciones adicionales que parametrizan la función respecto a la longitud
de arco s. Tal como se ha explicado en el capítulo 6, para la parametrización por longitud
de arco, se agrega a la función continua un polinomio p. En el caso de una función de k
parámetros independientes, se agregarán k polinomios.
0 = pk(x, α, s) = ∑
=
−n
iii xx
1
20 )( + (αk – α0k)2 − s, k = 1, 2, ..., m (7.2)
Tal como se explica en el capítulo 6, la función queda extendida así,
px& = F(x, α, s) = ⎥
⎦
⎤⎢⎣
⎡),,(
),(sxp
xf
k αα
= 0, k = 1, 2, ..., m (7.3)
Por ejemplo,
Función 7.3 – Función FOLD parametrizada – FOLDP function ypp=foldp(y) x=y(1); alfa=y(2); x0=y(3); alfa0=y(4); h=y(5); ypp=[alfa + x^2;(x-x0)^2 + (alfa-alfa0)^2 - h^2];
85
Jacobiano parametrizado GRADFUNP. Este archivo consigna el Jacobiano de la función
parametrizada FUNP, de la misma forma en que GRADFUN consigna el Jacobiano de la
función continua FUN. Su sintaxis es
JP=GRADFUNP(Y)
El vector de entrada y es de dimensión 2n + 2m + 1. Contiene n variables de estado, m
parámetros independientes, n condiciones iniciales de las variables de estado, m
condiciones iniciales de los parámetros independientes y un parámetro adicional s que es
la longitud de arco. Es decir,
y = [y1, y2, ..., y2n+2m+1]
y = [x1, x2, ..., xn, α1, α2, ..., αm, x01, x02, ..., x0n, α01, α02, ..., α0m, s]
El Jacobiano de la función parametrizada Jp es una matriz (n+m) x (n+m) que evalúa las
derivadas de las funciones del vector de funciones descrito en FUNP, respecto a la n
variables de estado y a los m parámetros independientes.
Jp = ⎥
⎦
⎤⎢⎣
⎡dP
zJ | (7.4)
Donde el Jacobiano J es una matriz n x n que evalúa las derivadas de las funciones del
vector de funciones descrito en FUN, respecto a la n variables de estado.
J =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
n
nnn
n
n
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
&L
&&
MOMM
&L
&&
&L
&&
21
2
2
2
1
2
1
2
1
1
1
La matriz z consigna las derivadas de la función FUN respecto a los parámetros
independientes.
86
z =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
m
nnn
m
m
dxd
dxd
dxd
dxd
dxd
dxd
dxd
dxd
dxd
ααα
ααα
ααα
&L
&&
MOMM
&L
&&
&L
&&
21
2
2
2
1
2
1
2
1
1
1
Y la matriz dP evalúa las derivadas de la matriz de los m polinomios de parametrización de
la función parametrizada FUNP.
dP =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
m
mmm
n
mmm
mn
mn
ddp
ddp
ddp
dxdp
dxdp
dxdp
ddp
ddp
ddp
dxdp
dxdp
dxdp
ddp
ddp
ddp
dxdp
dxdp
dxdp
ααα
ααα
ααα
LL
MOMMMOMM
LL
LL
2121
2
2
2
1
22
2
2
1
2
1
2
1
1
11
2
1
1
1
Por ejemplo,
Función 7.4 – Jacobiano de la función FOLD parametrizada – FOLDJP
function Jp=foldjp(y) x=y(1); alfa=y(2); x0=y(3); alfa0=y(4); h=y(5); J=foldj(y); z=1; dP=[2*(x-x0),2*(alfa-alfa0)]; Jp=[J,Z;dP];
Función discreta FUND. Este archivo contiene la función discreta yk+1a g(yk). La sintaxis
de la función es,
YP=FUND(Y)
87
El vector de entrada yk es de dimensión n + m, y contiene n variables de estado y m
parámetros independientes. Es decir,
yk = [y1, y2, ..., y2n+2m+1]
yk = [x1, x2, ..., xn, α1, α2, ..., αm, x01, x02, ..., x0n, α01, α02, ..., α0m, s]
El vector de respuesta yk+1 es de dimensión n, y contiene el estado de las n variables de
estado.
yk+1 = [x1, x2, ..., xn]
Por ejemplo,
Función 7.5 – Función FOLD discreta – FOLDD function yp=foldd(y) x=y(1); alfa=y(2); yp=alfa+x+x^2;
Jacobiano discreto GRADFUND. Archivo del Jacobiano de la función discreta. Este archivo
contiene el Jacobiano de la función FUND. Su sintaxis es,
[J,ValPr] = GRADFUND(Y)
El vector de entrada y = (x, α), tal como se describió anteriormente, contiene las variables
de estado x = [x1, x2, ...., xn], y los parámetros independientes α = [α1, α2, ..., αm]. El vector
de entrada y es de dimensión n + m.
y = [y1, y2, ..., yn+m]
y = [x1, x2, ..., xn, α1, α2, ..., αm]
El Jacobiano J es una matriz n x n que evalúa las derivadas de las funciones del vector de
funciones descrito en FUND, respecto a la n variables de estado.
88
J =
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
n
nnn
n
n
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
dxxd
&L
&&
MOMM
&L
&&
&L
&&
21
2
2
2
1
2
1
2
1
1
1
ValPr consigna los valores propios de J evaluados en y. Por ejemplo,
Función 7.6 – Jacobiano de la función FOLD discreta – FOLDJP
function [J,ValPr]=foldjd(y) x=y(1); alfa=y(2); J=1+2*x; ValPr=eig(J);
Funciones de prueba TFUN y TFUND. Hay dos archivos de funciones de prueba que viene
con el IGB, TFUN para sistemas dinámicos continuos y TFUND para sistemas dinámicos
discretos. La sintaxis de estos archivos es:
tf=TFUN(eig1,eig2)
tf=TFUND(eig1,eig2)
Los argumentos de entrada eig1, ieg2 son los valores propios (o multiplicadores) del
equilibrio o punto (o punto fijo) de los dos puntos en medio de los cuales se quiere
verificar la aparición de una bifurcación. El método directo basado en la función de
prueba, tal como se expone en el capítulo 6, solo requiere de estos dos vectores de
entrada. El archivo de la función de prueba retorna tf, un flag que indica:
tf Significado Tf Significado
0 No hay bifurcación 4 Bifurcación flip
1 Bifurcación fold en sistema continuo 5 Bifurcación de
Neimarck – Sacker
2 Bifurcación Hopf 6 Bifurcación desconocida
3 Bifurcación fold en sistema discreto
89
Por ejemplo, en el IGB se han implementado por defecto las siguientes,
Función 7.7 – Función de prueba TFUN function tf=tfun(eig1,eig2) tf=0; if isreal(eig1) & isreal(eig2) if (eig1*eig2)<=0 tf=1; %Bifurcación FOLD end else if (sum(real(eig1))*sum(real(eig2)))<=0 tf=2; %Bifurcación HOPF end end
Función 7.8 – Función de prueba TFUND function tf=tfund(eig1,eig2)
if ~prod(size(eig1)==size(eig2)) tf=6; %bifurcación DESCONOCIDA else if (norm(eig1(1))<1 & norm(eig2(1))>=1) | ... (norm(eig1(1))>=1 & norm(eig2(1))<1) if isreal(eig1) & isreal(eig2) if eig1>0 & eig2>0 tf=3; %Bifurcación FOLD dis elseif eig1>0 & eig2>0 tf=4; %Bifurcación FLIP else tf=6; %Bifurcación DESCONOCIDA end elseif ~isreal(eig1) & ~isreal(eig2) tf=5; %Bifurcación de NEIMARK-SACKER else tf=6; %Bifurcación desconocida end end end
90
7.1.3 Variables IGB internas
Las variables se utilizan para llevar un control sobre las opciones que el usuario
selecciona en los menús del IGB.
Figura 7.4 – Menú Configuración
Variable del tipo de sistema FLAG_SIS. Esta variable toma su valor de acuerdo a la
selección en el menú Sistema del IGB. Los valores de FLAG_SIS son:
FLAG_SIS Significado
1 Sistema continuo
2 Sistema discreto
Variable del tipo de simulación FLAG_SIM. Esta variable toma su valor de acuerdo a la
selección en el menú Simulación del IGB. Los valores de IG_SIM son:
FLAG_SIM Significado
1 Retrato de fase
2 Diagrama de bifurcación
3 Gráfica de tiempo
Variable del método indirecto FLAG_MET. Esta variable toma su valor de acuerdo a la
selección en el menú Método del IGB.
91
Figura 7.5 – Menú Método
Los valores que toma esta variable son:
FLAG_MET Significado FLAG_MET Significado
1 Método de la simulación o de fuerza bruta
6 Continuación con predictor secante sin parametrización
2 Continuación basada en el método de Newton – Raphson o unipunto
7 Continuación con predictor secante con parametrización
3 Método de Newton – Raphson con múltiples puntos o multipunto
8 Continuación con predictor tangente sin parametrización
4 Continuación basada en el método secante
9 Continuación con predictor Tangente con parametrización
5 Continuación basada en el método de Seidel
Variable del método directo o función de prueba FLAG_TFUN. Esta variable cambia de
valor cada vez que he hace clic sobre la opción Función de Prueba del menú Método
(Figura 7.5). Los valores de FLAG_TFUN son:
FLAG_TFUN Significado
0 Sin función de prueba
1 Con función de prueba
92
Además de estas, existen otras variables internas relacionadas con la presentación de
resultados en pantalla, en particular con la gráfica. Estas variables pueden estudiarse con
detalle en el Manual del Usuario.
7.2 El Método de la fuerza bruta
El método de la fuerza bruta consiste en la localización de un número determinado de
puntos del sistema, mediante la ejecución de la función que lo describe. Este método
también es conocido como el método de la simulación.
La sintaxis para la simulación es:
yp=feval(FUN,y0);
Las variables involucradas son:
Variable de entrada Significado
FUN Archivo de la función
y0 Vector inicial
Variable de retorno Significado
yp Imagen del punto de entrada y0
Si el sistema es continuo, el siguiente punto inicial se calcula así:
y0=y0+s*yp;
Si el sistemas es discreto, se procede simplemente así:
y0=yp;
Cuando este método es utilizado para la detección de bifurcaciones en una región
definida por los límites de la gráfica, la sintaxis es la siguiente:
93
flag_stop=fbruta(PLIM,FUN,y0,PPLT,PPAR,s,ITTOT,ITINI,PREC,flag_sis)
Las variables involucradas son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
ITTOT Iteraciones totales
ITINI Iteraciones iniciales
PREC Número de decimales significativos
flag_sis Tipo de sistema. 1-continuo, 2-discreto.
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Mediante este método se calculan ITTOT puntos a partir del punto inicial. Los primeros
ITINI puntos no son tomados en cuenta ni para el ploteo ni su registro. Cuando se han
hecho las iteraciones establecidas por el usuario, el la componente del eje horizontal en la
gráfica da un salto s y se calcula así un nuevo valor inicial. Observe que el vector s juega
un doble papel en los sistemas dinámicos continuos.
Este método permite la localización de equilibrios y ciclos estables. A diferencia de los
otros métodos para la detección de bifurcaciones, no es posible identificar la estabilidad
de los equilibrios. Para la localización de equilibrios y ciclos inestables, es necesario
transformar la definición del sistema, tal como se explica en el capítulo 5. Es decir, para
sistemas continuos se debe cambiar el signo del tiempo, y en los sistemas discretos se
debe invertir la función.
94
7.3 El Método de Newton – Raphson
Para la localización de equilibrios en sistemas dinámicos continuos y discretos de la forma
&x = f (x), x ∈ Rn (7.5)
Se ha implementado en el IGB el método de Newton – Raphson. Este método se
encuentra descrito en el Manual de Referencia bajo la función NEWTON. Sin embargo, para
la identificación de bifurcaciones en sistemas multiparamétricos, este sistema ha sido
adecuado de la forma presentada por la función NEWTONMP.
A continuación se presenta una descripción de los métodos basados en el método de
Newton – Raphson para la localización de equilibrios (y puntos fijos) para la posterior
detección de bifurcaciones.
7.3.1 Cálculo de la primera solución
El problema de la identificación de bifurcaciones, se inicia calculando el primer equilibrio,
es decir, la primera solución (x1, α1) del sistema
f (x, α) = 0, x ∈ Rn, α ∈ Rm (7.6)
Para esto se ha implementado un método basado en el Método de Newton – Raphson,
expuesto en el capítulo 5. Este método, denominado Método de Newton – Raphson
Multiparamétrico se presenta en detalle en el Manual de Referencia, bajo el nombre de
NEWTONMP.
La sintaxis de esta función es la siguiente,
[X,F,k,cond]=newtonmp(FUN,GRADFUN,Y0,PPAR,DELTA,EPSILON)
Las variables involucradas son:
95
Variable de entrada Significado
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
Y0 Vector inicial (X,ALPHA)
PPAR Vector con las posiciones de los parámetros independientes
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
Variable de retorno Significado
X Equilibrio encontrado
F Valor de la función evaluada en el equilibrio X
k Número de iteraciones
cond Condición de la salida. (Ver Manual del Referencia)
Para determinar el resto de los equilibrios (o puntos fijos), utilizando el método de Newton
– Raphson, en el IGB se han implementado dos alternativas: único punto y múltiples
puntos.
7.3.2 Soluciones a partir de un único punto
Una vez se ha calculado el primer equilibrio o punto fijo por el método de Newton -
Raphson, se procede a calcular las demás soluciones. Para esto el IGB cuenta las
funciones PUNI para sistemas dinámicos continuos, y PUNID para sistemas dinámico
discretos, cuyas descripciones se encuentran en el Manual de Referencia. La sintaxis de
estas funciones es:
flag_stop=puni(PLIM,FUN,GRADFUN,TFUN,Y0,PPLT,PPAR,s,...
DELTA,EPSILON,PREC)
flag_stop=punid(PLIM,FUN,GRADFUN,GRADFUND,TFUN,y0,PPLT,PPAR,... s,DELTA,EPSILON,PREC)
96
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
GRADFUND Archivo del Jacobiano de FUND. Solo para PUNID, se utiliza junto con TFUN.
TFUN Archivo de la función de prueba. De uso opcional.
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
S Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Esta función calcula la primera solución a partir del punto inicial Y0, y a partir de este
punto aproxima la siguiente dando un salto S. Este es un procedimiento de continuación
en el que se obtienen todos los equilibrios (o puntos fijos) sobre un ramal.
El programa retorna la última solución calculada Y, y el booleano flag_stop que indica si
se debe continuar y detener el ploteo. El proceso de ploteo se detiene cuando no es
posible encontrar una solución del sistema descrito en FUN, o cuando se ha producido
algún error durante su localización.
La diferencia entre estas dos funciones radica en la forma de interpretar la estabilidad de
la solución encontrada. En PUNI se comprueba si los valores propios de la solución
pertenecen al semiplano negativo (equilibrio estable), mientras que en PUNID se
comprueba si pertenecen al círculo unitario (punto fijo estable).
97
7.3.3 Soluciones a partir de múltiples puntos
El método de único punto y cualquier otro procedimiento que implique continuación, solo
puede localizar los equilibrios o puntos fijos que pertenecen a la misma rama. Por esta
razón se han implementado métodos de múltiples puntos para localizar todas las
soluciones a partir múltiples puntos. Para el estudio de bifurcaciones en sistemas
continuos está la función PMUL, y para sistemas discretos la función PMULD. Estas
funciones se encuentran expuestas con detalle en el Manual de Referencia. La sintaxis de
estas funciones es:
flag_stop=pmul(PLIM,FUN,GRADFUN,Y0,PPLT,PPAR,s,DELTA,EPSILON,PREC)
flag_stop=pmuld(PLIM,FUN,GRADFUN,GRADFUND,Y0,PPLT,PPAR,...
s,DELTA,EPSILON,PREC)
Las variables involucradas en esta función son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
GRADFUND Archivo del Jacobiano de FUND. Solo para PUNID, se utiliza junto con TFUN.
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
98
El principio de operación es la ubicación de puntos de inicio para el método de Newton –
Raphson en todo el espacio de la gráfica, en dos o tres dimensiones. Luego, a partir de
cada punto, intenta localizar un equilibrio cercano.
Esta función es útil cuando los equilibrios ubicados en el espacio, conforman ramales
complejos que no podrían ser identificados con los métodos de continuación. Por su
carácter, es un método lento que consume muchos recursos computacionales. Además,
con este método, no es posible utilizar una función de prueba para identificar directamente
una bifurcación.
7.4 Método Secante
Como alternativa al método de Newton, el IGB ha implementado el método secante para
la determinación de puntos de equilibrio. Tal como se explica en el capítulo 5, mientras
que el método de Newton – Raphson requiere de la evaluación de dos funciones: la
función del sistema y su Jacobiano, el método secante solo necesita la función del
sistema para determinar sus raíces.
Como en el caso del método de Newton – Raphson, en el IGB se ha implementado como
herramienta el método secante clásico para resolver sistemas de la forma (7.5). Este
método se encuentra bajo la función de nombre SECANT, y puede estudiarse con detalle
en el Manual de Referencia. Sin embargo, la determinación de los equilibrios del sistema
(7.6) ha requerido el desarrollo del método del sistema secante multiparamétrico. Este
método se encuentra bajo la función SECANTMP, y que también puede estudiarse en el
Manual de Referencia.
La sintaxis de esta función es
[X,F,k,cond]=secantmp(FUN,Y0,PPAR,S,DELTA,EPSILON)
Las variables involucradas en esta función son:
99
Variable de entrada Significado
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
Y0 Vector inicial [X,ALPHA)
PPAR Vector con las posiciones de los parámetros independientes
S Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
Variable de retorno Significado
X Equilibrio encontrado
F Valor de la función evaluada en el equilibrio X
k Número de iteraciones
cond Condición de la salida. (Ver Manual del Referencia)
La principal limitante del método secante, es que su uso se restringe a sistemas
dinámicos de dos dimensiones.
Cuando el método secante se utiliza para la identificación de los equilibrios a lo largo de
un ramal (continuación) en un sistema dinámico continuo, la función utilizada es PSECANT
y en sistemas discretos es PSECANTD (Manual de Referencia). La sintaxis de estas
funciones son:
flag_stop=psecant(PLIM,FUN,GRADFUN,TFUN,Y0,PPLT,PPAR,s,... DELTA,EPSILON,PREC)
flag_stop=psecantd(PLIM,FUN,GRADFUND,TFUN,Y0,PPLT,PPAR,s,...
DELTA,EPSILON,PREC)
Las variables involucradas en estas dos funciones son:
100
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Los archivos de los Jacobianos GRADFUN y GRADFUND se utilizan para evaluar la naturaleza
del equilibrio o punto fijo y no para calcularlo, por lo cual su uso es opcional. Si se utiliza
función de prueba TFUN, cuyo uso es también opcional, si es necesario usar GRADFUN y
GRADFUND.
7.5 Método de Seidel
Tal como se explica en el capítulo 5, la forma para localizar puntos fijos en sistemas
dinámicos discretos, sin cambiar la definición del sistema, es mediante el método de
Seidel. En el IGB se han implementado dos métodos numéricos. El primero es el método
de Seidel clásico, que se emplea como herramienta para la localización de equilibrios en
sistemas dinámicos discretos de la forma
x a g(x), x ∈ R n (7.7)
101
Este método se encuentra bajo el nombre de SEIDEL, y puede estudiarse en el Manual de
Referencia. Al igual que en los casos anteriores, para la detección de bifurcaciones ha
sido necesario desarrollar un método de Seidel multiparamétrico que pueda resolver
sistemas de la forma
x a g(x, α), x ∈ R n, α ∈ Rm (7.8)
Este método se encuentra implementado en la función SEIDELMP (Manual de Referencia).
Así mismo es el método adecuado para la localización de puntos fijos en sistemas
multiparamétricos. Su sintaxis es:
[X,F,k,cond]=seidelmp(FUN,X,PPAR,TOL)
Las variables involucrada son:
Variable de entrada Significado
FUN Archivo de la función continua
Y0 Vector inicial [X,ALPHA)
PPAR Vector con las posiciones de los parámetros independientes
TOL Criterio de convergencia por tolerancia
Variable de retorno Significado
X Equilibrio encontrado
F Valor de la función evaluada en el equilibrio X
k Número de iteraciones
cond Condición de la salida. (Ver Manual del Referencia)
Cuando este método es usado para la localización de puntos de bifurcación, la función
utilizada es
102
flag_stop=pseidel(PLIM,FUND,GRADFUND,TFUN,Y0,PPLT,PPAR,s,TOL,PREC)
Las variables involucradas son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUND Archivo de la función discreta
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
TOL Criterio de convergencia por tolerancia
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
El método de Seidel solo se utiliza para sistemas dinámicos discretos y solo puede
detectar puntos fijos estables. Para la detección de puntos fijos inestables, se debe invertir
la función que define el sistema discreto.
7.6 Métodos de Continuación
Se puede utilizar el mismo Método de Newton para el cálculo de las demás soluciones,
pero en los puntos de bifurcación el Jacobiano de la función es singular y no es posible
hallar más soluciones a partir de este punto.
Tal como se anota en el capítulo 6, los métodos de continuación desarrollados en el
presente trabajo son los basados en los métodos de predictor – corrector sobre el sistema
dinámico continuo,
103
f (x, α) = 0, x ∈ Rn, α ∈ R (7.9)
que como se ha visto anteriormente, es una ecuación genérica aplicable también a
sistemas dinámicos discretos. En el IGB se han implementado los métodos de
continuación con predictor secante y predictor tangente, con y sin parametrización. Para
la corrección se utiliza en todos los casos el método de Newton – Raphson
multiparamétrico.
Tal como se ha estudiado en el capítulo 6, la parametrización permite la definición de una
métrica sobre el ramal de equilibrios (o puntos fijos), y de esta forma es posible pasar
sobre las singularidades de los puntos de bifurcación de una manera limpia y rápida.
La parametrización se realiza por longitud de arco, aunque cabe la posibilidad de usar
cualquier otro tipo de parametrización. Así mismo, en estos métodos de continuación se
ha implementado un algoritmo para el control de paso entre equilibrio y equilibrio del
mismo ramal. De esta forma, cuando el equilibrio que se predice está cerca del siguiente
equilibrio (pocas iteraciones para la corrección) el tamaño de paso se aumenta, y lo
contrario. Estos métodos se describen a continuación y se detallan en el Manual de
Usuario.
7.6.1 Predictor secante
En el caso de continuación con predictor secante a partir de un punto inicial y0, es
necesario calcular una segunda solución y2. Esta segunda solución se calcula sumando
un paso s al punto inicial:
y1 = y0 + s
El paso s es un vector del mismo tamaño de y0 y y1. La función que implementa el método
de continuación con predictor secante y corrector basado en el método de Newton –
Raphson multiparamétrico es CSC en el caso de los sistemas dinámicos continuos, y CSCD
en el caso de los discretos (Manual de Referencia). Las sintaxis son:
104
flag_stop=csc(PLIM,FUN,GRADFUN,TFUN,Y0,PPLT,PPAR,s,DELTA,EPSILON,PREC)
flag_stop=cscd(PLIM,FUN,GRADFUN,GRADFUND,TFUN,Y0,PPLT,PPAR,s,... DELTA,EPSILON,PREC)
Las variables involucradas en estas dos funciones son las siguientes:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Con un tamaño de paso adecuado, el método de continuación con predictor secante
puede seguir cualquier trayectoria en un ramal de equilibrios y puntos fijos.
7.6.2 Predictor secante con parametrización
Una forma de optimizar el desempeño del método de continuación con predictor secante,
es agregando una ecuación adicional que parametrice el sistema. Para esto es necesario
que el usuario agregue dos funciones adicionales FUNP y GRADFUNP. En la primera función
105
debe agregar el polinomio de parametrización. Aunque se puede utilizar cualquiera de los
métodos descritos en el capítulo 6, se recomienda la parametrización por longitud de arco,
con la cual se evita cualquier posible singularidad en los puntos de bifurcación.
Este método se ha implementado en la función CSCP para sistemas continuos, y CSCPD
para sistemas discretos. Las sintaxis son:
flag_stop=cscp(PLIM,FUN,GRADFUN,FUNP,GRADFUNP,TFUN,Y0,PPLT,PPAR,s,...
DELTA,EPSILON,PREC)
flag_stop=cscpd(PLIM,FUN,GRADFUN,FUNP,GRADFUNP,GRADFUND,TFUN,Y0,PPLT,... PPAR,s,DELTA,EPSILON,PREC)
Las variables involucradas en estas dos funciones son las siguientes:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
FUNP Archivo de la función continua parametrizada
GRADFUNP Archivo del Jacobiano de FUNP
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
106
7.6.3 Predictor tangente
En el método de continuación con predictor tangente, sólo es necesario calcular la
primera solución y0. La solución siguientes se estiman a una distancia s sobre una línea
tangente al ramal en el punto y0,
y1 = y0 + s⋅ h
donde h es el vector tangente al ramal en y0. La función que implementa el método de
continuación con predictor tangente y corrector basado en el método de Newton –
Raphson multiparamétrico es CTC en el caso de los sistemas dinámicos continuos, y CTCD
en el caso de los discretos (Manual de Referencia). Las sintaxis son:
flag_stop=ctc(PLIM,FUN,GRADFUN,TFUN,y0,PPLT,PPAR,s,DELTA,EPSILON,PREC)
flag_stop=ctcd(PLIM,FUN,GRADFUN,GRADFUND,TFUN,y0,PPLT,PPAR,s,... DELTA,EPSILON,PREC)
Las variables involucradas en estas dos funciones son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
FUNP Archivo de la función continua parametrizada
GRADFUNP Archivo del Jacobiano de FUNP
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
107
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Con este método se pueden identificar todos los puntos de equilibrio en un ramal, siempre
que la pendiente de la recta tangente no pase por infinito.
7.6.4 Predictor tangente con parametrización
Una forma de optimizar el desempeño del método de continuación con predictor tangente,
es con la parametrización del sistema. Para esto se agrega a la función del sistema un
polinomio o función de parametrización en un archivo FUNP. Además el método requiere
del Jacobiano de este nuevo archivo GRADFUNP.
Cuando se analiza un sistema dinámico continuo, el IGB utiliza la función CTCP, en los
sistemas discretos es la función CCTPD. Las sintaxis de estas funciones son:
flag_stop=ctcp(PLIM,FUN,GRADFUN,FUNP,GRADFUNP,TFUN,y0,PPLT,PPAR,s,...
DELTA,EPSILON,PREC)
flag_stop=ctcpd(PLIM,FUN,GRADFUN,FUNP,GRADFUNP,GRADFUND,TFUN,y0,PPLT,... PPAR,s,DELTA,EPSILON,PREC)
Las variables involucradas son las siguientes:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
GRADFUN Archivo del Jacobiano de FUN
FUNP Archivo de la función continua parametrizada
GRADFUNP Archivo del Jacobiano de FUNP
GRADFUND Archivo del Jacobiano de FUND
TFUN Archivo de la función de prueba
108
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
DELTA Criterio de convergencia por tamaño de paso
EPSILON Criterio de convergencia por valor de la función
PREC Número de decimales significativos
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
7.7 Función de prueba
El IGB permite la utilización de una función de prueba para la localización directa de las
bifurcaciones. Este método directo, actúa junto con alguno de los métodos indirectos de
continuación. Para cada tipo de sistema se ha desarrollado una función de prueba. En el
los sistemas continuos es la función TFUN, y en los discretos es la función TFUND. La
sintaxis de estas funciones es:
tf=tfun(eig1,eig2); tf=tfund(eig1,eig2)
Las variables involucradas son:
Variable de entrada Significado
eig1 Valor propio de un equilibrio o punto fijo
eig2 Valor propio de otro equilibrio o punto fijo
Variable de retorno Significado
tf Identificados del tipo de bifurcación.
109
tf Significado
0 no hay bifurcación
1 bifurcación FOLD en sistemas continuos
2 bifurcación HOPF
3 bifurcación FOLD en sistemas discretos
4 bifurcación FLIP
5 bifurcación NEIMARK-SACKER
6 bifurcación DESCONOCIDA
Estas funciones de prueba reciben los equilibrios (o puntos fijos), determinados mediante
alguno de los métodos implementados en el IGB, y verifica si en medio de estos dos se
presenta alguna bifurcación. En el caso de los sistemas continuos verifica si uno se
encuentra a la derecha y otro a la izquierda del eje imaginario, y en el caso discreto si uno
se encuentra dentro y otro fuera del círculo unitario. Dependiendo del lugar en el plano R
– I por donde se haya atravesado, se determina el tipo de bifurcación, tal como se explica
en los capítulos 3 y 4.
El usuario puede cambiar la forma de hacer la detección, pero debe conservar las
variables de entrada y los valores de la variable de retorno tf.
7.8 Retrato de fase
Además de las herramientas para detección de bifurcaciones, el IGB ofrece la posibilidad
de simular el comportamiento del sistema dinámico continuo o discreto. La sintaxis de
esta función, denominada rfase, es:
flag_stop=rfase(PLIM,FUN,Y0,PPLT,PPAR,s,TOL,PREC,flag_sis)
Las variables involucradas son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
110
FUN Archivo de la función continua
Y0 Vector inicial (X,ALPHA)
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
TOL Criterio de convergencia por tolerancia
PREC Número de decimales significativos
flag_sis Tipo de sistema. 1-continuo, 2-discreto.
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Esta simulación puede apreciarse punto a punto. El usuario es libre de variar la velocidad
de simulación (en el caso de los sistemas dinámicos), y el punto inicial.
7.9 Gráficas de tiempo
Una de las necesidades (o curiosidades) cuando se simula el comportamiento del sistema
en su espacio de estados y parámetros, es el comportamiento de estas mismas variables
en función del tiempo. Por este motivo, a partir de la versión 5 del IGB, se cuenta con la
opción de hacer gráficas de tiempo.
La sintaxis de esta función, denominada xvst, es:
flag_stop=xvst(PLIM,FUN,y0,PPLT,PPAR,s,TOL,PREC,flag_sis)
Las variables involucradas son:
Variable de entrada Significado
PLIM Matriz con los límites de la gráfica
FUN Archivo de la función continua
Y0 Vector inicial (X,ALPHA)
111
PPLT Vector de las variables de ploteo
PPAR Vector con las posiciones de los parámetros independientes
s Tamaño de paso
TOL Criterio de convergencia por tolerancia
PREC Número de decimales significativos
flag_sis Tipo de sistema. 1-continuo, 2-discreto.
Variable de retorno Significado
flag_stop Booleano que indica la detención del ploteo
Esta simulación puede apreciarse punto a punto. El usuario es libre de variar la velocidad
de simulación (en el caso de los sistemas dinámicos), el tiempo (en sistemas continuo) o
número de iteraciones (en sistemas discretos), así como el punto inicial.
En el Manual de Referencia, que se expone en el capítulo siguiente, se describe con
detalle cada una de las funciones del IGB. Dentro de éstas muchas funciones se
encuentran, por supuesto, las referidas en este capítulo, además de otras que pueden
considerarse como recurrentes (o fundamentales). Incluso el IGB cuenta con funciones
que por alguna razón no son utilizadas en la detección de bifurcaciones pero que son de
utilidad en el momento de identificar características del sistema en estudio.