Resolución numérica de problemas de valor inicial

Anuncio
Resolución numérica de problemas de valor inicial
(versión preliminar)
Conceptos iniciales.Sea la ecuación diferencial de primer orden
x’ = f(t,x)
con las condición inicial
x(t 0 ) = x0
Para resolverla numéricamente será necesario previamente comprobar si hay solución y si ésta
es única.
Para ello es conveniente recordar el teorema de existencia y unicidad que garantiza solución
del problema de valor inicial de una ecuación diferencial ordinaria de primer orden.
Como se sabe, hay distintos enunciados en los que se definen las condiciones suficientes para
la existencia de solución única. En ellos se van debilitando las condiciones impuestas a la
función f(t,x).
A modo de recordatorio, el teorema de Picard establece, por ejemplo, que, si las funciones f y
∂f/ ∂x son continuas en un rectángulo cerrado D del plano tx, con lados paralelos a los ejes, y el
punto (t 0, x 0) es un punto interior de D, entonces existe un número real H > 0 con la propiedad
de que el problema de valor inicial x’ = f(t,x), con x(t 0) = x0, tiene una solución única en el
intervalo |t – t0| ≤ H.
Si se debilita la condición de que la derivada parcial de f respecto de x sea continua en el
rectángulo y se exige que se satisfaga la desigualdad, conocida con el nombre de condición de
Lipschitz en la variable x:
|f(t,x1) - f(t,x2)| ≤ K·|x 1 – x 2|
en los puntos del recinto D, se consigue una versión más fuerte del teorema, que recibe el
nombre de teorema de Picard-Lindelöff. Su enunciado es: si f(t,x) es continua en “t” y en “x” en
el rectángulo cerrado D definido por ·
|t – t0| ≤ a;
|x – x 0| ≤ b
y existe una constante K (constante de Lipschitz), independiente de t, de x1 y de x 2, tal que si
(t,x1) y (t,x 2) son puntos interiores del dominio D se verifica que
|f(t,x1) - f(t,x2)| ≤ K·|x 1 – x 2|
(condición de Lipschitz) entonces la ecuación diferencial tiene solución única x(t) definida en un
entorno del punto t0 (|t – t0| ≤ H) tal que x(t 0 ) = x0, siendo H = Min (a, b/M), donde M es la cota
superior en D de la función f(t,x) es decir |f(t,x)| < M, ∀ (t,x) ∈ D.
Este valor de H define el entorno del punto t0 en el que existe solución única del problema de
valor inicial. Es una cantidad que no se puede sobrepasar al aplicar un método numérico, so
pena de obtener resultados que no tengan ningún sentido.
Métodos basados en el desarrollo en serie de Taylor.Estos métodos se conocen con el título de métodos de un solo paso, ya que, para obtener el
valor de la función buscada en el punto t = tk , se basan exclusivamente en el obtenido en t = tk1. El fundamento de este método es bastante sencillo. Como se sabe, el desarrollo en serie de
una función en un punto responde a la siguiente expresión:
x( t + h) = x( t ) +
1
1
1
1
⋅ x' ( t) ⋅ h + ⋅ x" ( t) ⋅ h 2 + ⋅ x(iii) ( t) ⋅ h 3 + ⋅ x (iv ) ( t ) ⋅ h 4 + 0(h 5 )
1!
2!
3!
4!
Repárese que el valor de x’(t) es f(t,x) y las siguientes derivadas se pueden obtener de un
modo sistemático a partir de ésta, suponiendo la continuidad en las derivadas parciales de la
función f respecto a ambos argumentos. Es decir,
© 2004 Tecnun (Universidad de Navarra)
Resolución numérica de problemas de valor inicial
x" ( t) =
xiii ( t) =
∂ 2 f( t, x)
∂t 2
+ 2⋅
∂ f ( t, x ) ∂ f( t, x )
+
⋅ f( t, x )
∂t
∂x
2
∂ 2 f ( t, x )
∂ 2 f ( t, x ) 2
∂f ( t, x) ∂ f( t, x)  ∂ f( t, x) 
⋅ f( t, x ) +
⋅ f ( t, x ) +
⋅
+
 ⋅ f( t, x )
∂x∂ t
∂x
∂t
 ∂x 
