MÉTODOS MATEMÁTICOS (Curso 2011

Transcripción

MÉTODOS MATEMÁTICOS (Curso 2011
MÉTODOS MATEMÁTICOS (Curso 2011-2012)
Tercer Curso de Ingeniería Aeronáutica
Departamento de Matemática Aplicada II. Universidad de Sevilla
LECCIÓN 8: OTROS MÉTODOS NUMÉRICOS PARA
ECUACIONES DIFERENCIALES ORDINARIAS. PROBLEMAS
DE CONTORNO.
Índice
1. Otros métodos: Métodos lineales multipaso
1.1. Métodos de Adams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Fórmulas de diferenciación regresiva (BDF) . . . . . . . . . . . . . . . . . . . . . .
1.3. Otros métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
3
7
2. Problemas stiff
8
3. Otras cuestiones de orden práctico
12
4. El método del disparo para problemas de contorno
4.1. Cuestiones de repaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. El método del disparo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
16
5. Cuestiones y problemas
17
1.
Otros métodos: Métodos lineales multipaso
De los llamados métodos lineales multipaso, sólamente haremos unos breves comentarios, pues
por un lado, el desarrollo en las últimas décadas de los pares encajados de métodos Runge-Kutta han
hecho que este tipo de métodos pierdan mucha competitividad y, por otro, un estudio más detallado
aporta poco en el orden práctico a lo que se haya podido aprender en la secciones anteriores. A su
vez, estos métodos están muy bien documentados en multitud de libros de texto. Debe saber sin
embargo que para algunos problemas muy determinados y concretos, presentan ventajas que, a día
de hoy, ningún método Runge-Kutta ha conseguido igualar. Lo particular de estas situaciones no
justifica, en todo caso, que vayamos más alla de la descripción somera que haremos en esta sección.
1.1.
Métodos de Adams
Son anteriores a los métodos Runge-Kutta y se deben a los británicos Adams, Bashforth (1883,
1885) y Moulton (1926).
Recordemos que dados el PVI
y ′ (t) = f (t, y(t)),
, t ∈ [t0 , tf ].
(1)
y(t0) = y0 ,
1
y una partición
t0 < t1 < . . . < tN = tf ,
del intervalo [t0 , tf ], la solución y satisface la igualdad
Z
Z tn+1
′
y (t) dt =
y(tn+1 ) = y(tn ) +
tn+1
(2)
f (t, y(t)) dt.
tn
tn
Los métodos Runge-Kutta aproximan esta última integral mediante una fórmula de cuadratura con
nodos en el intervalo [t0 , tf ] (y aproximan los valores del integrando con las etapas ki ). Los métodos
de Adams aproximan dicha integral con una fórmula de cuadratura basada en los
nodos de cuadratura tn−k+1, . . . , tn
o tn−k+1 , . . . , tn , tn+1 .
donde k es el número de pasos del método. Para ello, obviamente se requiere haber obtenido (con
∗
otro método) esas k aproximaciones anteriores. Si Pn,k
el polinomio de grado k − 1 que interpola
a los k valores del campo f (t, y) en las aproximaciones numéricas (tn , yn ), . . . , (tn−k+1 , yn−k+1), esto
es,
j−1
k−1 Y
X
∗
Pn,k (t) =
(t − tn−l ) f [tn , . . . , tn−j ],
j=0
l=0
donde f [tn , . . . , tn−j ] son las diferencias divididas definidas recurrentemente como
f [tn−j ] = f (tn−j , yn−j ),
j = 0, . . . , k − 1,
f [tn , . . . , tn−j+1 ] − f [tn−1 , . . . , tn−j ]
f [tn , . . . , tn−j ] =
,
tn − tn−j
j = 1, 2, . . . .
el correspondiente método de k-pasos es entonces
Z tn+1
∗
Pn,k
(t) dt.
yn+1 = yn +
(3)
tn
y se conoce como método de Adams explícito de k pasos (más conocido también como método
Adams-Bashforth de k pasos, aunque no se deba a Bashforth).
También podemos considerar el polinomio de grado k que interpola k valores del campo f (t, y)
en las aproximaciones numéricas (tn , yn ), . . . , (tn−k+1, yn−k+1) anteriores, junto con el el valor de f
en (tn+1 , yn+1 ), aunque no lo conozcamos,
Pn,k (t) =
∗
Pn,k
Y
k−1
(t − tn−l ) f [tn+1 , tn , . . . , tn−k+1 ].
+
l=0
El correspondiente método numérico será entonces
Z tn+1
∗
Pn,k
(t) dt
yn+1 − hn βn,k f (tn+1 , yn+1 ) = yn +
tn
+f
(0)
[tn+1 , tn , . . . , tn−k+1]
Z
tn+1 k−1
Y
tn
2
l=0
(t − tn−l ) dt,
(4)
donde
βn,k
1
=
hn
Z
(0)
tn+1 k−1
Y
tn
l=0
t − tn−l
dt,
tn+1 − tn−l
y f [tn+1 , tn , . . . , tn−k+1] es la diferencia dividida que se obtiene cuando se cambia yn+1 por 0.
Observe que en (4), la incógnita yn+1 aparece a la izquierda del signo igual, y que lo que hay a la
derecha sólamente depende de los valores conocidos yn , . . . , yn−k+1. El correspondiente método se
conoce como método de Adams implícito de k pasos, o también de Adams-Moulton de k pasos.
Observe que para obtener el valor de yn+1 hay que resolver la ecuación (o sistema de ecuaciones)
dado por la igualdad en (4). En la práctica esto se hace por iteración de punto fijo, procedimiento
que convergerá siempre que hn sea suficientemente pequeño.
Debe saber lo siguiente.
El método de Adams explícito de un paso es el método de Euler
yn+1 − yn = hn f (tn , yn ).
El método de Adams implícito de un paso se conoce como la regla de los trapecios (iqual que
la fórmula de cuadratura) y es de la fomra
yn+1 − yn =
hn
f (tn , yn ) + f (tn+1 , yn+1) .
2
El método de Adams explícito de k pasos es convergente de orden k, y el implícito de k pasos
de orden k + 1 (para recordarlo, puede Vd. pensar en los casos k = 1).
En la práctica se suelen emplear ambos métodos juntos, en lo que se conoce como pares
∗
predictor-corrector. Se utiliza el método explícito para obtener un valor de yn+1
que se toma
como iterante inicial en la iteración de punto fijo necesaria para encontrar el el valor de yn+1
del método implícito.
Existen procedimientos en los pares predictor-corrector para estimar el error local, con lo que
generalmente se emplean con paso variable.
De hecho, se pueden estimar los errores locales correspondientes a los métodos de k − 1 pasos
y de k + 1 pasos, por lo que los métodos de Adams se emplean en algortimos de paso y orden
variables.
El comando de Matlab que utiliza los métodos de Adams con paso y orden variable es
ode113. Empezando con k = 1, puede llegar a utilizar fórmulas de hasta k = 12 pasos.
1.2.
Fórmulas de diferenciación regresiva (BDF)
Las fórmulas de diferenciación regresiva (en inglés “backward differentiation formulae” (BDF)),
son los métodos multipaso que se utilizan para problemas “stiff” que explicaremos en la sección
siguiente. Datan de 1952, y fueron inventadas por Curtiss y Hirschfelder.
Se definen como sigue. Supongamos conocidas las k aproximaciones yn−k+1, . . . , yn . Para obtener
la aproximación yn+1 con la fórmula BDF de k pasos, se impone la condición de que el polinomio Qn,k
3
de grado k que interpola a los k + 1 pares (tn−k+1 , yn−k+1), . . . , (tn+1 , yn+1 ) (incluímos el desconocido
yn+1 ) satisfaga la ecuación diferencial en tn+1 , esto es
Q′n,k (tn+1 ) = f (tn+1 , Qn,k (tn+1 )) = f (tn+1 , yn+1).
El polinomio Qn,k , escrito en forma de Newton es
j−1
k Y
X
(t − tn+1−l ) y[tn+1, . . . , tn+1−j ],
Qn,k (t) =
j=0
l=0
donde y[tn+1, . . . , tn+1−j ] es la diferencia dividida basada en las aproximaciones yn+1, . . . , yn+1−j ,
esto es
y[tn−j ] = yn−j ,
j = −1, 0, 1, . . . , k − 1,
y[tn+1 , . . . , tn−j+2] − y[tn , . . . , tn−j+1 ]
y[tn+1, . . . , tn−j+1] =
,
tn+1 − tn−j+1
j = 1, 2, . . . .
Derivando Qn,k , evaluando en tn+1 , igualando a f (tn+1 , yn+1) y multiplicando por hn = tn+1 − tn
obtenemos la expresión de la fórmula BDF de k pasos
hn
j−1
k Y
X
j=1
l=1
(tn+1 − tn+1−l ) y[tn+1 , . . . , tn+1−j ] = hn f (tn+1 , yn+1 ).
(5)
Si dejamos a un lado del signo igual la incógnita yn+1 y al otro el resto, tenemos que el método
se escribe como
αn,k yn+1 − hn f (tn+1 , yn+1 ) = gn,k (yn , . . . , yn−k+1),
(6)
donde, obviamente,
αn,k =
k
X
j=1
y
gn,k (yn , . . . , yn−1) = hn
j−1
k Y
X
j=1
l=1
hn
tn+1 − tn+1−j
(tn+1 − tn+1−l ) y (0) [tn+1 , . . . , tn+1−j ],
donde, igual que en el apartado anterior, y (0) [tn+1 , . . . , tn+1−j ] denota la diferencia dividida que se
obtiene al cambiar yn+1 por 0.
Para encontrar yn+1 se resuelve la ecuación en (6) siempre por el método de Newton. Esto es
[0]
partiendo de una aproximación incial yn+1 (normalmente obtenida por extrapolación de los valores
[µ]
yn , . . . , yn−k+1), se obtienen aproximaciones sucesivas yn+1 ,
[µ+1]
[µ]
yn+1 = yn+1 + x[µ] ,
µ = 0, 1, 2, . . . ,
donde x[µ] es la solución del sistema lineal
[µ]
[µ]
αn,k I − hn fy x[µ] = − αn,k yn+1 − hn f (tn+1 , yn+1) − gn,k (yn , . . . , yn−k+1) ,
4
(7)
siendo fy la matriz jacobiana

[µ]


fy = 

∂f1
∂f1
...
∂y1
∂ym
..
..
.
.
∂fm
∂fm
...
∂y1
∂ym



,

evaluada en (tn+1 , yn+1).
Por tanto, para poder utilizar el software que emplea este método, no solo hay que proporcionar
el segundo miembro f , sino tambien la matriz diferencial fy .
Debe saber lo siguiente.
La fórmula BDF de k = 1 paso, es el método de Euler implícito
yn+1 − yn = hn f (tn+1 , yn+1 ).
Siempre que k ≤ 6, la fórmula BDF de k pasos es convergente de orden k.
Igual que los métodos de Adams, se utilizan estrategias de orden y paso variables.
Las fórmulas BDF son en general menos eficientes que los métodos de Adams (y por supuesto,
que los pares encajados modernos de métodos RK) para problemas no stiff. Por eso, sólo se
emplean en problemas stiff.
El comando de Matlab que utiliza estas fórmulas es ode15s. En realidad, utiliza unas fórmulas similares a las BDF, debidas a Klopfestein y Reiher en 1971 y 1978, denominadas
NDF1 (del inglés, “numerical differentiation formulae") y supuestamente más eficientes que
las fórmulas BDF. Dado que a día de hoy esa mejor eficiencia no es manifiestamente clara, el
comando ode15s permite utilizar las fórmulas BDF siempre que inicialize la opción BDF con
el valor ’on’ mediante el comando odeset.
Ejemplo 1 Retomemos el sistema del Brusselator visto al principio de la lección,
u′ = A + u2 v − (B + 1)u,
v ′ = Bu − u2 v
con A = 1 y B = 3, en el intervalo [0, 20], y condición inicial
u(0)
1,5
y0 =
=
.
v(0)
3
(8)
(9)
Si abreviamos (8) como y ′ = f (t, y) (con y = [u, v]T ) la función f del segundo miembro es obviamente
u
A + u2 v − (B + 1)u,
f1 (u, v),
,
,
y=
=
f (t, y) = f (u, v) =
2
v
Bu − u v
f2 (u, v)
1
Puede ver una descripción de las fórmulas NDF en [7]
5
y la matriz jacobiana fy es
fy =
∂f1
∂u
∂f2
∂u
∂f1
∂v
∂f2
∂v
=
2uv − (B + 1)
B − 2uv
u2
−u2
.
Si queremos emplear el comando ode15s debemos elaborar una función que dados t e y devuelva
esta matriz jacobiana. Para los valores de A y B empleados hasta ahora, A = 1 y B = 3, dicha
función es
function J=brussjac(t,y)
% Matriz jacobiana del segundo miembro del Brusselator
p=2*y(2)*y(1);q=y(1)*y(1);
J=[p-4, q; 3-p, -q];
Para utilizar las fórmulas BDF, en las correspondientes opciones debemos indicar el nombre del
fichero que contiene esta función (en nuestro caso brussjac.m) sin la extensión .m. Inicializamos
las opciones para utilizar ode15s,
opbdf=odeset(’AbsTol’,1e-8,’RelTol’,1e-8,’Stats’,’on’)
opbdf=odeset(opbdf,’BDF’,’on’,’Jacobian’,@brussjac)
En la primera llamada al comando odeset hemos inicializado opciones ya conocidas, y en la segunda
hemos indicado que ode15s debe utilizar las fórmulas BDF inicializando con ’on’ la opción ’BDF’,
y hemos indicado que la función que calcula la matriz jacobiana lleva por nombre brussjac.m.
Ejecutamos
[Tb8,Yb8]=ode15s(@bruss,tiempos,[1.5 3]’,opbdf)
y nos responde
901 successful steps
40 failed attempts
1508 function evaluations
1 partial derivatives
123 LU decompositions
1506 solutions of linear systems
Podemos observar lo siguiente.
En los 901+40 pasos que ha dado y ha aceptado o rechazado, ha resuelto 1506 sistemas
lineales. Tal y como señalamos anteriormente, para dar cada paso debe resolver un sistema
de ecuaciones no lineales por el método de Newton, resolviendo los sistemas lineales en (7).
Vemos que en la mitad de los pasos sólo ha efectuado una iteración.
En los 901+40 pasos y rechazos, sólo ha efectuado 123 descomposiciones LU. Esto es debido
a que la matriz en el sistema (7), una vez hecha su factorización LU (que recordemos tiene un
costo que crece como el cubo de la dimensión de la matriz), aprovecha dicha descomposición
no sólo en otras iteraciones del método de Newton, sino en otros pasos.
6
La razón de los ahorros en iteraciones del método de Newton y de factorizaciones LU se debe
[0]
a que los iterantes iniciales yn+1 para el método de Newton obtenidos por extrapolación son
tan correctos, que una sóla iteración del método de Newton y con una matriz que no es la
correcta es suficiente para encontrar el valor correcto de yn+1 .
El número de pasos, 901, es muy superior al del par encajado DOPRI54 para las mismas
tolerancias, que vimos en secciones anteriores. Esto es, el método DOPRI54 puede dar pasos
considerablemente mayores que las fórmulas BDF para una misma tolerancia.
El gráfico en la Fig. 1, donde se mide la eficiencia relativa de ambos métodos, muestra que, para
alcanzar un nivel de precisión determinado, las fórmulas BDF son un promedio de tres veces más
caras que el método DOPRI54. Aunque se trata sólamente del ejemplo que venimos tratando, esto
−2
10
−4
BDF
10
−6
error
10
−8
10
−10
DOPRI54
10
−12
10
−1
0
10
10
1
10
cputime
Figura 1: Eficiencia de los métodos DOPRI54 y fórmulas BDF en problema (8–9)
es, el problema (8–9) asociado al Brusselator, esta situación es típica y se repite en otros problemas,
salvo que éstos, como veremos en la sección siguitente, sean stiff.
1.3.
Otros métodos
Dado que los puede encontrar en ciertos contextos determinados así como en diversos libros
de texto, comentamos aquí algunos métodos lineales multipaso que no pertenecen a las familias
descritas en los apartados anteriores. En lo que sigue y por brevedad, denotaremos
fn = f (tn , yn ),
n = 0, 1, . . . N.
7
Para los métodos que siguen a continuación, sólo consideraremos el caso
hn = h,
n = 0, 1, . . . , N − 1.
1. Regla de Simpson, Es de la forma
yn+1 − yn−1 =
h
(fn+1 + 4fn + fn−1 ),
3
n = 1, 2, . . . , N − 1,
y es convergente de orden 4. Note que debido a su alto orden el valor de arranque y1 debe
calcularse con un orden similar (por ejemplo con un método Runge-Kutta).
Proviene de aplicar la regla de Simpson en la igualdad
Z tn +h
y(tn + h) − y(tn − h) =
f (t, y(t)) dt.
tn −h
2. Regla del punto medio explícita o “Leap-Frog”. Es de la forma,
yn+1 − yn−1 = 2hfn ,
n = 1, . . . , N − 1.
Es de orden 2. El valor de arranque y1 se suele aproximar con el método de Euler.
3. Método centrado para ecuaciones de segundo orden. Aunque la ecuación (o sistema) de segundo
orden
y ′′ = f (t, y),
se puede escribir como un sistema de primer orden de doble dimensión,
′ z
y
=
,
f (t, y)
z′
y tratarlo como tal con cualquiera de los métodos vistos en las secciones anteriores, existen
métodos específicos para sistemas de segundo orden. Aunque quedan fuera del alcance de este
curso, mencionamos aquí uno que aparece frecuentemente en la aproximación numérica de
ecuaciones en derivadas parciales hiperbólicas.
yn+1 − 2yn + yn−1 = h2 fn ,
n = 1, . . . , N − 1.
Es de orden 2. El valor de arranque y1 se suele aproximar como
y1 = y0 + hy0′ +
2.
h2
f0 .
2
Problemas stiff
Reciben este nombre determinados problemas de valor inicial, donde, para una precisión determinada, un método explícito (como los métodos RK vistos hasta ahora) necesitan para integrarlos
tomar pasos mucho más pequeños que lo que la regularidad de la solución demanda. A continuación
veremos un ejemplo ilustrativo, pero antes una cuestión de nomenclatura. La palabra “stiff” significa
8
rígido en inglés, pero no se ha traducido al referirnos en español a este tipo de problemas. De hecho,
se toma como cursi o ignorante hablar de “problemas rígidos”.
Quizá, el ejemplo más sencillo para aclarar la diferencia entre problemas stiff y aquellos que no
lo son sea el original de Prothero y Robinson, de 1974.
y ′(t) = λ(y(t) − g(t)) + g ′(t),
y(0) = g(0).
(10)
(11)
Las soluciones de la ecuación (10) son de la forma
y(t) = αeλt + g(t),
α ∈ R,
(12)
(o α ∈ C)
y la solución del problema (10–11) es
y(t) = g(t).
Se supone que g tiene infinitas derivadas y que el tamaño de estas es moderado. Cuando Re(λ) < 0 y
|Re(λ)| es muy grande en relación con |Im(λ)| y el tamaño de las derivadas de g, el problema (10–11)
es stiff.
Ejemplo 2 Para g(t) = cos(t), que es una función cuyas derivadas son del orden de la unidad,
consideramos el problema (10–11), con λ = −1 y λ = −100. La Fig. 2 muestra el error frente al
BDF
(λ=−1)
−4
10
−6
error
10
−8
10
DOPRI54
(λ=−1)
−10
DOPRI54
(λ=−100)
10
−12
BDF
(λ=−100)
10
−1
10
0
1
10
10
2
10
cputime
Figura 2: Eficiencia computacional de los métodos DOPRI54 (–) y fórmulas BDF (--) para el
problema de Prothero-Robinson (10–11), con g(t) = cos(t), para λ = −1 (*), y para λ = −100 (+).
costo para diversos valores T OL = RT OL = 10−4 , 10−6, . . . , 10−12 de los métodos DOPRI54 (en
línea continua) y las fórmulas BDF (en línea de trazos) para los casos λ = −1 (marcado con ∗) y
λ = −100 (marcado con +). Son oportunas ciertas observaciones que resumimos a continuación.
1. Para λ = −1 (gráficas con *), los resultados son similares a los del problema (8–9) asociado
al Brusselator que vimos en la Fig. 1 de la sección anterior, esto es, que para alcanzar un niver
de precisión determinado, los fórmulas BDf son tres veces más caras que el DOPRI54.
9
2. Para λ = −100, aunque se trata de la misma solución y(t) = cos(t) del caso λ = −1, la
situación es diametralmente opuesta, resultando ser el método DOPRI54 unas 8 veces más
costoso que las fórmulas BDF.
3. Los resultados del DOPRI54 muestran que dada una tolerancia T OL, en ambos problemas
obtiene los mismos errores, pero para λ = −100 se obtienen con 15 veces más de costo.
4. Los resultados de las fórmulas BDF muestran que dada una tolerancia T OL, en ambos problemas tardan lo mismo en integrar la solución, pero para λ = −100, los errores obtenidos
son unas 40 veces más pequeños.
A la vista de estas observaciones, el hecho más destacado es el deterioro tan significativo de la
eficiencia del método DOPRI54 al pasar de λ = −1 a λ = −100. Este deterioro no puede ser debido
a la solución del PVI, pues en ambos casos es la misma, y(t) = cos(t). Debe ser por tanto debido al
PVI (ecuación diferencial junto con su condición inicial).
La razón de este deterioro es que DOPRI54 se ve forzado a tomar pasos muy pequeños para
poder integrar el problema. Por ejemplo, para T OL = 10−8 , la información proporcionada por
Matlab es la siguiente. Para λ = −1,
203 successful steps
7 failed attempts
1261 function evaluations
0 partial derivatives
0 LU decompositions
0 solutions of linear systems
y para λ = −100,
3457 successful steps
11 failed attempts
20809 function evaluations
0 partial derivatives
0 LU decompositions
0 solutions of linear systems
Vemos que efectivamente el cómputo total de pasos aceptados y rechazados se multiplica por 16 al
pasar de λ = −1 a λ = −100, y en igual proporción el número de evaluaciones de función.
No hay otra descripción de lo que es un problema stiff que la que ya hemos dado y repetimos
a continuación. Un problema, para una precisión determinada y en un intervalo de tiempo determinado, es stiff cuando un método explícito debe tomar pasos mucho más pequeños que lo que la
regularidad de la solución demanda. Comentamos las palabras en cursiva.
Cuando decimos la regularidad de la solución, esto quiere decir que si esa misma solución lo
fuese de otro problema, el método tomaría pasos considerablemente más largos manteniendo
el nivel de precisión pedido. (Compare si no los pasos que ha necesitado el método DOPRI54
para integrar y(t) = cos(t) según sea λ = −1 o λ = −100).
10
Cuando un problema es stiff, todos los métodos explícitos sufren la misma pérdida de eficiencia.
Algunos métodos implícitos también (como por ejemplo los métodos de Adams implícitos)
aunque no otros (como las fórmulas BDF). Por eso se utiliza como criterio para determinar si
un problema es stiff el comportamiento en cualquier método explícito.
No es infrecuente que un problema sea stiff en un intervalo [t0 , tf ] pero deje de serlo a partir
de t0 (o caso más frecuente) no lo sea antes de t0 .
El caracter stiff de un problema depende de la precisión deseada. Si demandamos mucha
precisión (por ejemplo, en un ordenador cuya unidad de redondeo sea del orden de 10−36 )
cualquier método se ve obligado a tomar pasos pequeños para conseguir errores muy bajos, y
los problemas dejan de ser stiff.
Por último, para hacerse una idea de cuál es la dificultad de los problemas stiff, basta considerar
en la ecuación (10) la desviación con respecto a la solución particular
z(t) = y(t) − g(t).
Note que al ser Re(λ) < 0, y que tal y como vimos en (12), se tiene que
(13)
lı́m z(t) = 0.
t→∞
Notemos que z(t) satisface la ecuación
z ′ = λz(t).
Para el método de Euler explícito (que es el único método Runge-Kutta de una etapa convergente), y sobre una partición uniforme (hn = h, para n = 1, 2, . . . ) se tiene que
zn+1 = zn + λhzn = (1 + λh)zn = (1 + λh)2 zn−1 = . . . = (1 + λh)n+1 z0 .
Tenemos por tanto que con el metodo de Euler la solución numérica zn reproduce el comportamiento
de la solución de verdad en (13),
lı́m zn = 0
n→∞
⇔
|1 + λh| < 1.
En el caso de λ ∈ R (y dado que entonces λ < 0) tenemos que
lı́m zn = 0
n→∞
⇔
h<
1
.
|λ|
Dado que para otros métodos RK la situación es similar, esto explica las diferencias entre λ = −1
y λ = −100 en el Ejemplo 2.
Por otro lado para el método de Euler implícito (que es la fórmula BDF de un paso) tenemos
que
zn+1 = zn + λhzn+1 ,
esto es, (1 − λh)zn+1 = zn ,
o, equivalentemente,
zn+1 = (1 − λh)−1 zn = (1 − λh)−2 zn−1 = . . . = (1 − λh)−n−1 z0 .
11
Tenemos por tanto que con el metodo de Euler implícito,
lı́m zn = 0
n→∞
⇔
1
< 1.
|1 + λh|
En el caso de λ ∈ R y negativo tenemos que
lı́m zn = 0
⇔
n→∞
h > 0,
esto es, que para reproducir el comportamiento de la solución z(t) no hay ninguna restricción de
longitud de paso, salvo la que venga impuesta por la regularidad de la misma. El caso de otras
fórmulas BDF de más pasos es similar al del método de Euler implícito, explicando esto que las
fórmulas BDF sean insensibles al tamaño de λ en la ecuación (10).
Puede encontrar más información sobre la naturaleza de los problemas stiff en [3], § 6.1–6.2, así
como amplia documentación sobre este tipo de problemas y su tratamiento numérico en [2]
3.
Otras cuestiones de orden práctico
Los comandos de Matlab para integrar EDOs o sistemas de EDOs, a través de las opciones que
les demos mediante el comando odeset, pueden llevar a cabo diversas tareas como dibujar mapas
de fase, ayudarnos a determinar el periodo de una solución periódica, etc.
Puede que le resulte de utilidad la posibilidad de construir mapas de fase. Mediante la opción
OuputFcn podemos indicarle a Matlab que realice determinada acción cada vez que calcula un
punto. De hecho, Matlab tiene prevista la función odephas2 que dibuja las trayectorias según las
va calculado. El siguiente mapa de fase
1.5
1
0.5
0
−0.5
−1
−1.5
−2
−1.5
del sistema
se obtuvo con la secuencia de comandos
−1
−0.5
0
x′ = 1 − y
y ′ = x2 − y 2
12
0.5
1
1.5
2
(14)
% en la opci\’on para la funci\’on de output, damos odephas2 para
% que dibuje la curva param\’etrica t -> [x(t),y(t)]’;
opciones=odeset(’AbsTol’,1e-6,’RelTol’,1e-6,’OutputFcn’,@odephas2);
figure(1);clf
% dibujamos los ejes en rojo
plot([-2,2],[0,0],’r:’)
hold
plot([0,0],[-1.5 1.5],’r:’);
% fijamos los extremos del dibujo
axis([-2 2 -1.5 1.5])
% por cada condici\’on inicial, que avance 5 unidades de tiempo
% y que retroceda cinco unidades de tiempo.
tiempos=[0 5];
tiempos2=[0 -5];
for j=1:25
% seleccionamos las condiciones inciales con el rat\’on
g=ginput(1)
% marcamos la condici\’on incial en rojo y con un circulito.
plot(g(1),g(2),’ro’)
% integramos el sistema (dado que la opci\’on OutputFcn tiene
% el valor @odephas2, se dibujar\’an las trayectorias seg\’un se
% calculan
[T,Y]=ode45(@sistema,tiempos,g,opciones);
[T,Y]=ode45(@sistema,tiempos2,g,opciones);
end
donde la función sistema proporciona el segundo miembro del sistema (14):
function f=sistema(t,y)
f=[1-y(2);-sum(y)*diff(y)];
Claramente se aprecian dos equilibrios, uno de ellos un punto de silla, y el otro un punto espiral.
Puede continuar el estudio de este ejemplo en el Problema ??.
4.
4.1.
El método del disparo para problemas de contorno
Cuestiones de repaso
Recordemos que un problema de contorno viene dado por una ecuación diferencial de segundo
orden (o de orden par, en general) para la cual se busca la solución u en un intervalo [0, l] o [a, b],
en la que en vez de imponer condiciones iniciales en 0 o en a, se imponen tantas condiciones de
contorno en 0 o a como en l o b. Un ejemplo puede ser el problema
−kuxx (x) = f (x),
x ∈ (0, l),
(15)
u(0) = α, u(l) = β,
13
Las condiciones de contorno tanto en el extremo x = a como en el extremo x = b pueden ser de
uno de los tres tipos siguientes, donde entnderemos que x0 puede ser o bien a o bien b.
i) Condición de tipo Dirichlet, u(x0 ) = u0
ii) Condición de tipo Nuemann, βux (x0 ) = v0 , donde β es un valor real.
iii) Condición mixta o de tipo Robbin, αu(x0 ) + βux (x0 ) = w0 , donde α y β son valores reales.
Ejemplo 3 Una viga colocada horizontalmente y con una densidad de carga lateral f (x),
empotrada en un extremo y apoyada en el otro,
f(x)
x
sufre desplazamiento transversal w(x) en la dirección vertical con respecto su fibra neutra.
f(x)
x
w(x)
Dicho desplazamiento w(x) satisface,
EIwxxxx = −f (x),
w(0) = w′ (0) = 0,
w(l) = w′′ (l) = 0,

x ∈ (0, l), 
(16)

donde E es el módulo de Young e I el momento de inercia de la sección transversal con respecto
al plano horizontal (Si la viga no es de sección constante, debe entonces cambiarse la ecuación
EIwxxxx = −f (x) por (EI(x)wxx (x))xx = −f (x)). Puede obtener más información [4], § 26.6
y [5], § 7.2.
Los problemas de contorno son lineales si sólo aparecen expresiones lineales de la incógnita y
sus derivadas. Tal es el caso de los problemas que hemos escrito hasta ahora. Son lineales y de
coeficientes constantes si aparte de ser lineales los coeficientes que multiplican a la incógnita u y sus
derivadas no dependen de la variable independiente x. Los problemas en los que nos centraremos
serán lineales, aunque deber saber que también los hay no lineales, como por ejemplo el problema
de Bratu,
uxx + λeu = 0,
x ∈ (0, 1),
(17)
u(0) = 0, u(1) = 0,
donde λ es un parámetro real, o el siguiente problema
u′′ + |u| = 0,
u(0) = 0, u(l) = β,
14
,
(18)
donde l > 0.
La casuística de los problemas de contorno es bastante más compleja que las de los sistemas
de ecuaciones ordinarias.
√ Así por ejemplo, el problema (17) tiene dos soluciones distintas para
λ ∈ (λ, λ0 ) donde λ0 ≈ 2, una única solución si λ = λ0 y ninguna si λ > λ0 . A su vez, el problema
(18) si l > π, tiene dos soluciones distintas si β < 0, una única solución si β = 0, y ninguna si β > 0;
En cambio, los problemas (15) y (16) tienen una única solución, sea quien sea f en ambos casos y
sean quienes sean α y β en el problema (15). Esta diferencia entre los problemas (17) y (18) por
un lado, y (15) y (16) por otro, no se debe a que estos sean lineales de coeficientes constantes y los
otros dos sean no lineales. Los problemas lineales y de coeficientes constantes pueden tener también
una casuística variada. Así por ejemplo, el problema
y ′′ + y = cos(t),
,
(19)
y(0) = 0, y(π) = 0,
tiene infinitas soluciones, pero el problema
y ′′ + y = cos( 2t ),
y(0) = 0, y(π) = 0,
(20)
,
no tiene ninguna, y ambos son lineales y de coeficientes constantes.
Recordemos que para problemas lineales (no necesariamente de coeficientes constantes) la casuística es algo más simple y viene dada por el Teorema de la Alternativa de Fredholm que enunciaremos
para un problema general de la forma
uxx + b(x)ux (x) + c(x)u(x) = f (x),
x ∈ (0, l)
(PC)
(21)
B0 (u) = a0 , Bl (u) = al ,
donde


 B0 (u) 

Bl (u)
,
puede ser cualquiera de


 u(0),

u(l),
ux (0),
o
ux (l),
o

−ux (0) + α0 u(0), 
ux (l) + αl u(l),

con α0 6= 0 y αl 6= 0.
Recordando que asociado a este problema tenemos el correspondiente problema homogéneo
uxx + b(x)ux (x) + c(x)u(x) = 0,
x ∈ (0, l)
(PCH).
(22)
B0 (u) = 0, Bl (u) = 0,
Tenemos el siguiente resultado.
Teorema 1 Teorema de la Alternativa (de Fredholm). Se verifica una de las dos opciones
excluyentes siguientes.
i) Para toda f continua el problema (PC) tiene una única solución.
ii) El problema (PCH) tiene solución no trivial.
Además, en caso de que ii) sea cierto, si el problema (PC) tiene solución (puede no tenerla), el
conjunto de soluciones estará constituido la suma de una solución cualquiera de (PC) y todas las
de (PCH).
15
Nota 1 El teorema anterior también es válido cuando p y q son periódicas de periodo l y se pide
que la solución u sea también periódica mediante las condiciones de contorno
B0 (u) = u(l) − u(0) = 0,
B1 (u) = ux (l) − ux (0) = 0.
Nota 2 En el caso ii) del teorema anterior, las soluciones de (PCH) son todas proporcionales a una
dada, salvo en el caso de condiciones frontera periódicas que pueden ser las combinaciones lineales
de dos soluciones independientes.
En el caso de darse la opción ii) del teorema anterior veremos en la próxima sección un criterio
simple para averiguar si el problema de contorno tiene solución (en cuyo caso tendrá infinitas) o,
por el contrario, no posee ninguna solución.
4.2.
El método del disparo
Recuerde que en el método del disparo para un problema de contorno lineal de la forma
y ′′ + py ′ + qy = r,
(PC),
y(a) = α, y(b) = β,
(23)
donde p = p(t), q = q(t) y r = r(t) son funciones continuas en todo [a, b], expresamos la solución
(en caso de haberla) como combinación líneal
donde γ =
y(t) = yp (t) + γy0 (t),
β − yp (b)
,
y0 (b)
(24)
de las soluciones yp e y0 de dos problemas de valor inicial,
yp′′ + pyp′ + qyp = r,
yp (a) = α,
yp′ (a) = 0,
(25)
.
(26)
y
y0′′ + py0′ + qy0 = 0,
y0 (a) = 0, y0′ (a) = 1
Recuerde además que si al calcular la constante γ en (24) el denominador satisface que y0 (b) = 0,
entonces y0 es solución no trivial (pues y0′ (a) = 1 6= 0) del problema homonéneo asociado a (23),
y por tanto éste puede no tener solución o tener infinitas. Este segundo caso se da, obviamente,
cuando el numerador de γ, β − yp (b) es nulo (pues yp ya es entonces una solución de (23)). El primer
caso se da cuando, siendo y0 (b) = 0, se tiene β − yp (b) 6= 0.
Recuerde así mismo que cuando se utiliza este método en el ordenador se obtienen las funciones
yp e y0 sobre una red de puntos a = t0 < t1 < . . . < tN = b.
En el caso de problemas no lineales, que de forma general se escriben como
y ′′ + f (t, y, y ′) = r(t),
.
(27)
y(a) = α, y(b) = β,
el método de disparo consiste en resolver la ecuación
g(s) = 0,
16
por algún método para resolver ecuaciones no lineales como puede ser el método de bisección o el
método de la secante, donde
g(s) = y(b) − β,
e y la solución del PVI
y ′′ + f (t, y, y ′) = r,
y(a) = α, y ′(a) = s.
.
(28)
Para aquél valor de s para el que g(s) = 0, la correspondiente solución de (28) es la solución del
problema de contorno (27).
Nota 3 Aparte del método del disparo, existen otros métodos para problemas de contorno que
trataremos más adelante en el curso.
Nota 4 La mayor parte de los problemas de contorno que Vd. se pueda encontrar antes de abandonar esta escuela podrán resolverse sin dificultad con el método del disparo, o con los métodos que
explicaremos en lecciones posteriores. No obstante, debe saber que Matlab dispone de un comando
muy sofisticado para problemas de contorno, bvp4c. Es más complejo de usar que los comandos
para PVI. Si se ve en la necesidad de utilizarlo, encontrará muy útil leer antes [8] (accesible por
Internet en la dirección ftp://ftp.mathworks.com/pub/doc/papers/bvp), donde este comando
es explicado con detalle por sus propios autores.
5.
Cuestiones y problemas
CUESTIONES
Ejercicio 1 Obtener el método de Adams explícito de dos pasos, y particularizar el caso hn = h,
para todo n.
Ejercicio 2 Idem con método de Adams implícito de dos pasos.
Ejercicio 3 Compruebe que efectivamente el método de Euler implícito es la fórmula BDF de un
paso.
Ejercicio 4 Obtener la fórmula BDF de dos pasos, y particularizar el caso hn = h, para todo n.
Ejercicio 5 (Junio 2005). Determinar los valores α, β y γ para que el método de dos pasos
yn+2 − 2yn+1 + yn = h2 αf (yn+2) + βf (yn+1) + γf (yn ) ,
n = 0, 1, 2, . . . , N − 2,
(tn = t0 + nh, n = 0, 1, 2 . . . , N) sea consistente de orden lo más alto posible para ecuaciones de
segundo orden de la forma y ′′ = f (y), esto es que para una solución de y ′′ = f (y) suficientemente
regular
τn = y(tn+2 ) − 2y(tn+1 ) + y(tn ) − h2 αy ′′(tn+2 ) + βy ′′ (tn+1 ) + γy ′′ (tn )
sea un infinitésimo en h del orden lo más alto posible. Determinar dicho orden.
17
Ejercicio 6 (Junio 2005). La fórmula BDF de k pasos se obtiene imponiendo que el polinomio
interpolador de yn−k+1, . . . , yn , yn+1 satisfaga la ecuación diferencial y ′ = f (t, y) en tn+1 . Para k = 2
(y hn = h para todo n), encuentre el método que se obtiene al imponer que polinomio interpolador
de yn−1 , yn e yn+1 satisfaga la ecuación diferencial y ′ = f (t, y) en tn (observe que se pide en tn , y
no en tn+1 como en las fórmulas BDF).
Ejercicio 7 (Septiembre 2005). Los métodos de Nyström son parecidos a los de Adams pues,
aparte de tener el mismo orden, en el método de Nyström explícito de k pasos, dados los valores
yn−k+1, . . . , yn en los puntos tn−k+1 , . . . , tn (con tj = t0 + jh, j = 0, 1, 2 . . . ) la aproximación yn+1 se
obtiene de la relación
Z t
n+1
yn+1 − yn−1 =
tn−1
∗
Pn,k
(t) dt,
∗
donde, como en los métodos de Adams, Pn,k
(t) es el polinomio de grado k − 1 que en las k abcisas
tn−k+1 , . . . , tn toma los valores f (tn−k+1, yn−k+1), . . . , f (tn , yn ), respectivamente. Calcule el método
de Nyström explícito de 3 pasos.
Ejercicio 8 Resolver −y ′′ + y = 0 sujeto a y(0) = 0 y y(π) = 2. Asimismo, determine los valores
de a para los que el siguiente problema de contorno tenga solución.
′′
y + y = t + asen(t)
y(0) = y(π) = 0
Ejercicio 9 Si k(x) es continua y no nula en [0, l], encontrar dos soluciones independientes de
(k(x)y ′ (x))′ = 0.
Resuelva el problema de contorno
(k(x)y ′ (x))′ = 0
y(0) = 1, y(l) = 0
Ejercicio 10 Encuentre una función u y otra v que satisfagan
u(0) = 1,
u′ (1) = 0,
v(0) = 1,
v ′ (1) + 2v(0) = 3.
Ejercicio 11 Basándose en el ejercicio anterior, pruebe que las solución de culquier problema de
contorno lineal de segundo orden con condiciones fronteras no homegénes, se pueden encontrar
resolviendo un problema con condiciones de contorno homogéneas.
Ejercicio 12 Encuentre todas las soluciones de la ecuación −u′′ +u′ = 0 (ya sabe, las combinaciones
lineales de las funciones eλx para λ raíz del polinomio p(x) = x2 −x). Determinar entonces los valores
de α y β para los cuales el problema
−uxx + ux = 0,
ux (0) = α, ux (l) = β,
tiene solución.
18
Ejercicio 13 Resuelva el problema x2 uxx (x)+xux (x)−u(x) = 0, x ∈ (0, 1), sujeto a las condiciones
de contorno u(1) = 1, y
lı́m |u(x)| < ∞.
x→0
(Encuentre primero los posibles valores de α para los cuales u = xα es solución de la ecuación
diferencial x2 uxx (x) + xux (x) − u(x) = 0, y determine dos soluciones independientes en (0, 1)).
Ejercicio 14 Verifique que para cualquier función continua h : [1, 4] → IR , el problema de contorno
2 ′′
2x y (x) + 3xy ′ (x) − y(x) = h(x)
y(1) = 0, y(4) = 1
tiene solución única. Para h(x) = x hallar la correspondiente solución
Ejercicio 15 Resolver cuando sea posible el problema de contorno
′′
y + 9y = t + a
y(0) = 1, y(π) = 2
Ejercicio 16 Las fórmulas NDF son como las fórmulas BDF vistas en el curso a las que, para
darles mayor estabilidad, se les añade un término proporcional a la diferencia dividida de orden
k + 1 (éste término se añade a la fórmula de k pasos).
1. Para niveles de tiempos espaciados tj+1 − tj = h (j = n, n − 1, n − 2), calcule el desarrollo de
Taylor en tn+1 de 6y[tn+1, tn , tn−1 , tn−2 ] cuya expresión es
6y[tn+1 , tn , tn−1 , tn−2 ] = y(tn+1) − 3y(tn ) + 3y(tn−1) − y(tn−2 ).
2. Determinar en función de τ el orden de la segunda fórmula NDF, esto es, el orden como
infinitésimo en h de la expresión del error de truncación que es
3
1
τn = y(tn+1 ) − 2y(tn ) + y(tn−1 ) − hy ′ (tn+1 ) + 6y[tn+1 , tn , tn−1 , tn−2 ]
2
2
19
PROBLEMAS
Problema 1 Consideremos el sistema autónomo no lineal
′
x = 1−y
y ′ = x2 − y 2
1. Determine analíticamente los puntos críticos del sistema y el tipo de su configuración.
2. Esboce el correspondiente plano de fases en el cuadrado [−2, 2] × [0, 2] utilizando la orden
ode45 de Matlab. Para ello, diseñe un fichero que permita dibujar en una misma gráfica
las órbitas que parten de los puntos (x, 0) con x = −2 : 0,5 : 2 y tales que el instante inicial
es cero, el instante final es diez. Posteriormente, añada las órbitas que parten de los puntos
(x, 2) con x = −2 : 0,25 : 2, con las mismas especificaciones.
3. Repita el apartado dos utilizando la orden ginput para seleccionar los puntos de arranque de
las órbitas. Debe dibujar, al menos, treinta órbitas en el cuadrado [−2, 2]×[0, 2] y las restantes
especificaciones son las mismas que en dicho apartado.
4. Repita el apartado dos usando la opción OutputFcn de la orden odeset de Matlab.
5. Para cada uno de los equilibrios del sistema, esboce un plano de fases en un rectángulo
adecuado. Describa y justifique las representaciones gráficas obtenidas en este apartado y los
tres anteriores.
Problema 2 En este problema se estudia la integración numérica de dos ecuaciones diferenciales
ordinarias rígidas (stiff) de primer orden.
1. Considere la ecuación diferencial
y ′ = −1000(y − sen(t)) + cos(t).
Obtenga analíticamente la solución exacta con valor inicial y(0) = 1. ¿Cuál es el comportamiento a largo plazo de dicha solución?
2. Utilizando la orden ode23 de Matlab, resuelva numéricamente el problema anterior en el
intervalo [0, 1] y en el intervalo [0, 20]. Compruebe la exactitud de la aproximación y estime el
número de evaluaciones funcionales requeridas en ambos casos. Utilizando el estilo de línea ’.’,
describa como ha ido cambiando el paso de integración en ambos intervalos. ¿Cambia mucho
la situación usando la orden ode45? ¿Y usando la orden ode113?
3. Repita el apartado dos, pero usando ahora la orden ode15s. Justifique los resultados obtenidos.
4. Integre numéricamente el problema
y ′ = y 2 (1 − y)
y(0) = 10−4
en el intervalo [0, 2 · 104 ] usando la orden ode45. Como en el apartado dos, comente las
estadísticas de integración y la gráfica en estilo de línea ’.’ de la correspondiente solución.
¿Qué ocurre si repetimos el proceso en el intervalo [0, 104 ]?.
20
5. Repita el apartado cuatro usando la orden ode15s. Justifique los resultados obtenidos.
Problema 3 (Junio 2005) En el curso hemos programado el método Runge-Kutta clásico. Parecido
es el método Runge-Kutta-Nyström (RKN) que deberá programar ahora. Los métodos RKN son
métodos de tipo Runge-Kutta para ecuaciones y sistemas de ecuaciones de segundo orden. Para el
problema
y ′′ = f (y), t ∈ [t0 , tf ]
(29)
y(t0 ) = y0 , y ′(t0 ) = y0′
con un método RKN de s etapas se obtienen aproximaciones yn ≈ y(tn ) e yn′ ≈ y ′ (tn ) (donde
tn = t0 + nh), por el siguiente procedimiento,
ki = f (yn + ci hyn′ + h2
i−1
X
aij kj ),
i = 1, . . . , s,
j=1
yn+1 = yn + hyn′ + h2
s
X
b i ki ,
i=1
′
yn+1
= yn′ + h
s
X
bi ki
i=1
(note que hay coeficientes bi para las yn y bi para las yn′ ). Considere entonces el método de Nyström
de s = 4 etapas de tablero de Butcher generalizado,
c A
T
b
bT
0
1
5
2
3
dado por
1
bi
bi
1
50
−1
27
21
70
14
336
14
336
7
27
−4
70
100
336
125
336
18
70
54
336
162
336
35
336
1. Elabore una función de Matlab que implemente dicho método de encabezamiento
function [T,Y,Yp]=elrkn(laf,t0,tf,y0,yp0,h)
% devuelve en T los los tiempos T(j)=t0+j*h y en cada fila de Y la
% traspuesta de la aproximaci\’on en tiempo T(j) a la soluci’on
% del problema y’’=laf(t,y), y(t0)=y0, y’(t0)=yp0 obtenida con el
% m\’etodo Runge-Kutta-Nystrom de s=5 etapas con paso h, y en cada fila
% de Yp la traspuesta de la aproximaci’on en tiempo T(j) de y’
21
2. Pruebe su función en el problema
′′ y1
y1 (0)
1
y1
=−
,
=
,
y2′′
y2
y2 (0)
0
y1′ (0)
y2′ (0)
=
0
1
,
t ∈ [0, 5].
¿Cuál es la solución de este problema? ¿Qué error obtiene con h = 0,1 en t = 5?
3. Averigue el orden p de convergencia del método. Explique cómo lo ha hecho.
4. Escriba con 4 cifras signicativas correctas la solución en tiempo t = 5 de
′
′′ −1
0
y1 (0)
1/4
y1 (0)
y1
y1
= p
,
=
,
.
= 2
y2′ (0)
0
y2 (0)
y2′′
5/3
(y1 + y22)3/2 y2
Problema 4 Considere el problema de contorno
′′
y = 4y + 2t
(P 1) ≡
y(0) = α, y(3) = β
1. Calcule la solución exacta del problema (P1) cuando α = 1 y β = 2.
2. Para obtener una aproximación a la solución del problema del apartado anterior sobre una
red de espaciado h = 0,01 utilice el método del disparo, con el comando ode45 (con AbsTol y
RelTol iguales a 10−8 ) para integrar los correspondientes problemas de valor inicial. Esboce
una gráfica de la solución y calcule el máximo error (absoluto) cometido sobre los puntos 0,
0.01, 0.02, . . . , 1.99, 2.
3. Considere ahora el siguiente problema de contorno no lineal
′′
y − 20yy ′ = 0,
(P 2) ≡
y(0) = 1, y(1) = 0.
Diseñe una función en Matlab que implemente el método de disparo no lineal, utilizando
la orden ode45 para abordar los correspondientes problemas de valor inicial y el método de
la secante para determinar la sucesión de parámetros. Los argumentos de entrada deben ser
la correspondiente ecuación fun, el paso h para la red sobre la que se desea la solución, la
tolerancia (absoluta y relativa) de la orden ode45, el máximo número de iteraciones y los dos
valores iniciales s0 y s1 del método de la secante. Se supone que el problema de contorno se
ha reformulado de la siguiente manera: determinar el parámetro s tal que
′′
y = f (t, y, y ′),
; y(1) = 0.
y(0) = 1, y ′(0) = s
4. Utilizando la función del apartado anterior, calcule una aproximación a la solución de (P 2)
para h = 0,01, tolerancia 10−7 , s0 = 0, s1 = −10−8 y con un máximo de dos iteraciones
(además de las asociadas a s0 y s1 ). Esboce una gráfica de la solución y escriba (con seis cifras
significativas) el valor de y(1). Repita el proceso pero realizando esta vez cuatro iteraciones.
5. Proporcione el valor de la solución en x = 0,9.
22
Problema 5
1. Diseñe una función en Matlab que implemente el método de disparo no lineal,
utilizando la orden ode45 para la resolución de los correspondientes problemas de valor inicial
y el método de la secante para determinar la sucesión de parámetros. Los argumentos de
entrada deben ser la correspondiente ecuación, los puntos a y b, las condiciones de contorno
α y β, la tolerancia de la órden ode45, el máximo número de iteraciones y los dos valores
iniciales s0 y s1 del método de la secante. Se supone que el problema de contorno se ha podido
formular de la siguiente manera: determinar el parámetro s tal que
′′
y = f (t, y, y ′),
y y(b) = β.
y(a) = α, y ′ (a) = s
2. Considere el problema de contorno
(
y ′′ = y 3 − yy ′,
1 .
1
y(1) = , y(2) =
2
3
Obtenga una gráfica de la solución de dicho problema usando la función del apartado uno.
Compare dicha gráfica con la gráfica de la solución exacta
y(t) =
1
.
t+1
3. Modifique el fichero del apartado uno para que el método de disparo no lineal incluya, además,
como criterio de parada la diferencia en valor absoluto entre el valor obtenido y(sn ) en la
iteración n-ésima y el valor deseado β.
4. Considere el siguiente problema de contorno
3 ′′′
t y − 4t2 y ′′ + 8ty ′ − 8y = 4 log(t),
y(1) = 0, y ′ (1) = 1, y(2) = 1
.
Obtenga gráficamente una solución del problema anterior en un mallado de paso 0.1, usando
la función del apartado tres con tolerancia (para la secante) igual a 10−4 . Calcule el error
cometido sabiendo que la solución general de la ecuación es del tipo
y(t) = c1 t + c2 t2 + c3 t4 −
1
7
log(t) − .
2
8
Problema 6 (Examan Final 2007-08) Considere el siguiente problema de contorno no lineal
′′
y + 20y(1 − y 2 ) = 0,
(P 1) ≡
y(0) = α, y ′(1) = β.
1. Diseñe una función en Matlab (o modifique la que hicimos en su día en las prácticas
del curso) que implemente el método de disparo no lineal para este problema, utilizando la
orden ode45 para abordar los correspondientes problemas de valor inicial y el método de la
secante para determinar la sucesión de parámetros. Los argumentos de entrada deben ser la
correspondiente ecuación fun, el paso h para la red sobre la que se desea la solución, los valores
23
α y β, la tolerancia (absoluta y relativa) de la orden ode45, el máximo número de iteraciones
y los dos valores iniciales s0 y s1 del método de la secante. Se supone que el problema de
contorno se ha reformulado de la siguiente manera: determinar el parámetro s tal que

 y ′ = v,
v ′ = f (t, y, v),
;
v(1) − β = 0.

y(0) = 1, v(0) = s,
(Obviamente, f (t, y, v) = −20y(1 − y 2).) Escriba el listado de dicho programa en su hoja de
respuestas.
2. Utilizando la función del apartado anterior, calcule una aproximación a la solución de (P 1)
cuando α = 1 y β = −2; para h = 0,01, tolerancia 10−7 , s0 = 0, s1 = −1/100, y con un máximo
de dos iteraciones (además de las asociadas a s0 y s1 ). Esboce una gráfica de la solución y
escriba (con seis cifras significativas) el valor de y(1). Repita el proceso pero realizando esta
vez cuatro iteraciones.
3. Proporcione el valor de la solución en x = 0,9 con 10 cifras decimales correctas.
4. Considere ahora el mismo problema de contorno pero cambiando la segunda condición de
contorno a y ′(1) + y(1) = −2, esto es,
′′
y + 20y(1 − y 2) = 0,
(P 2) ≡
y(0) = 1, y ′(1) + y(1) = −2.
Repita el apartado 2 para el problema de contorno con esta nueva condición frontera.
Referencias
[1] E. Hairer, S. P. Nørsett & G. Wanner, Solving Ordinary Differential Equations I (2nd. Ed.)
(Springer-Verlag, Berlin, 1993).
[2] E. Hairer & G. Wanner, Solving Ordinary Differential Equations II (2nd. Ed.) (Springer-Verlag,
Berlin, 1997).
[3] J. D. Lambert, Numerical Methods for Ordinary Differential Systems. The initial value Problem. John Wiley & Sons, Chichester, 1991.
[4] P. Puig Adam, Curso Teórico-Práctico de Cálculo Integral Aplicado a la Física y Técnica (15a
Ed.) Ed. Biblioteca Matemática, Madrid, 1976.
[5] P. Puig Adam, Curso Teórico-Práctico de Ecuaciones Difrenciales Aplicado a la Física y Técnica (16a Ed.) Roberto Puig Alvarez, Madrid, 1980.
[6] J. M. Sanz-Serna, Diez Lecciones de Cálculo Numérico, Universidad de Valladolid, 1998.
[7] L. F. Shampine & M. W. Reichelt, The Matlab ODE Suite, SIAM J. Sci. Comput., 18 (1997),
pp. 1–22.
24
[8] L. F. Shampine, J. Kierzenka & M. W. Reichelt, Solving Boundary Value Problems for Ordinary
Differential Equations in Matlab with bvp4c, manuscrito accesible electrónicamente en la
dirección “ftp://ftp.mathworks.com/pub/doc/papers/bvp”, 2000.
[9] G. F. Simmons Ecuaciones Diferenciales con Aplicaciones y Notas Históricas (Segund Edición),
McGraw-Hill, Madrid, 1991.
[10] G. W. Stewart, Afternotes on Numerical Analysis, SIAM, Philadelphia, 1996.
25

Documentos relacionados