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.[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

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

u t = F ( u , x , t , u x , 2 u x 2 ) {\displaystyle {\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 Δ x , n Δ t ) = u i n {\displaystyle 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 {\displaystyle 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):

u i n + 1 u i n Δ t = F i n ( u , x , t , u x , 2 u x 2 ) (Euler explícito) {\displaystyle {\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)}}}
u i n + 1 u i n Δ t = F i n + 1 ( u , x , t , u x , 2 u x 2 ) (Euler implícito) {\displaystyle {\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)}}}
u i n + 1 u i n Δ t = 1 2 ( F i n + 1 ( u , x , t , u x , 2 u x 2 ) + F i n ( u , x , t , u x , 2 u x 2 ) ) (Crank-Nicolson) {\displaystyle {\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:

u t = a 2 u x 2 {\displaystyle {\partial u \over \partial t}=a{\frac {\partial ^{2}u}{\partial x^{2}}}}

a discretização de Crank-Nicolson é dada por:

u i n + 1 u i n Δ t = a 2 ( Δ x ) 2 ( ( 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 ) ) {\displaystyle {\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 = a Δ t 2 ( Δ x ) 2 {\displaystyle r={\frac {a\Delta t}{2(\Delta x)^{2}}}} :

u i n + 1 = u i n + r ( u i + 1 n 2 u i n + u i 1 n ) + r ( u i + 1 n + 1 2 u i n + 1 + u i 1 n + 1 ) {\displaystyle 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 (2002). Convective Heat Transfer. [S.l.]: Springer. ISBN 0966846141 
  2. Crank, J.; Nicolson, P. (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.  |given1= e |primeiro1= redundantes (ajuda); |given2= e |primeiro2= redundantes (ajuda).
  3. Thomas, J. W. (1995). Numerical Partial Differential Equations: Finite Difference Methods. Col: Texts in Applied Mathematics. 22. Berlin, New York: Springer-Verlag. ISBN 978-0-387-97999-1. . O exemplo 3.3.2 mostra que o método é incondicionalmente estável quando aplicado à u t = a u x x {\displaystyle u_{t}=au_{xx}} .


  • v
  • d
  • e
Resolução de equações diferenciais parciais
Método das diferenças finitas
Relativos à equação do calor: esquema FTCS · Método de Crank–Nicolson Hiperbólicos: Método de Lax–Friedrichs · Método de Lax–Wendroff · Método de MacCormack · Esquema Upwind · Outros: Método da direção implícita alternada · Método FDTD
Método dos volumes finitos
Esquema de Godunov · Esquema de Alta-resolução · Esquema MUSCL · AUSM · Riemann solver
Método dos elementos finitos
hp-FEM · Método dos elementos finitos estendido · Método de Galerkin Descontínuo · Método dos elementos espectrais · Métodos Meshfree · Métodos Mortar
Outros métodos
Método espectral · Método pseudo espectral · Método das linhas · Método Multigrid · Método da colocação · Método Level set · Método dos elementos de contorno · Método de Fronteira Imersa · Método de elementos analíticos · Método Particle-in-cell · Análise Isogeométrica
Métodos de decomposição de domínios
Método de Schur · Método dos domínios fictícios · Método alternante de Schwarz · Método aditivo de Schwarz · Método aditivo abstrato de Schwarz · Método de Neumann–Dirichlet · Métodos Neumann–Neumann · Operador Poincaré–Steklov · Balancing domain decomposition · BDDC · FETI · FETI-DP
Ícone de esboço Este artigo sobre matemática é um esboço. Você pode ajudar a Wikipédia expandindo-o.
  • v
  • d
  • e