Você está na página 1de 2

𝑑𝑥

= 𝑓(𝑥, 𝑡), con 𝑓(𝑥, 𝑡) no lineal.


𝑑𝑡

Las discretizaciones temporales básicas son (se omite el subíndice 𝑖 de la discretización espacial):

Euler explícito:

𝑥 𝑛+1 − 𝑥 𝑛
= 𝑓(𝑥 𝑛 , 𝑡) = 𝑓 𝑛
Δt
Euler implícito:

𝑥 𝑛+1 − 𝑥 𝑛
= 𝑓(𝑥 𝑛+1 , 𝑡) = 𝑓 𝑛+1
Δt
Crank Nicolson:
𝑥 𝑛+1 −𝑥 𝑛 1 1
Δt
= 2 (𝑓(𝑥 𝑛+1 , 𝑡) + 𝑓(𝑥 𝑛 , 𝑡)) = 2 (𝑓 𝑛+1 + 𝑓 𝑛 ) [1]

Definiendo 𝑧 = 𝑥 𝑛+1 − 𝑥 𝑛 , reemplazando en el método de Crank Nicolson nos queda:


𝑧 1
= (𝑓(𝑥 𝑛 + 𝑧, 𝑡) + 𝑓(𝑥 𝑛 , 𝑡))
Δt 2
Si aproximamos 𝑓(𝑥 𝑛 + 𝑧, 𝑡) = 𝑓 𝑛+1 usando Taylor de primer orden:
𝑛 𝑛
𝑓 𝑛+1 ≈ 𝑓 𝑛 + 𝑓 ′ 𝑧 = 𝑓 𝑛 + Δ𝑡𝑓 ′ 𝑓 𝑛 [2]

Donde se usó el método de Euler Explícito (𝑧 = Δ𝑡𝑓 𝑛 ).

Reemplazamos:
𝑧 1 𝑛 𝑧
= (𝑓 𝑛 + 𝑓 ′ 𝑧 + 𝑓 𝑛 ) = 𝑓 𝑛 + 𝑓 ′ (𝑥 𝑛 , 𝑡)
Δt 2 2
𝑧Δ𝑡 ′ 𝑛
𝑧 = Δ𝑡𝑓 𝑛 + 𝑓
2
La fórmula del residuo luce como:
𝑧Δ𝑡 ′ 𝑛
𝑅(𝑧) = 𝑧 − Δ𝑡𝑓 𝑛 − 𝑓 =0
2
Derivando
𝜕𝑅 Δ𝑡 𝑛
= 1 − 𝑓′
𝜕𝑧 2
Planteamos el método de Newton:
𝜕𝑅 0
𝑅(𝑧) ≈ 𝑅(𝑧 0 ) + (𝑧 )(𝑧 − 𝑧 0 )
𝜕𝑧

𝑘+1
𝜕𝑅 −1
𝑧 = 𝑧 − ( ) 𝑅(𝑧 𝑘 )
𝑘
𝜕𝑧
Haciendo una sola iteración de Newton partiendo de 𝑧 0 = 0 se obtiene:
−1
𝜕𝑅 Δ𝑡 ′ 𝑛 −1
( (0)) = (1 − 𝑓 )
𝜕𝑧 2

𝑅(0) = −Δ𝑡𝑓 𝑛
−1
1 1 0
𝜕𝑅 Δ𝑡 ′ 𝑛 −1 Δ𝑡 𝑛 −1
𝑧 = 𝑥 − 𝑥 = 0 − ( (0)) 𝑅(0) = − (1 − 𝑓 ) (−Δ𝑡𝑓 𝑛 ) = (1 − 𝑓 ′ ) Δ𝑡𝑓 𝑛
𝜕𝑧 2 2

Δ𝑡 ′ 𝑛 −1
𝑥 1 = 𝑥 0 + (1 − 𝑓 ) Δ𝑡𝑓 𝑛
2
La expansión del primer factor del RHS hasta segundo orden lo hacemos recordando la serie
1
geométrica: 1−𝑥 = ∑𝑥 𝑛 = 1 + 𝑥 + 𝑥 2 + 𝑥 3 + ⋯

Es decir

Δ𝑡 ′ 𝑛 −1 1 Δ𝑡 𝑛 Δ𝑡 𝑛 2 Δ𝑡 𝑛 3
(1 − 𝑓 ) = = 1 + 𝑓′ + ( 𝑓′ ) + ( 𝑓′ ) + ⋯
2 Δ𝑡 2 2 2
1 − 2 𝑓 ′𝑛

La iteración de Newton queda:

Δ𝑡 ′ 𝑛 Δ𝑡 ′ 𝑛 2
𝑥 = 𝑥 + (1 + 𝑓 + ( 𝑓 ) + 𝑂(Δ𝑡 3 )) Δ𝑡𝑓 𝑛
1 0
2 2

Δ𝑡 2 ′ 𝑛 𝑛
𝑥1 = 𝑥 0 + ⏟
Δ𝑡𝑓 𝑛 + 𝑓 𝑓 + 𝑂(Δ𝑡 3 )
𝑝𝑎𝑠𝑜
⏟2
𝑝𝑎𝑠𝑜
𝑒𝑥𝑝𝑙𝑖𝑐𝑖𝑡𝑜
𝑖𝑚𝑝𝑙𝑖𝑐𝑖𝑡𝑜

Δ𝑡 𝑛 𝑛
𝑥1 = 𝑥 0 + (𝑓 + 𝑓 𝑛 + Δ𝑡𝑓 ′ 𝑓 𝑛 ) + 𝑂(Δ𝑡 3 )
2
Reordenando y usando [2] obtenemos nuevamente [1]:

≈𝑓𝑛+1
Δ𝑡
𝑥1 = 𝑥 0 + ( 𝑓⏟𝑛 + ⏞ 𝑛
⏟𝑛 + Δ𝑡 𝑓 ′ 𝑓 𝑛 ) + 𝑂(Δ𝑡 3 )
𝑓
2 𝑝𝑎𝑠𝑜 𝑝𝑎𝑠𝑜
𝑒𝑥𝑝𝑙𝑖𝑐𝑖𝑡𝑜 𝑖𝑚𝑝𝑙𝑖𝑐𝑖𝑡𝑜

Δ𝑡 𝑛
𝑥1 = 𝑥 0 + (𝑓 + 𝑓 𝑛+1 ) + 𝑂(Δ𝑡 3 )
2
Δ𝑡 ′ 𝑛 −1
Con esto vemos que hacer una iteración Newton 𝑥 1 = 𝑥 0 + (1 − 2
𝑓 ) Δ𝑡𝑓 𝑛 es a lo menos hacer,
una aproximación de 𝑂(Δ𝑡 2 ) como el método de Crank Nicolson [1]:
Δ𝑡 𝑛
𝑥1 = 𝑥 0 + (𝑓 + 𝑓 𝑛+1 )
2