∂x 2
donde se aprecia que cuando se va incrementando el orden de derivación se va aumentando la
complejidad de cálculos, haciendo este sistema absolutamente tedioso, a no ser que se
disponga de un software algebraico que permita realizar de modo automático estas derivadas,
cosa no habitual cuando se quieren resolver numéricamente ecuaciones diferenciales.
El término del resto en la serie de Taylor tiene la forma:
Rn =
1
⋅ hn +1 ⋅ x (n +1) ( t + θ ⋅ h)
( n + 1)!
0 < θ <1
5
Sin embargo, es conveniente fijar la atención en el símbolo utilizado 0(h ) con el que se ha
concluido el desarrollo. Esa expresión se lee diciendo que el resto del desarrollo en serie -es
5
decir, los términos que no se escriben- es del “orden de h ”. Si se denomina al resto Rn, ese
símbolo significa que existe un número real positivo K tal que
Rn
h5
<K
cuando
h→0
Nota: Para una explicación más completa de este símbolo se remite a los libros “Asymptotic methods in
analysis” de N.G. de Bruijn (Dover Publications Inc., 1981) o “Advanced Mathematical Methods with
Maple ” de D. Richards (Cambridge University Press, 2002)
A) Volviendo al método numérico apenas delineado, se presenta el método de Euler que se
basa en tomar sólo dos términos del desarrollo en serie.
x( t k + 1) = x( t k + h ) = x( t k ) +
x' ( t k )
⋅ h + 0(h 2 )
1!
o lo que es lo mismo
x( t k + 1 ) = x( t k ) + f ( t k , x ( tk )) ⋅ h + 0(h 2 )
llamando xn = x(t n), resulta
x k + 1 = x k + f( t k , x k ) ⋅ h + 0( h 2 )
siendo el algoritmo numérico de la forma:
xk + 1 = x k + f( t k , x k ) ⋅ h
Así, pues se parte de los valores iniciales (t 0, x 0) y se obtiene
 t1 = t 0 + h

x1 = x0 + f ( t 0 , x 0 ) ⋅ h
siendo h una cierta cantidad pequeña que se conoce con el nombre de paso y que sirve para
determinar, como se ha visto, el valor en el “punto siguiente” (t 1, x1). El punto (t 2, x2) se
determina de modo análogo:
 t 2 = t1 + h

 x 2 = x1 + f ( t1, x1) ⋅ h
y asi sucesivamente
t k +1 = t k + h

 x k + 1 = x k + f( t k , x k ) ⋅ h
