Computación Científica II

Anuncio
Star-Alliance-CC2-Student-Team*
Formula Compilation
Valparaı́so, 28 de noviembre de 2006**
1.
EDOs
Conversión de ecuaciones diferenciales de segundo orden a sistema de ecuaciones diferenciales de primer
orden: Sea
y ′′ = f (x, y, y ′ ) x0 = a, y(x0 ) = y0 , y ′ (x0 ) = y0′ , a ≤ x ≤ b
(1)
Esta ecuación diferencial de segundo orden se convierte en un sistema de ecuaciones diferenciales de
primer grado, de la forma:
x0 =
y′ =
z′ =
a
z
f (x, y, z)
y(x0 ) = y0
z(x0 ) = y0′
(2)
a≤x≤b
Ahora, se puede resolver este sistema de ecuaciones aplicando cualquier algoritmo de resolución numérica
para EDOs de primer orden.
NOTA: Para los métodos de Euler, Heun y Runge-Kutta, se supone un problema del tipo
y = f (x, y), a ≤ x ≤ b, y(a) = b
(3)
tomando N pasos en el algoritmo. El problema propuesto en (3) se llama también AWP 1
Método de Euler: El más simple y con más error asociado. Se buscan las soluciones a partir del valor
de la pendiente de la función solución en el punto en el que nos encontremos. Los pasos son:
1. Calculamos h = (b − a)/N . Luego, para cada paso del algoritmo seguimos los pasos 2 y 3.
2. xi+1 = xi + h
3. yi+1 = yi + f (xi , yi )h
Heun: El siguiente en complejidad. Se toman la pendiente actual, y la pendiente que se obtendrı́a en el
siguiente paso por método de Euler, y se promedian entre ellas para obtener el siguiente punto. Tiene
asociados un error por cada paso de elocal (xi ) = O(x3 ), y un error global acumulado de eglobal (xi ) =
O(x2 ). Los pasos son parecidos al método de Euler:
* Proyecto
Salas de Estudio Edificio C, UTFSM 2006 Desarrollo de Textos Decentes
Tobar Carrizo, Valparaı́so, 28 de noviembre de 2006. De antemano se agradece toda correción, crı́tica, o comentario
que el amable lector tenga a bien hacer llegar a [email protected].
1 Anfangs Wert Problem
** Rodrigo
c
1
1. Calculamos h = (b − a)/N . Luego, para cada paso del algoritmo seguimos los pasos 2 al 5.
2. xi+1 = xi + h
3. k1 = f (xi , yi )h
4. k2 = f (xi+1 , yE ), yE = yi + f (xi , yi )h
k1 + k2
h
5. yi+1 = yi +
2
Runge-Kutta: El más poderoso de todos. Sigue la idea de Heun, ahora calculando más pendientes,
ponderándolas y promediándolas. Los errores asociados son elocal (xi ) = O(x5 ) y eglobal (xi ) = O(x4 ).
Los pasos del algoritmo son los siguientes:
1. Calculamos h = (b − a)/N . Luego, para cada paso del algoritmo seguimos los pasos 2 al 7.
2. xi+1 = xi + h
3. k1 = f (xi , yi )
4. k2 = f (xi + h/2, yi + k1 h/2)
5. k3 = f (xi + h/2, yi + k2 h/2)
6. k4 = f (xi + h, yi + k3 h)
k1 + 2k2 + 2k3 + k4
7. yi+1 = yi +
h
6
Método del Disparo: Acá se explica el método del disparo para ecuaciones diferenciales de segundo
grado no lineales con condiciones de borde. Dicho problema estarı́a dado por:
y ′′ = f (x, y, y ′ )
a ≤ x ≤ b, y(a) = α, y(b) = β
(4)
donde f (x, y, y ′ ) no es lineal. Se propone un t0 como pendiente inicial, y basándonos en ella calculamos
una solución y(x) (el conjunto de puntos que la conforman). Luego, verificando la diferencia entre β
e y(b), calculamos otro tk , o nos quedamos con la solución encontrada. Ası́, nuestro problema queda
expresado por:
y ′′ = f (x, y, y ′ )
a ≤ x ≤ b, y(a) = α, y ′ (a) = tk
(5)
Para encontrar las soluciones y(x) podemos usar cualquiera de los tres algoritmos anteriores. Además,
tenemos dos métodos de calcular nuestro nuevo tk :
• Regula Falsi (Método de la secante): Necesitamos definidos no sólo t0 , sino que t0 y t1 . Ası́, el
cálculo de tk se reduce a:
tk = tk−1 −
(y(b, tk−1 ) − β)(tk−1 − tk−2 )
y(b, tk−1 ) − y(b, tk−2 )
(6)
Con Regula Falsi se debe resolver iterativamente para un tk sólo la ecuación inicial, mediante
Runge-Kutta preferencialmente. Luego, si y(b, tk ) − β ≤ T OL, (T OL = tolerancia, error máximo
deseado para la función en el borde b), entonces nos quedamos con esa solución. Si no, calculamos
un nuevo tk , y calculamos nuevamente y(x) para nuestro nuevo valor de t.
2
• Método de Newton: Es más poderoso que Regula Falsi. El cálculo de tk se hace de la forma:
tk = tk−1 −
y(b, tk−1 ) − β
dy
(b, tk−1 )
dt
(7)
Ahora, para calcular la derivada del denominador, debemos recurrir a la transformación z =
dy
(x, t), con lo cual tendremos que resolver la ecuación:
dt
z ′′ =
∂f
∂f
z + ′ z′
∂y
∂y
a ≤ x ≤ b, z(a) = 0, z ′ (a) = 1
(8)
Ahora, para calcular y(x) debemos resolver la ecuación (5) y (8), ambas al mismo tiempo, para
poder calcular tk en caso de que debamos hacerlo, y para calcular y(x) en la iteración presente.
2.
EDPs
La resolución de EDPs se hace construyendo una malla en el dominio en el que se define la función a
encontrar. Los intersecciones de la malla se nombran con la numeración X(i, j), recorriendo con i el
eje de las abscisas y con j el de las ordenadas. Además, tenemos el problema definido de la siguiente
forma:
Ω = {a ≤ x ≤ b, c ≤ y ≤ d}
f (x, y, ux , uy , uxx , uyy ) = 0
u(a, y) = g(x, y)
u(b, y) = h(x, y)
u(x, c) = i(x, y)
u(x, d) = j(x, y)
(9)
Para el problema (9) debemos entonces definir una malla a usar. Quedarı́a algo como la figura 1.
y
j
−→
1
b
b
b
b
b
b
b
b
b
0
0
1
2
x
i
−→
Figura 1: Malla de 9 nodos para Ω = {1 ≤ x ≤ 2, 0 ≤ y ≤ 1}
Ahora debemos considerar las siguientes aproximaciones para las derivadas parciales respecto de x
(abscisa):
3
Xi−1,j − 2Xi,j + Xi+1,j
∂ 2u
=
∂x2
(∆x)2
Xi−1,j + Xi+1,j
∂u
=
∂x
2∆x
(10)
(11)
Si las derivadas son con respecto a y (ordenada), las ecuaciones serán:
∂ 2u
Xi,j−1 − 2Xi,j + Xi,j+1
=
2
∂y
(∆y)2
Xi,j−1 + Xi,j+1
∂u
=
∂y
2∆y
(12)
(13)
Ahora, debemos usar las ecuaciones (10), (11), (12) y (13) para construir la ecuación diferencial del
problema (9). Una vez hecho el reemplazo, se debe evaluar la ecuación cada uno de los puntos
de la malla. Esto significa, evaluar para i x j puntos. Ası́, obtendremos i x j ecuaciones, las cuales
resolveremos por el sistema:








a1,1
a2,1
a3,1
..
.
an,1
a1,2
a2,2
a3,2
..
.
an,2
a1,3
a2,3
a3,3
..
.
an,3
...
...
...
..
.
a1,n
a2,n
a3,n
..
.
an,n
...








X1,1
X1,2
X1,3
..
.
Xn,n


 
 
 
=
 
 
 
C1
C2
C3
..
.
Cn








(14)
Se resuelve el sistema planteado en (14) y se encuentran los valores de X, es decir, los valores de la
función u(x, y) evaluada en cada punto X.
LATEX 2ε /rtobar/jmorera/mmora
4
Descargar