# Método de Crank–Nicolson

Na análise numérica, o método de Crank–Nicolson é um método das diferenças finitas usado para resolver numericamente a equação do calor e equações diferenciais parciais similares. É um método de segunda ordem no tempo e no espaço, implícito no tempo e é numericamente estável. O método foi desenvolvido por John Crank e Phyllis Nicolson na metade do século 20.
Para equações de difusão (e muitas outras), pode-se provar que o método de Crank–Nicolson é incondicionalmente estável. Contudo, as soluções aproximadas podem ainda conter oscilações significativas caso a razão entre o passo de tempo e o quadrado do passo de espaço for grande (usualmente maior que 1/2). Por essa razão, sempre que grandes passos de tempo forem tomados, o método menos preciso de euler implícito é frequentemente utilizado, o qual é estável e imune à oscilações.

## O método

O método de Crank-Nicolson é baseado em diferenças centradas no espaço, e na regra trapezoidal no tempo, é de segunda no tempo e no espaço. Por exemplo, para um caso unidimensional, se a equação diferencial parcial for
    ${\frac {\partial u}{\partial t}}=F\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)$
em seguida, fazendo $u(i\Delta x,n\Delta t)=u_{i}^{n}\,$, a equação para o método de Crank–Nicolson é a combinação do método de euler explícito em $n$ e do método de euler implícito em n+1 (deve-se notar, contudo, que o método por si só não é simplesmente a média desses dois métodos, já que a equação tem uma dependência implícita na solução):
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}=F_{i}^{n}\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)\qquad {\mbox{(Euler explícito)}}$
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}=F_{i}^{n+1}\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)\qquad {\mbox{(Euler implícito)}}$
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}={\frac {1}{2}}\left(F_{i}^{n+1}\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)+F_{i}^{n}\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)\right)\qquad {\mbox{(Crank-Nicolson)}}$
A função F deve ser discretizada no espaço por diferenças centradas.
Note que este é um método implícito: para conseguir o valor posterior de u no tempo, um sistema de equações algébricas deve ser resolvido. Se a equação diferencial parcial for não-linear, a discretização também deverá ser não-linear para que o avanço no tempo envolva a solução do sistema algébrico não-linear de equações, embora que linearizações sejam possíveis.

## Exemplo: Difusão unidimensional

O método de Crank-Nicolson é frequentemente aplicado a problemas de difusão. Como exemplo, para a difusão linear:
    ${\partial u \over \partial t}=a{\frac {\partial ^{2}u}{\partial x^{2}}}$
a discretização de Crank-Nicolson é dada por:
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}={\frac {a}{2(\Delta x)^{2}}}\left((u_{i+1}^{n}-2u_{i}^{n}+u_{i-1}^{n})+(u_{i+1}^{n+1}-2u_{i}^{n+1}+u_{i-1}^{n+1})\right)$
ou reescrevendo, fazendo $r={\frac {a\Delta t}{2(\Delta x)^{2}}}$:
    $u_{i}^{n+1}=u_{i}^{n}+r\left(u_{i+1}^{n}-2u_{i}^{n}+u_{i-1}^{n}\right)+r\left(u_{i+1}^{n+1}-2u_{i}^{n+1}+u_{i-1}^{n+1}\right)\,$