siempre teniendo en cuenta que debe ser |t k – t0| ≤ H, siendo H el límite superior definido en el
teorema de existencia y unicidad.
© 2004 Tecnun (Universidad de Navarra)
2
Resolución numérica de problemas de valor inicial
Ejemplo: Se puede ver gráficamente qué es lo que hace el método de Euler, en el problema x’
= t·sin(x) + t, con x(0) = 0, haciendo h = 0.1 y considerando tres pasos nada más..
¿Qué se puede decir de los errores cometidos en la solución que se está obteniendo? Téngase
2
en cuenta que se ha truncado la serie de Taylor, suprimiendo términos a partir del h . Esto
indica que va a haber una inexactitud en el valor obtenido debida a este truncamiento. A este
error se le llama error de truncamiento (truncation error). Es obvio darse cuenta de que los
únicos datos exactos de los que se parte teóricamente son las condiciones iniciales (t 0, x0).
Esto quiere decir que ya se obtiene un valor no exacto en x1. Como este valor se utiliza para la
obtención del siguiente x 2 y así sucesivamente, se puede hablar de un error local de
truncamiento (local truncation error) -el que se cometería si fuera exacto el valor de la
función en el punto precedente- y un error global de truncamiento (global truncation error),
que se obtiene por acumulación de errores en los puntos precedentes. Como se puede probar,
2
el error local de truncamiento es del orden de h mientras que el error global es del orden de h.
Siguiendo la definición dada por D. Kincaid y W. Cheney en su libro “Análisis Numérico”
(Addison-Wesley Iberoamericana, 1994), “el error de truncamiento local es el que aparece en
un paso cuando reemplazamos un proceso infinito por uno finito”.
Existe otro error sobre el que teóricamente el programador no tiene posibilidad de actuar y es el
denominado error de redondeo (round-off error). Como es sabido, un ordenador no es capaz
de trabajar con las infinitas cifras de un número real, por lo que redondea en función de la
precisión que se le solicite, suprimiendo cifras decimales. Esto significa que, cuando la
máquina opera, siempre da valores inexactos por la precisión limitada del ordenador. Se puede
hablar de un error de redondeo local (local round-off error) y de una error de redondeo
global (global round-off error), que se obtiene por acumulación de los errores de redondeo
locales.
Como es lógico, el error total es la suma del error de redondeo global y del error de
truncamiento global.
Esta teoría expuesta es válida para todos los procedimientos numéricos que se presenten en
epígrafes posteriores.
B) El método de Taylor, propiamente dicho, se basa en truncar la serie por un término más
alto del desarrollo, así se habla de método de Taylor de segundo orden si el resto es del orden
© 2004 Tecnun (Universidad de Navarra)
3
Resolución numérica de problemas de valor inicial
3
N+1
de h y, en general de orden N si el resto es de orden h . La dificultad práctica, que entraña
este método, es el cálculo de las derivadas que constituye una labor bastante tediosa.
Conceptualmente no tiene dificultad alguna.
La utilización de Maple puede ayudar a la obtención de las derivadas parciales de la función
f(t,x). En el programa anexo se presenta el método de Taylor de orden R
> restart:
> f:=(t,x)->t*sin(x)+t;
Orden máximo de derivación en el desarrollo de Taylor
> R:=3;
> xder[0]:=(t,x)->f(t,x);
> for k from 1 to R do xder[k]:=unapply(diff(xder[k1](t,x),t)+diff(xder[k-1](t,x),x)*f(t,x),t,x) end do:
Número de pasos
> N:=3;
> h:=0.1;
Condición inicial
> x[0]:=0;t[0]:=0;
> for k from 1 to N do t[k]:=t[k-1]+h end do:
> xR[0]:=x[0];
Fórmula de Taylor
> for k from 1 to N do xR[k]:=xR[k-1]+h*xder[0](t[k-1],xR[k-1])+
add(h^s*xder[s](t[k-1],xR[k-1])/(s+1)!,s=1..R) end do;
El ejemplo calculado anteriormente con el método de Euler con el mismo número de pasos
conduce a la siguiente gráfica:
Como la solución exacta es
 t2 

x( t ) = −2 ⋅ arctan
t2 − 4


se pueden mostrar los resultados en la tabla
© 2004 Tecnun (Universidad de Navarra)
4
Resolución numérica de problemas de valor inicial
t
Euler
Taylor orden 4
Solución exacta
0
0
0
0
0.1
0
0.005012520833
0.005012520832
0.2
0.01
0.02020133317
0.02020133316
0.3
0.03019999667
0.04602767792
0.04602767792
Método de Runge–Kutta. Salvo que se disponga de un software simbólico para realizar la derivación de la función f(t,x)
tantas cuantas veces sean precisas para aplicar la fórmula de Taylor, se han buscado otros
métodos que eluden, siendo de una sola etapa, el cálculo tedioso de las derivadas a mano.
Al desarrollar en serie de Taylor una función en torno a un punto, la fórmula utilizada es:
x( t + h) = x( t ) +
1
1
1
1
⋅ x' ( t) ⋅ h + ⋅ x" ( t) ⋅ h 2 + ⋅ x(iii) ( t) ⋅ h 3 + ⋅ x (iv ) ( t ) ⋅ h 4 + 0(h 5 )
1!
2!
3!
4!
donde sabemos que
x’(t) = f(t,x)
∂ f ( t, x ) ∂ f( t, x )
x" ( t) =
+
⋅ f( t, x )
∂t
∂x
xiii ( t) =
∂ 2 f( t, x)
∂t 2
+ 2⋅
2
∂ 2 f ( t, x )
∂ 2 f ( t, x ) 2
∂f ( t, x) ∂ f( t, x)  ∂ f( t, x) 
⋅ f( t, x ) +
⋅ f ( t, x ) +
⋅
+
 ⋅ f( t, x )
∂x∂ t
∂x
∂t
 ∂x 
∂x 2
Por tanto, considerando sólo los tres primeros sumandos
x( t + h) = x + h ⋅ f +
1 2  ∂f
∂f 
⋅ h ⋅  + f ⋅  + 0(h 3 )
2
∂x 
 ∂t
