Método de Crank–Nicolson

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

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.[1] É 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.[2]

Para equações de difusão (e muitas outras), pode-se provar que o método de Crank–Nicolson é incondicionalmente estável.[3] 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[editar | editar código-fonte]

The Crank–Nicolson stencil for a 1D problem.

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[editar | editar código-fonte]

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} - 2 u_{i}^{n} + u_{i - 1}^{n}) +
(u_{i + 1}^{n + 1} - 2 u_{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)\,

Referências

  1. Tuncer Cebeci. Convective Heat Transfer. [S.l.]: Springer, 2002. ISBN 0966846141.
  2. (1947) "A practical method for numerical evaluation of solutions of partial differential equations of the heat conduction type". Proc. Camb. Phil. Soc. 43 (1): 50–67. DOI:10.1007/BF02127704..
  3. Thomas, J. W.. In: J. W.. Numerical Partial Differential Equations: Finite Difference Methods. Berlin, New York: Springer-Verlag, 1995. vol. 22. ISBN 978-0-387-97999-1. . O exemplo 3.3.2 mostra que o método é incondicionalmente estável quando aplicado à u_t=au_{xx}.
Ícone de esboço Este artigo sobre matemática é um esboço. Você pode ajudar a Wikipédia expandindo-o.