Beruflich Dokumente
Kultur Dokumente
DATOS INFORMATIVOS:
Facultad : Ingeniería
Curso : Simulación Numérica de Ingeniería
Área : Ciencias de la Ingeniería
Carácter del curso : Obligatorio
Ciclo de estudios :V
Código del curso : 1611-0025
Semestre Académico : 2018-I
Docente responsable : Dr. Ronal De La Cruz Araujo
INTEGRANTES:
1
ÍNDICE
INTRODUCCIÓN …..…….………………………..……………………………….…. 03
OBJTETIVOS ..………...……………………………………………………………… 04
OBJETIVO GENERAL ............................................................................. 04
OBJETIVOS ESPECÍFICOS ……………………………………………….. 04
2
INTRODUCCIÓN
FALTA AGREGAR
Esperamos que el siguiente proyecto sirva de aporte a futuros trabajos y cumpla con las
expectativas de los ávidos lectores.
3
OBJETIVOS
OBJETIVO GENERAL
OBJETIVO ESPECIFICO
4
CAPITULO I: FUNDAMENTACIÓN TEÓRICA
FORTRAN
ECUACIÓN DIFERENCIAL
Por ejemplo, una ecuación diferencial ordinaria (EDO) general de primer orden tiene la
siguiente forma:
𝑑𝑦
= 𝑓(𝑥, 𝑦)
𝑑𝑥
Cabe resaltar, que para esta ecuación diferencial ordinaria, su solución analítica debe
contener una constante arbitraria 𝑐, de tal modo que:
5
𝐹(𝑥, 𝑦, 𝑐) = 0
Esta ecuación representa una familia de curvas (cada una corresponde a una solución
particular de la EDO) en el plano 𝑥 − 𝑦, obtenida cada una de ellas para un valor
particular de 𝑐.
Expresándolo matemáticamente:
𝑑𝑦/𝑑𝑥 = 𝑓(𝑥, 𝑦)
𝑦 (𝑥0 ) = 𝑦0
𝑦 (𝑥𝑓 ) = ?
METODO DE EULER
Este método es el más simple entre todos los métodos numéricos para resolver un
problema de valor inicial y básicamente, consiste en dividir el intervalo que va desde 𝑥0
hasta 𝑥𝑓 en 𝑛 sub-intervalos de ancho ℎ, es decir:
𝑥𝑓 − 𝑥0
ℎ=
𝑛
6
Obteniendo de esta manera un conjunto de (𝑛 + 1) puntos: 𝑥0 , 𝑥1 , … , 𝑥𝑛 del intervalo
de interés. Para cualquiera de estos puntos se cumple que:
𝑥𝑖 = 𝑥0 + 𝑖ℎ, 0≤𝑖≤𝑛
𝑑𝑦
𝐹 ′ (𝑥) = | = 𝑓(𝑥0 , 𝑦0 )
𝑑𝑥 𝑃0
A partir de esta información se traza una recta que pasa por 𝑃0 y posee una pendiente
𝑓(𝑥0 , 𝑦0 ). Esta recta aproxima 𝐹(𝑥) en una vecindad 𝑥0 . Si se toma la recta como
reemplazo de la función 𝐹(𝑥) y se localiza en ella el valor de para 𝑦 correspondiente a
𝑥1 , se tiene que:
𝑦1 − 𝑦0
= 𝑓(𝑥0, 𝑦0 )
𝑥1 − 𝑥0
Entonces para 𝑦1 :
7
𝑦1 = 𝑦0 + (𝑥1 − 𝑥0 ) ∗ 𝑓(𝑥0 , 𝑦0 ) = 𝑦0 + ℎ ∗ 𝑓(𝑥0 , 𝑦0 )
𝑦1 = 𝑦0 + ℎ ∗ 𝑓(𝑥0 , 𝑦0 )
𝑦2 = 𝑦1 + ℎ ∗ 𝑓(𝑥1 , 𝑦1 )
⋮
𝑦𝑖+1 = 𝑦𝑖 + ℎ ∗ 𝑓(𝑥𝑖 , 𝑦𝑖 )
⋮
𝑦𝑛 = 𝑦𝑛−1 + ℎ ∗ 𝑓(𝑥𝑛−1 , 𝑦𝑛−1 )
Debido a que la aproximación de una curva a través de una línea recta no es exacta,
existe un error propio del método. Sin embargo, este error disminuye cuando se reduce
el valor de ℎ.
MÉTODO DE TAYLOR
8
Para empezar, como acotación se puede decir que el método de Euler utiliza los dos
primeros términos de la serie de Taylor para su primera iteración, es decir:
En este punto, se aplicara la información acerca de las series de Taylor para mejorar la
exactitud del método de Euler, obteniendo los algoritmos de Taylor.
(𝑥1 − 𝑥0 )2
𝐹(𝑥𝑖 ) ≈ 𝑦1 = 𝐹(𝑥0 ) + 𝐹 ′ (𝑥0 )(𝑥1 − 𝑥0 ) + 𝐹′′(𝑥0 ) , 𝑂(𝑥1 − 𝑥0 )3
2!
𝑑𝐹′(𝑥) 𝑑𝑓(𝑥, 𝑦)
𝐹 ′′ (𝑥) = = 𝑦 ℎ = 𝑥1 − 𝑥0
𝑑𝑥 𝑑𝑥
Entonces:
ℎ2 𝑑𝑓(𝑥, 𝑦)
𝑦1 = 𝑦(𝑥0 ) + ℎ𝑓(𝑥0 , 𝑦0 ) + |
2! 𝑑𝑥 𝑥0 ,𝑦0
𝑑𝑓(𝑥,𝑦)
Donde | significa la evaluación de la derivada de 𝑓(𝑥, 𝑦) con respecto a 𝑥 en
𝑑𝑥 𝑥0 ,𝑦0
el punto (𝑥0 , 𝑦0 )
Ahora, basado en esta ecuación, podemos pensar que para obtener la iteración en
diferentes puntos, se usaría lo siguiente:
ℎ2 𝑑𝑓(𝑥, 𝑦)
𝑦𝑖+1 = 𝑦(𝑥𝑖 ) + ℎ𝑓(𝑥𝑖 , 𝑦𝑖 ) + |
2! 𝑑𝑥 𝑥𝑖 ,𝑦𝑖
Donde la derivada 𝑓(𝑥, 𝑦) depende de 𝑥 y 𝑦, por lo tanto su derivada total con respecto
a 𝑥 viene dada por:
𝑑𝑓(𝑥, 𝑦) 𝜕𝑓(𝑥, 𝑦) 𝜕𝑓(𝑥, 𝑦) 𝑑𝑦
= +
𝑑𝑥 𝜕𝑥 𝜕𝑥 𝑑𝑥
9
La ecuación equivale a usar una curva que pasa por el punto (𝑥0 , 𝑦0 ), cuya pendiente y
segunda derivada son iguales que la de la función desconocida 𝐹(𝑥0 ) en el punto
(𝑥0 , 𝑦0 ). Como se observa en la gráfica, se obtiene una aproximación más exacta que
con el método de Euler.
Como se vio, se obtuvo el método de Taylor de segundo orden, el cual es más exacto
que el método de Euler -al cual le corresponde el nombre de método de Taylor de primer
orden- por lo tanto, se concluye que al extender el método a más términos se obtendrá
un valor más exacto.
Paso Predictor: Partir de (𝑥0 , 𝑦0 ) y usar el método de Euler para calcular el valor de 𝑦
correspondiente a 𝑥1 . Este valor calculado se denota como ̅̅̅
𝑦1 debido a que solo es un
valor transitorio para 𝑦1 .
10
Paso Corrector: Como su propio nombre lo indica, se encarga de corregir la predicción.
Aquí en el nuevo punto obtenido (𝑥1 , 𝑦1 ) se evalúa la derivada 𝑓(𝑥1 , 𝑦1 ) usando los datos
del problema con valores iniciales. Posteriormente, se obtiene la media aritmética de
esta derivada y la derivada en el punto inicial (𝑥0 , 𝑦0 ), quedando de la siguiente manera:
1
𝑑𝑒𝑟𝑖𝑣𝑎𝑑𝑎 𝑝𝑟𝑜𝑚𝑒𝑑𝑖𝑜 = [ 𝑓(𝑥0 , 𝑦0 ) + 𝑓(𝑥1 , ̅̅̅)
𝑦1 ]
2
Y posteriormente:
(𝑥1 − 𝑥0 )
𝑦1 = 𝑦0 + [ 𝑓(𝑥0 , 𝑦0 ) + 𝑓(𝑥1 , ̅̅̅)
𝑦1 ]
2
𝑦̅𝑖+1 = 𝑦1 + ℎ𝑓(𝑥𝑖 , 𝑦𝑖 )
Una vez obtenido 𝑦̅𝑖+1 , se calcula 𝑓(𝑥𝑖+1 , 𝑦̅𝑖+1 ) la cual es la derivada en el punto
(𝑥𝑖+1 , 𝑦̅𝑖+1 ) y se promedia con la derivada anterior para encontrar la derivada promedio:
1
[ 𝑓(𝑥𝑖 , 𝑦𝑖 ) + 𝑓(𝑥𝑖+1 , 𝑦 𝑖+1 ]
̅̅̅̅̅̅)
2
ℎ
𝑦𝑖+1 = 𝑦𝑖 + [ 𝑓(𝑥𝑖 , 𝑦𝑖 ) + 𝑓(𝑥𝑖+1 , 𝑦 𝑖+1 ]
̅̅̅̅̅̅)
2
11
MÉTODO DE RUNGE-KUTTA
Evaluando la siguiente ecuación diferencial ordinaria de primer orden con valor inicial:
𝑦 ′ = 𝑓(𝑥, 𝑦) , 𝑦(𝑥0 ) = 𝑦0
∆𝑦
= 𝑦′ → 𝑦𝑛+1 − 𝑦𝑛 = (𝑦 ′ 𝑛 )∆𝑥
∆𝑥
También se puede llegar a esta igualdad utilizando una aproximación hacia adelante
(forward) mediante las series de Taylor:
1
𝑦𝑛+1 = 𝑦𝑛 + 𝑦 ′ 𝑛 (𝑥𝑖+1 − 𝑥𝑖 ) + 𝑦 ′′ 𝑛 (𝑥𝑖+1 − 𝑥𝑖 )2 + ⋯
2
𝑦𝑛+1 = 𝑦𝑛 + 𝑦 ′ 𝑛 . ℎ + 𝑂(ℎ)
𝑦𝑛+1 = 𝑦𝑛 + ℎ. 𝑓(𝑥, 𝑦)
12
∆𝑦 = 𝐶1 . ∆𝑦1
𝑦𝑛 + ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 ) = 𝑦𝑛 + 𝐶1 . ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 ) → 𝐶1 = 1
De esta forma:
𝑘1 = ∆𝑦1 = ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 )
𝑦𝑛+1 = 𝑦𝑛 + ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 )
𝑦 ′ = 𝑓(𝑥, 𝑦) , 𝑦(𝑥0 ) = 𝑦0
Por otro lado, por Euler sabemos que: ∆𝑦1 = ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 ) …(b)
13
Expresamos la derivada 𝑓(𝑥, 𝑦) en una serie de Taylor considerando la siguiente gráfica:
𝜕𝑓(𝑥𝑛 ,𝑦𝑛 )
𝑓(𝑥, 𝑦) = 𝑓(𝑥𝑛 , 𝑦𝑛 ) + 𝜕𝑥
(𝑥𝑛+1 − 𝑥𝑛 ) + 𝑂(ℎ)2 … (1)
𝜕𝑓(𝑥𝑛 , 𝑦𝑛 ) 𝜕𝑓(𝑥𝑛 , 𝑦𝑛 )
𝑓(𝑥, 𝑦) = 𝑓(𝑥𝑛 , 𝑦𝑛 ) + ∆𝑥 + ∆𝑦
𝜕𝑥 𝜕𝑦
∆𝑥 = (𝑥𝑛 + 𝛼. ℎ) − 𝑥𝑛 = 𝛼. ℎ
∆𝑦 = (𝑦𝑛 + 𝛽. ∆𝑦1 ) − 𝑦𝑛 = 𝛽. ∆𝑦1 = 𝛽. ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 )
Entonces:
14
Reemplazando (b) y (c) en (a):
ℎ2
𝑦𝑛+1 = 𝑦𝑛 + 𝑦′𝑛 . ℎ + 𝑦′′ + 𝑂(ℎ3 )
2 𝑛
De donde:
𝑦′𝑛 = 𝑓(𝑥𝑛 , 𝑦𝑛 )
ℎ2
𝑦𝑛+1 = 𝑦𝑛 + ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 ) + 2
[𝑓𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 𝑓𝑦 (𝑥𝑛 , 𝑦𝑛 ). 𝑓(𝑥𝑛 , 𝑦𝑛 )] …(II)
ℎ2 ℎ2
= 𝑦𝑛 + ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 ) + 𝑓𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 𝑓𝑦 (𝑥𝑛 , 𝑦𝑛 ). 𝑓𝑛
2 2
1 1
𝐶1 + 𝐶2 = 1 ; 𝐶2 . 𝛼 = ; 𝐶2 . 𝛽 =
2 2
Debido a que existen más incógnitas que ecuaciones, el sistema tendrá infinitas
soluciones por lo que se concluye que existen infinitos métodos de Runge-Kutta de
orden 2. Sin embargo, por comodidad para este caso escogemos los siguientes valores:
15
1 1
𝐶1 = ; 𝐶2 = ; 𝛼=1 ; 𝛽=1
2 2
1
𝑦𝑛+1 = 𝑦𝑛 + (∆𝑦1 + ∆𝑦2 )
2
Esta fórmula, también conocida como método de Euler mejorado, es la más usada.
1 1
𝐶1 = 0 ; 𝐶2 = 1 ; 𝛼= ; 𝛽=
2 2
ℎ ∆𝑦1
𝑦𝑛+1 = 𝑦𝑛 + ℎ. 𝑓(𝑥𝑛 + , 𝑦𝑛 + )
2 2
En conclusión:
𝑘1 = ∆𝑦1 = ℎ. 𝑓(𝑥𝑛 , 𝑦𝑛 )
ℎ ∆𝑦1
𝑘2 = ∆𝑦2 = ℎ. 𝑓(𝑥𝑛 + , 𝑦𝑛 + )
2 2
1
𝑦𝑛+1 = 𝑦𝑛 + (∆𝑦1 + ∆𝑦2 )
2
16
De la misma forma que para el orden 2, se considera ∆y como la suma de varios ∆𝑦𝑖 ,
en este caso consideramos 3 ya que la aproximación es de orden 3. Por lo tanto:
∆𝑦1 = h f (𝑥𝑛 , 𝑦𝑛 )
Para 𝑦2 tenemos:
𝜕𝑓2 (𝑥𝑛 ,𝑦𝑛 ) 𝜕2 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕 𝜕f (𝑥𝑛 ,𝑦𝑛 ) 𝜕f (𝑥𝑛 ,𝑦𝑛 ) 𝜕f (𝑥𝑛 ,𝑦𝑛 )
𝜕𝑥 2
= 𝜕𝑥 2
+ 𝜕𝑥 ( 𝜕𝑦
f (𝑥𝑛 ,𝑦𝑛 ) + 𝜕𝑦 𝜕𝑥
)
𝜕𝑓2 (𝑥𝑛 ,𝑦𝑛 ) 𝜕2 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕 𝜕f (𝑥𝑛 ,𝑦𝑛 ) 𝜕f (𝑥𝑛 ,𝑦𝑛 ) 𝜕f (𝑥𝑛 ,𝑦𝑛 ) 𝜕f (𝑥𝑛 ,𝑦𝑛 )
𝜕𝑥 2
= 𝜕𝑥 2
+ 𝜕𝑥 ( 𝜕𝑦
) f (𝑥𝑛 ,𝑦𝑛 ) + 𝜕𝑦
( 𝜕𝑥 + 𝜕𝑦
f (𝑥𝑛 ,𝑦𝑛 ))
17
Reemplazando (3) y (2) en (1)
1
f (𝑥𝑛 + αh; 𝑦𝑛 + β∆𝑦1 ) = f (𝑥𝑛 ,𝑦𝑛 ) + f𝑥 (𝑥𝑛 ,𝑦𝑛 ) ∆x + f𝑦 (𝑥𝑛 ,𝑦𝑛 ) ∆y + 2 (f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 ) +
2f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) f (𝑥𝑛 ,𝑦𝑛 ) + f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) f 2 (𝑥𝑛 ,𝑦𝑛 )) (∆x)2
1
f (𝑥𝑛 + αh; 𝑦𝑛 + β∆𝑦1 ) = f (𝑥𝑛 ,𝑦𝑛 ) + f𝑥 (𝑥𝑛 ,𝑦𝑛 ) ∆x + f𝑦 (𝑥𝑛 ,𝑦𝑛 ) ∆y + 2 f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 ) (∆x)2 +
1
f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) ∆x∆y + f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) (∆y)2
2
1
f (𝑥𝑛 + αh; 𝑦𝑛 + β∆𝑦1 ) = f (𝑥𝑛 ,𝑦𝑛 ) + f𝑥 (𝑥𝑛 ,𝑦𝑛 ) αh + f𝑦 (𝑥𝑛 ,𝑦𝑛 ) βh f (𝑥𝑛 , 𝑦𝑛 ) + 2 f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 )
1
(αh)2 + f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) αh βh f (𝑥𝑛 , 𝑦𝑛 ) + 2 f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) (βh f (𝑥𝑛 , 𝑦𝑛 ))2
1
f (𝑥𝑛 + αh; 𝑦𝑛 + β∆𝑦1 ) = f (𝑥𝑛 ,𝑦𝑛 ) + αh f𝑥 (𝑥𝑛 ,𝑦𝑛 ) + βh f (𝑥𝑛 , 𝑦𝑛 ) f𝑦 (𝑥𝑛 ,𝑦𝑛 ) + 2
1
α2 h2 f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 ) + αβh2 f (𝑥𝑛 , 𝑦𝑛 ) f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) + β2 h2 f 2 (𝑥𝑛 , 𝑦𝑛 ) f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) ……….(I)
2
1
f (𝑥𝑛 + ah; 𝑦𝑛 + (ϕ∆𝑦1 + φ∆𝑦2 )) = f (𝑥𝑛 ,𝑦𝑛 ) + f𝑥 (𝑥𝑛 ,𝑦𝑛 ) ∆x + f𝑦 (𝑥𝑛 ,𝑦𝑛 ) ∆y + 2 f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 )
1
(∆x)2 + f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) ∆x∆y + 2 f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) (∆y)2
1
f (𝑥𝑛 + ah; 𝑦𝑛 + (ϕ∆𝑦1 + φ∆𝑦2 )) = f (𝑥𝑛 ,𝑦𝑛 ) + f𝑥 (𝑥𝑛 ,𝑦𝑛 ) ah + f𝑦 (𝑥𝑛 ,𝑦𝑛 ) (ϕ∆𝑦1 + φ∆𝑦2 ) +
2
1
f𝑥𝑥 (𝑥𝑛 ,𝑦𝑛 ) (ah)2 + f𝑥𝑦 (𝑥𝑛 ,𝑦𝑛 ) ah (ϕ∆𝑦1 + φ∆𝑦2 ) + f𝑦𝑦 (𝑥𝑛 ,𝑦𝑛 ) (ϕ∆𝑦1 + φ∆𝑦2 )2
2
f (𝑥𝑛 + ah; 𝑦𝑛 + (ϕ∆𝑦1 + φ∆𝑦2 )) = f (𝑥𝑛 ,𝑦𝑛 ) + ah f𝑥 (𝑥𝑛 ,𝑦𝑛 ) + ϕ h f (𝑥𝑛 , 𝑦𝑛 ) f𝑦 (𝑥𝑛 ,𝑦𝑛 ) +
h2
φ∆𝑦2 f𝑦 (𝑥𝑛 ,𝑦𝑛 ) +
2
[a2 f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 2aϕ f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + ϕ2 f 2 (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) ]
1
+ 2 [2ah φ∆𝑦2 f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + 2hϕ φ∆𝑦2 f (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) + φ2 ∆𝑦2 2 f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) ]
18
f (𝑡𝑛 + ah; 𝑦𝑛 + (ϕ∆𝑦1 + φ∆𝑦2 )) = f (𝑥𝑛 ,𝑦𝑛 ) + ah f𝑥 (𝑥𝑛 ,𝑦𝑛 ) + ϕ h f (𝑥𝑛 , 𝑦𝑛 ) f𝑦 (𝑥𝑛 ,𝑦𝑛 ) +
h2
φ∆𝑦2 f𝑦 (𝑥𝑛 ,𝑦𝑛 ) +
2
[a2 f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 2aϕ f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + ϕ2 f 2 (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) ]
1
+ 2 (2ah φ f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + 2hϕ φ f (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 )) ∆𝑦2 +
1
2
φ2 ∆𝑦2 2 f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 )
Ahora reemplazaremos ∆𝑦2 pero solo se tomara una parte especifica dependiendo de
que no me aparezca una 3ra derivada, ya que solo necesito tener hasta la segunda
derivada para poder igualarlo a la serie de Taylor “y”
h2
= f (𝑥𝑛 ,𝑦𝑛 ) + h (a f𝑥 (𝑥𝑛 ,𝑦𝑛 ) + ϕ f (𝑥𝑛 ,𝑦𝑛 ) f𝑦 (𝑥𝑛 ,𝑦𝑛 )) + (a2 f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) +
2
2aϕ f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + ϕ2 f 2 (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 )) + φ f𝑦 (𝑥𝑛 ,𝑦𝑛 ) [ℎf𝑛 + h2 α f𝑥 (𝑥𝑛 , 𝑦𝑛 ) +
1
𝛽h2 f (𝑥𝑛 , 𝑦𝑛 ) f𝑦 (𝑥𝑛 , 𝑦𝑛 )] + 2 (2ah φ f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + 2 hϕφ f (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) h f (𝑥𝑛 ,𝑦𝑛 ) +
1
2
φ2 f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) [ℎf (𝑥𝑛 , 𝑦𝑛 )]2
h2
= f (𝑥𝑛 ,𝑦𝑛 ) + h (a f𝑥 (𝑥𝑛 ,𝑦𝑛 ) + ϕ f (𝑥𝑛 ,𝑦𝑛 ) f𝑦 (𝑥𝑛 ,𝑦𝑛 )) + 2
(a2 f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) +
h2
= f (𝑥𝑛 ,𝑦𝑛 ) + h [a f𝑥 (𝑥𝑛 , 𝑦𝑛 ) + ϕ f (𝑥𝑛 , 𝑦𝑛 )f𝑦 (𝑥𝑛 , 𝑦𝑛 ) + φ f (𝑥𝑛 , 𝑦𝑛 )f𝑦 (𝑥𝑛 , 𝑦𝑛 )] + 2
h2
= f (𝑥𝑛 ,𝑦𝑛 ) + h [a f𝑥 (𝑥𝑛 , 𝑦𝑛 ) + (ϕ + φ) f (𝑥𝑛 , 𝑦𝑛 )f𝑦 (𝑥𝑛 , 𝑦𝑛 )] +
2
[a2 f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 2a(ϕ +
h2
φ) f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 )] + h2 (αφ f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + 𝛽φf (𝑥𝑛 , 𝑦𝑛 ) + f𝑦2 (𝑥𝑛 , 𝑦𝑛 )) + 2
19
𝜕 𝑦𝑛
𝜕𝑥
= 𝑦′𝑥 = f (𝑥𝑛 ,𝑦𝑛 )
𝜕3 𝑦𝑛 𝜕2 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕2 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕2 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕 f (𝑥𝑛 ,𝑦𝑛 ) 𝜕 f (𝑥𝑛 ,𝑦𝑛 )
𝜕𝑥 3
= 𝜕𝑥
= 𝜕𝑥
+ 𝜕𝑥𝜕𝑦
f (𝑥𝑛 ,𝑦𝑛 ) + 𝜕𝑥 𝜕𝑦
= f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f𝑦 (𝑥𝑛 , 𝑦𝑛 ) (f𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑦 (𝑥𝑛 , 𝑦𝑛 ))
𝜕
= f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f𝑦 (𝑥𝑛 , 𝑦𝑛 ) 𝜕𝑦 (f𝑥 + f𝑦 .f)
𝑑𝑓
= f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + + f (𝑥𝑛 , 𝑦𝑛 ) [f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f𝑦 𝑑𝑦]
= f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 ,𝑦𝑛 ) f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 ) f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) f (𝑥𝑛 ,𝑦𝑛 )
+ f𝑦 f𝑥 + f𝑦 (𝑥𝑛 , 𝑦𝑛 ) f𝑦 (𝑥𝑛 , 𝑦𝑛 ) f (𝑥𝑛 ,𝑦𝑛 )
h2 h3
= 𝑦𝑛 + h f (𝑥𝑛 , 𝑦𝑛 ) + (f𝑥 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 , 𝑦𝑛 )f𝑦 (𝑥𝑛 , 𝑦𝑛 )) + (f𝑥𝑥 (𝑥𝑛 , 𝑦𝑛 ) + 2 f (𝑥𝑛 ,𝑦𝑛 )
2 6
f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f 2 (𝑥𝑛 , 𝑦𝑛 )f𝑦𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f𝑥𝑦 (𝑥𝑛 , 𝑦𝑛 ) + f (𝑥𝑛 ,𝑦𝑛 ) f𝑦2 (𝑥𝑛 , 𝑦𝑛 )) ….(III)
𝐶2 α2 h3 𝐶2 β2 h3 2
∆y = h (𝐶1 + 𝐶2 ) f + 𝐶2 h2 α f𝑥 + 𝐶2 h2 β f f𝑦 + 2
f𝑥𝑥 + 𝐶2 α βh3 f f𝑥𝑦 + 2
f
𝐶3 a2 h3
f𝑦𝑦 + 𝐶3 h f + 𝐶3 h2 a f𝑥 + 𝐶3 h2 (ϕ + φ) f f𝑦 + 2
f𝑥𝑥 + 𝐶3 h3 a (ϕ + φ) f f𝑥𝑦 + 𝐶3 h3 α
h3
φ f𝑥𝑦 + 𝐶3 h3 β φ f f𝑦 2 + 𝐶3 2
(ϕ + φ)2 f 2 f𝑦𝑦 ………(IV)
20
Igualando (III) y (IV)
𝐶2 α2 h3 𝐶2 β2 h3
𝑦𝑛+1 = 𝑦𝑛 + h (𝐶1 + 𝐶2 ) f + 𝐶2 h2 α f𝑥 + 𝐶2 h2 β f f𝑦 + 2
f𝑥𝑥 + 𝐶2 α βh3 f f𝑥𝑦 + 2
𝐶3 a2 h3
f 2 f𝑦𝑦 + 𝐶3 h f + 𝐶3 h2 a f𝑥 + 𝐶3 h2 (ϕ + φ) f f𝑦 + 2
f𝑥𝑥 + 𝐶3 h3 a (ϕ + φ) f f𝑥𝑦 +
h3 h2 h2
𝐶3 h3 α φ f𝑥𝑦 + 𝐶3 h3 β φ f f𝑦 2 + 𝐶3 (ϕ + φ)2 f 2 f𝑦𝑦 = 𝑦𝑛 + h f (𝑥𝑛 , 𝑦𝑛 ) + f + f f𝑦
2 2 𝑥 2
h3 h3 h3 h3 h3
+ f + f f𝑥𝑦 + f 2 f𝑦𝑦 + f f𝑦 2 + f
6 𝑥𝑥 3 6 6 6 𝑥𝑦
𝐶1 + 𝐶2 + 𝐶3 = 1
1
𝐶2 α + a 𝐶3 = 2
1
𝐶2 β + 𝐶3 (ϕ + φ) = 2
𝐶2 𝐶3 1
2
α2 + 2
a2 = 6
1
𝐶2 α β + 𝐶3 a (ϕ + φ) = 3
𝐶2 𝐶3 1
β2 + (ϕ + φ)2 =
2 2 6
1
𝐶3 α = 6
1
𝐶3 β φ = 6
Escogiendo:
1 4 1
𝐶1 = 6 , 𝐶2 = 6 , 𝐶3 = 6
1 1
α=2,β=2,a=1
ϕ = -1 , φ = 2
Resolviendo:
∆𝑦1 = h f (𝑥𝑛 , 𝑦𝑛 )
1 1
∆𝑦2 = h f (𝑥𝑛 + 2h; 𝑦𝑛 + 2∆𝑦1 )
21
1
𝑦𝑛+1 = 𝑦𝑛 + 6 (∆𝑦1 + ∆𝑦2 + ∆𝑦3 )
1
𝑦𝑛+1 = 𝑦𝑛 + (∆𝑦1 + 2∆𝑦2 + 2∆𝑦3 + ∆𝑦4 )
6
∆𝑦1 = h f (𝑥𝑛 , 𝑦𝑛 )
ℎ ∆𝑦1
∆𝑦2 = h f (𝑡𝑛 + ; 𝑦𝑛 + )
2 2
ℎ ∆𝑦2
∆𝑦3 = h f (𝑡𝑛 + ; 𝑦𝑛 + )
2 2
∆𝑦4 = h f (𝑡𝑛 +h; 𝑦𝑛 + ∆𝑦3 )
22
2. CAPITULO II: ALGORITMIZACION DEL METODO DE RUNGE-KUTTA
Para la primera idea se tendría que hacer un sencillo cambio de variable de la siguiente
forma:
Consideramos:
𝑦 𝑛 = 𝑓(𝑦 𝑛−1 , 𝑦 𝑛−2 , … . , 𝑦 ′′ , 𝑦 ′ , 𝑦, 𝑥)
Con sus valores iniciales:
𝑦1 = 𝑦
𝑦2 = 𝑦 ′ = 𝑦′1
𝑦3 = 𝑦 ′′ = 𝑦′2
…………….
𝑦𝑛 = 𝑦 𝑛−1 = 𝑦′𝑛−1
23
Derivando, entonces tenemos:
𝑦′1 = 𝑦2 𝑦1 (0) = 𝑦0
…………….
Y a partir de esto resolver las EDO de forma simultánea con el Runge-Kutta de cuarto
orden.
Para la realización de un código que ejecute este método, es necesario definir los
valores necesarios, tales como un valor inicial de la variable independiente (x), y un valor
final de la misma variable. Así mismo se define un valor de “h” (variación de “x”).
Además, del número de puntos que se quiere calcular. En nuestro caso utilizamos
también una variable 𝑓𝑖 que nos define el número de intervalos en los que se divide el
espacio entre punto y punto. Esto con la finalidad de lograr una mayor precisión, ya que
calculara la aproximación entre cada pequeña división.
Además, como se sabe para resolver una EDO de orden “n” se necesita “n” condiciones
iniciales para la variable dependiente en el punto inicial. Generalizando:
𝑦 𝑖 (𝑥0 ) = 𝑦 𝑖 0 (𝑖 = 1,2, … , 𝑛 − 1)
Dentro del programa se hace uso de dos subrutinas, una de ellas será la que realizara
todas las aproximaciones y ejecución del método de Runge-Kutta, mientras que la otra,
24
la cual estará dentro de la primera se encargara de escribir los resultados requeridos,
en este caso los valores de la variable dependiente en los puntos deseados.
Ahora, para un mejor entendimiento del funcionamiento del programa, se mostrará el
código realizado, comentado en cada una de sus partes.
25