siendo evaluados los valores del segundo miembro en x(t) y en t. Repárese,sin embargo, que
∂f 
 ∂f
f ( t + h, x + h ⋅ f ) = f + h ⋅  + f ⋅  + 0( h 2 )
∂x 
 ∂t
evaluados también los términos del segundo miembro en x(t) y en t. Con esta expresión se
puede reescribir el valor en x(t+h) del siguiente modo:
x( t + h) = x +
1
1
⋅ h ⋅ f + ⋅ h ⋅ f ( t + h, x + h ⋅ f ) + 0( h 3 )
2
2
Llamando
F1 = h·f(t,x)
y
F2 =h·f(t + h,x + F1)
Resulta que
x(t + h) = x(t) + (F1 + F2)/2
Este procedimiento se denomina método de Runge–Kutta de segundo orden o método de
Heun.
Las fórmulas de Runge –Kutta de segundo orden adoptan la forma
x(t + h) = x + w1·h·f(t,x) + w2·h·f(t + α·h,x + β·h·f(t,x))
© 2004 Tecnun (Universidad de Navarra)
5
Resolución numérica de problemas de valor inicial
desarrollando en serie de Taylor el factor del tercer término del segundo miembro y
comparando el resultado con el desarrollo en serie de Taylor de x(t+h), resulta que
w1 + w2 = 1
w1·α = ½
w2·β = ½
con lo que, fijado uno de los cuatro valores w1, w2, α y β, pueden ser calculados los demás,
verificando las expresiones precedentes. Por este motivo no hay una sola expresión para el
método de Runge–Kutta de segundo orden; sino que se puede hablar de una familia de
métodos de Runge–Kutta de segundo orden.
El programa en Maple para la resolución de un problema de valor inicial tendría esta forma:
> restart:
> f:=(t,x)-> t*sin(x)+t;
Condiciones iniciales
> t_0:=0.;
> x_0:=0.;
Número de pasos
> N:=3;
> h:=0.1;
Definición de la familia de método Runge Kutta de segundo orden
> w_1:= 0.5; #valor tomado
> w_2:=1.-w_1; alpha:=1/(2*w_2); beta:=1/(2*w_2);
> t:=vector(N+1,[seq(t_0+r*h,r=0..N)]):
> x[1]:=x_0:
> for n from 1 to N
do x[n+1]:=
x[n]+w_1*h*f(t[n],x[n])+w_2*h*f(t[n]+alpha*h,x[n]+beta*h*f(t[n],x[n]))
end do:
Ejemplo.- Volviendo al problema anteriormente presentado, se puede ver la gráfica obtenida y
los valores correspondientes, comparados con los obtenidos por los otros métodos
© 2004 Tecnun (Universidad de Navarra)
6
Resolución numérica de problemas de valor inicial
t
Euler
Taylor orden 4
Heun
Solución exacta
0
0
0
0
0
0.1
0
0.005012520833
0.00500000000
0.005012520832
0.2
0.01
0.02020133317
0.02017549422
0.02020133316
0.3
0.03019999667
0.04602767792
0.04598575310
0.04602767792
Véase la buena aproximación obtenida con un escasísimo coste computacional y sin necesidad
de calcular derivada alguna.
Por idéntico procedimiento, se pueden calcular las familias de métodos de Runge-Kutta de
orden superior. A continuación se escribe sin demostración, que se deja para el lector, una de
las posibles fórmulas del método de Runge–Kutta de cuarto orden:
x(t +h) = x(t) + (F1 + 2·F2 + 2·F3 + F4)/6
donde
F1 = h·f(t,x)
F2 = h·f(t + h/2,x + F1/2)
F3 = h·f(t + h/2,x + F2/2)
F4 = h·f(t + h,x + F3)
De nuevo se puede plantear el orden del error cometido por el método de Runge–Kutta.
Obviamente, sólo se va a comentar el error de truncamiento. En el método de Runge–Kutta de
5
cuarto orden, el error local de truncamiento es del orden de h , ya que en el método de Taylor,
4
5
al que se identifica, se llega hasta el término en h . Por tanto el error será de la forma K·h ,
siendo K una constante que es independiente de h y que depende del valor de t en el punto en
el que se esté determinando.
Métodos implícitos. Hasta el momento en los métodos descritos se determinaba el valor de la función en el punto
x(t) en base al valor en el punto “anterior” de t directamente y mediante una fórmula explícita,
es decir, se calcula x(t) simplemente por aplicación de la fórmula sin tener que realizar ningún
cálculo más. Por este motivo se denominan también métodos explícitos.
Los métodos que ahora se presentan se denominan implícitos porque plantean un sistema de
ecuaciones de los que hay que extraer el valor de la función. En concreto, considérese el
problema hasta ahora estudiado. Es claro que
tn + 1
x( t n+1 ) − x( tn ) =
∫t f(t, x) ⋅ dt
n
Si se supone que, por algún procedimiento, se ha obtenido el valor de la integral, se llegaría a
la siguiente ecuación:
x( t n + 1) − x( t n ) = G (x( t n + 1), x( t n ), t n + 1, t n )
siendo
G(x( t n+1 ), x( t n ), t n+1, tn ) =
tn + 1
∫t f (t, x ) ⋅ dt
n
el cálculo de x(t n+1) exigiría la resolución de esta ecuación donde implícitamente, y no
explícitamente, está la incógnita que se quiere obtener.
© 2004 Tecnun (Universidad de Navarra)
7
Resolución numérica de problemas de valor inicial
A) Método de Adams–Bashforth.- Considérese que, por algún otro método, se ha obtenido el
valor de la función x(t) en los k puntos tn, tn-1, ....., tn – (k – 2) y tn – (k – 1). Sea cual fuere la expresión
exacta de f(t,x), se va a suponer que la función f(t,x) es un polinomio de grado k - 1 en t que
pasa por los puntos (t r, f(t r,x(t r)) con r = n – (k – 1), n – (k – 2), ...., n. Para simplificar la
presentación, y sin perder generalidad, se va a considerar que k = 5. Para construir el
polinomio en t de grado 4, que represente a la función f(t,x), se va a hacer uso de los
polinomios de Lagrange,
Nota.- Supóngase que se desea que un polinomio de grado 4 pase por los puntos (a,α), (b,β), (g,γ), (d,δ)
y (e, ε). Para ello se generan cinco polinomios de la siguiente forma:
l 1( t) =
( t − b ) ⋅ ( t − g) ⋅ ( t − d ) ⋅ ( t − e)
( a − b ) ⋅ ( a − g) ⋅ ( a − d) ⋅ (a − e )
l 2 (t ) =
( t − a ) ⋅ ( t − g) ⋅ ( t − d) ⋅ ( t − e )
( b − a) ⋅ ( b − g) ⋅ ( b − d) ⋅ ( b − e)
l 3 (t ) =
( t − a ) ⋅ ( t − b ) ⋅ ( t − d) ⋅ ( t − e )
( g − a) ⋅ ( g − b ) ⋅ ( g − d) ⋅ ( g − e)
l 4 ( t) =
( t − a) ⋅ ( t − b) ⋅ ( t − g ) ⋅ ( t − e)
(d − a ) ⋅ ( d − b) ⋅ (d − g) ⋅ (d − e )
l 5 (t ) =
( t − a ) ⋅ ( t − b) ⋅ ( t − g ) ⋅ ( t − d)
( e − a ) ⋅ ( e − b) ⋅ ( e − g ) ⋅ ( e − d)
de modo que el polinomio buscado es:
P( t ) = α ⋅ l1( t) + β ⋅ l 2 ( t) + γ ⋅ l 3 ( t) + δ ⋅ l 4 ( t) + ε ⋅ l 5 ( t )
La fórmula de Adams–Bashforth tiene la forma:
x n+1 = x n + h·(A· xn + B· xn-1 + C· x n-2 + D· xn-3 + E· xn-4)
donde
t n+1
xn +1 = xn +
∫t f (t, x) ⋅ dt
n
y los coeficientes A, B, C, D y E se determinan haciendo que la integral fuera exacta, si f(t,x(t))
fuera un polinomio de grado cuatro, o menor grado. El polinomio se determina por los valores
fn, fn-1, fn-2, fn-3 y fn-4, correspondientes a los puntos tn, tn-1, tn-2, tn-3 y tn-4, respectivamente. Si la
distancia entre las abscisas es h, se puede hacer un cambio de origen y escala, de modo que
[tn, t n+1] se convierta en el intervalo [0,1], es decir
u=
t − tn
h
Así: un+1 = 1, un = 0, un+1 = 1, un-1 = -1, un-2 = -2, un-3 = -3 y un-4 = -4
El polinomio de grado 4 se puede construir definiendo los polinomios de Lagrange y a
continuación integrando:
> restart:
> L[0]:=u-> (u+1)*(u+2)*(u+3)*(u+4)/24:
> L[1]:=u-> -u*(u+2)*(u+3)*(u+4)/6:
> L[2]:=u-> u*(u+1)*(u+3)*(u+4)/4:
> L[3]:=u-> -u*(u+1)*(u+2)*(u+4)/6:
> L[4]:=u-> u*(u+1)*(u+2)*(u+3)/24:
> Int(f[n]*L[0](u)+f[n-1]*L[1](u)+f[n-2]*L[2](u)+f[n-3]*L[3](u)+f[n4]*L[4](u),u=0..1)=int(f[n]*L[0](u)+f[n-1]*L[1](u)+f[n-2]*L[2](u)+f[n3]*L[3](u)+f[n-4]*L[4](u),u=0..1);
Teniendo en cuenta que la relación entre dt y du es h, se puede llegar a la fórmula de Adams–
Bashforth:
© 2004 Tecnun (Universidad de Navarra)
8
Resolución numérica de problemas de valor inicial
xn +1 = x n + h ⋅
1901 ⋅ fn − 2774 ⋅ fn− 1 + 2616 ⋅ fn − 2 − 1274 ⋅ fn − 3 − 251 ⋅ fn − 4
720
Es obvio que los cinco primeros términos –f1, f2, f3, f4, f5– habrá que determinarlos por otro
método, bien uno derivado de Taylor o Runge–Kutta.
A este método se le denomina también método multietapa, pues se determina el valor de la
función en un punto haciendo uso de los valores en puntos precedentes.
B) Método de Adams–Moulton. - La idea es la misma que en el caso anterior, pero el
polinomio se expresa en función de los valores de la función f(t,x) en los punto tn+1, tn, tn-1, tn-2 y
tn-3, de los que obviamente se desconoce el valor de xn+1. El modo de operar es exactamente
igual que antes. Se construyen los polinomios de Lagrange -realizando el mismo cambio de
variable>
>
>
>
>
L[0]:=u->u*(u+1)*(u+2)*(u+3)/(1*2*3*4);
L[1]:=u->(u-1)*(u+1)*(u+2)*(u+3)/(-1*1*2*3);
L[2]:=u->(u-1)*u*(u+2)*(u+3)/(-2*(-1)*1*2);
L[3]:=u->(u-1)*u*(u+1)*(u+3)/(-3*(-2)*(-1)*1);
L[4]:=u->(u-1)*u*(u+1)*(u+2)/(4*3*2*1)
Con la correspondiente integral:
> int(f[n+1]*L[0](u)+f[n]*L[1](u)+f[n-1]*L[2](u)+f[n-2]*L[3](u)+f[n3]*L[4](u), u=0..1);
Donde se llega a
xn +1 = xn + h ⋅
251 ⋅ fn+ 1 + 646 ⋅ fn − 264 ⋅ fn − 1 + 106 ⋅ fn − 2 − 19 ⋅ fn − 3
720
Esta es la fórmula de Adams–Moulton de orden cinco. De aquí se debería despejar xn+1
para determinarlo. En este caso se ve más claramente que en el anterior que se está ante un
método implícito.
Es bastante usual determinar x n+1 utilizando el método de Adams Bashforth (método
predictor) y corregir el resultado introduciendo este valor en el segundo miembro de la fórmula
de Adams–Moulton (método corrector). De esta manera se predice y se corrige el valor
mediante estos dos métodos, sin necesidad, en el último caso de resolver la ecuación –en
muchos casos imposible- para obtener el valor de xn+1.
Resolución de sistema de ecuaciones.Antes de iniciar este epígrafe, sería conveniente recordar que una ecuación de orden superior
al primero se puede convertir en un sistema de tantas ecuaciones de primer orden como orden
de la ecuación inicial. Por consiguiente, no es preciso hacer un estudio separado de las
ecuaciones de orden superior al primero, pues están englobadas en el estudio de la resolución
numérica de sistemas.
Los mismos métodos empleados para la resolución de ecuaciones se utilizan para la resolución
de sistemas.
A) El método de Euler.> restart: with(linalg,vector,matrix):
Definición de las funciones f[i](t,[seq(x[k],k=1..N)]), de la condición inicial, del paso (h) y del
número de puntos (L):
> N:=2; #número de ecuaciones
> L:=10;
> f:=vector(N); x:=vector(N);X:=matrix(N,L+1); a:=vector(N,[1.,0.]);
> f[1]:=(t,x)->x[1]-x[2]-sin(t);
f[2]:=(t,x)->x[1]+x[2]+t;
> alpha:= 0.;for k from 1 to N do X[k,1]:=a[k] end do;
> for n from 1 to L+1 do t[n]:=alpha+(n-1)*h end do;
> for j from 1 to L do
for jk from 1 to N do
© 2004 Tecnun (Universidad de Navarra)
9
Resolución numérica de problemas de valor inicial
X[jk,j+1]:=X[jk,j]+h*f[jk](t[j],[seq(X[ijk,j],ijk=1..N)]) end do end
do:
B) Método de Heun
> restart: with(linalg,vector,matrix):
Definición de las funciones f[i](t,[seq(x[k],k=1..N)]), de la condición inicial, del paso (h) y del
número de puntos (N):
> N:=2; #número de ecuaciones
> L:=100;
> f:=vector(N); x:=vector(N);X:=matrix(N,L+1); a:=vector(N,[1.,1.]);
> f[1]:=(t,x)->x[2];
f[2]:=(t,x)->x[1];
> alpha:= 0.;for k from 1 to N do X[k,1]:=a[k] od;
> h:=0.01;
> for n from 1 to L+1 do t[n]:=alpha+(n-1)*h end do
> for n from 1 to L do:
for jk from 1 to N do:
X[jk,n+1] := simplify(X[jk,n]+h*(f[jk](t[n],[seq(X[ijk,n],ijk = 1 ..
N)])+f[jk](t[n+1],[seq(X[ijk,n]+h*f[ijk](t[n],[seq(X[ijkl,n],ijkl = 1
.. N)]),ijk = 1 .. N)]))/2.) end do end do:
C) Método de Runge–Kutta de cuarto orden
> restart:with(linalg,vector,matrix):
> N:=5; #número de ecuaciones
> Digits:=14:
> x:=vector(N);
> f:=vector(N);
f[1]:=(t,x)->x[2];
f[2]:=(t,x)->x[3];
f[3]:=(t,x)->x[4];
f[4]:=(t,x)->x[5];
f[5]:=(t,x)->x[1];
> alpha:=0;
a:=vector(N,[1.,1.,1.,1.,1.]);
> h:=1/400.;
L:=400;
> for n from 1 to L+1 do t[n]:=alpha+(n-1)*h end do
Definición de los sumandos:
>XK1:=matrix(N,L);XK2:=matrix(N,L);XK3:=matrix(N,L);XK4:=matrix(N,L);X
:=matrix(N,L+1);
> for j from 1 to N do X[j,1]:=a[j] od;
> for i from 1 to L do
for jk from 1 to N do
XK1[jk,i]:=h*f[jk](t[i],[seq(X[jkl,i],jkl=1..N)]) ;
XK2[jk,i]:=h*f[jk](t[i]+h/2.,[seq(X[jkl,i]+XK1[jkl,i]/2.,jkl=1..N)]) ;
XK3[jk,i]:=h*f[jk](t[i]+h/2.,[seq(X[jkl,i]+XK2[jkl,i]/2.,jkl=1..N)]) ;
XK4[jk,i]:=h*f[jk](t[i]+h,[seq(X[jkl,i]+XK3[jkl,i],jkl=1..N)]) end do;
for jj from 1 to N do
X[jj,i+1]:=X[jj,i]+(XK1[jj,i]+2.*XK2[jj,i]+2.*XK3[jj,i]+XK4[jj,i])/6.
end do end do;
D) Método de Adams–Bashforth de quinto orden
> restart:with(linalg):
> N:=5; #número de ecuaciones
> Digits:=14:
> x:=vector(N);
> f:=vector(N);
f[1]:=(t,x)->x[2];
f[2]:=(t,x)->x[3];
f[3]:=(t,x)->x[4];
f[4]:=(t,x)->x[5];
© 2004 Tecnun (Universidad de Navarra)
10
Resolución numérica de problemas de valor inicial
f[5]:=(t,x)->x[1];
> alpha:=0;
a:=vector(N,[1.,1.,1.,1.,1.]);
> h:=1/10.;
L:=10;
Definición de los sumandos para los valores iniciales, siguiendo el método de Runge–Kutta:
> t:=vector(L+1,[seq(alpha+(j-1)*h,j=1..L+1)]):
> X:=matrix(N,L+1);XK1:=matrix(N,L);XK2:=matrix(N,L);
XK3:=matrix(N,L);XK4:=matrix(N,L);X:=matrix(N,L+1);
> for j from 1 to N do X[j,1]:=a[j] od;
> for i from 1 to 4 do for j from 1 to N do
XK1[j,i]:=h*f[j](t[i],[seq(X[jj,i],jj=1..N)]) :
XK2[j,i]:=h*f[j](t[i]+h/2,[seq(X[jj,i]+XK1[jj,i]/2.,jj=1..N)]) :
XK3[j,i]:=h*f[j](t[i]+h/2,[seq(X[jj,i]+XK2[jj,i]/2.,jj=1..N)]) :
XK4[j,i]:=h*f[j](t[i]+h,[seq(X[jj,i]+XK3[jj,i],jj=1..N)]) :
X[j,i+1]:=X[j,i]+(XK1[j,i]+2.*XK2[j,i]+2.*XK3[j,i]+XK4[j,i])/6. end do
end do:
> for j from 5 to L do for i from 1 to N do
X[i,j+1]:=X[i,j]+h*(1901.*f[i](t[j],[seq(X[jj,j],jj=1..N)])2774.*f[i](t[j-1],[seq(X[jj,j-1],jj=1..N)])+2616.*f[i](t[j2],[seq(X[jj,j-2],jj=1..N)])-1274.*f[i](t[j-3],[seq(X[jj,j3],jj=1..N)])+251.*f[i](t[j-4],[seq(X[jj,j-4],jj=1..N)]))/720. end do
end do:
Bibliografía
1.
Atkinson, K., "An Introduction to Numerical Analysis", John Wiley and Sons.
2.
Borse, G.J., "Numerical Methods with Matlab: A Resource for Scientists and
Engineers", Edit. Brooks/Cole Publishing Co., 1.996.
3.
Boyce, W.E. and Diprima, R. C., “Elementary differential equations and boundary value
th
problems”, 5 edition, John Wiley and Sons Inc., 1992.
4.
Cohen, A.M., "Análisis Numérico", Editorial Reverté,S.A., 1977.
5.
Forman S., "Numerical Methods that work", Mathematical Association of America, 1990.
6.
Fox, L. (ed), "Numerical Solution of Ordinary and Partial Differential Equations",
Pergamon Press, Oxford, 1962.
7.
Greenberg, M.D.,"Foundations of Applied Mathematics", Prentice-Hall Inc., 1978.
8.
Henrici, P, “Elements of numerical analysis, 1st ed., John Wiley and Sons, Inc., 1964.
9.
Hubbard, J.H. and West, B.H., "Differential Equations: A Dynamical Systems Approach.
Ordinary Differential Equations", Springer Verlag, 1995.
10. Hubbard, J.H. and West, B.H., "Differential Equations: A Dynamical Systems Approach.
Higher-dimensional Systems", Springer-Verlag, 1995.
11. Kincaid, D. y Cheney, W., “Análisis Numérico”, Addison-Wesley Iberoamericana, 1994.
th
12. Kreyszig, E., “Advanced Engineering Mathematics”, 7 edition, John Wiley and Sons
Inc., 1994.
13. Matthews, J.H., "Numerical Methods for Computer Science, Engineering and
Mathematics", Prentice-Hall International, Inc., 1987.
14. Novo, S., Obaya, R., y Rojo, J, "Ecuaciones Diferenciales y Sistemas Diferenciales",
McGraw-Hill, 1995.
15. Press, W.H., Flannery, B.P., Teukolsky, S.A. and Vetterling, W.T., "Numerical Recipes
in C", Cambridge University Press, 1988.
© 2004 Tecnun (Universidad de Navarra)
11
Descargar