# Análise de estabilidade de Von Neumann

Na análise numérica, a Análise de estabilidade de Von Neumann (também conhecida como análise de estabilidade de Fourier) é um procedimento usado para verificar a estabilidade de métodos de diferenças finitas quando aplicados em equações diferenciais parciais. A análise é baseada na decomposição de Fourier do Erro numérico e foi desenvolvida no Laboratório Nacional de Los Alamos depois de ter sido brevemente descrita em um artigo de 1947 pelos pesquisadores britânicos John Crank e Phyllis Nicolson. Depois, foi dado um tratamento mais rigoroso ao método em um artigo co-escrito por John von Neumann.

## Estabilidade numérica

A estabilidade de métodos numéricos está intimamente associada ao erro numérico. Um método de diferenças finitas é estável se os erros produzidos em um passo de tempo do cálculo não provocam um aumento dos erros à medida que os cálculos avançam. Há 3 classes de métodos numéricos. Um método numérico condicionalmente estável depende de certos parâmetros para que os erros permaneçam limitados e não instabilizem. Se os erros diminuírem ou chegarem a desaparecer, o método numérico é dito como sendo estável. Se, de outra forma, os erros aumentarem com o tempo, a solução numérica irá divergir em relação à realidade (solução exata) e então o método numérico é dito como sendo instável. A estabilidade de métodos numéricos pode ser averiguada pela análise de estabilidade de von Neumann. Para problemas dependentes do tempo, a estabilidade garante que o método numérico produza uma solução limitada sempre que a solução da equação diferencial for limitada. Estabilidade em geral, pode ser dificilmente averiguada, especialmente se a equação em questão for não-linear.
A estabilidade de von Neumann é necessária e sucifiente (tal como utilizado no Teorema de Equivalência de Lax) apenas em certos casos: a EDP e o método de diferenças finitas devem ser lineares; a EDP precisa ter condições iniciais e de fronteira e ser no máximo de segunda ordem. Devido à sua relativa simplicidade, a análise de von Neumann é geralmente usada no lugar de uma análise de estabilidade mais detalhada por ser um bom palpite em relação às restrições dos passos usados no método.

## Ilustração do método

O método de von Neumann é baseado na decomposição dos erros em séries de Fourier. Para ilustrar o procedimento, considere Equação do calor unidimensional
    ${\frac {\partial u}{\partial t}}=\alpha {\frac {\partial ^{2}u}{\partial x^{2}}}$
definida no intervalo $L$, e discretizando pelo método FTCS
    $\quad (1)\qquad u_{j}^{n+1}=u_{j}^{n}+r\left(u_{j+1}^{n}-2u_{j}^{n}+u_{j-1}^{n}\right)$
onde
    $r={\frac {\alpha \,\Delta t}{\Delta x^{2}}}$
e a solução $u_{j}^{n}$ da equação discretizada se aproxima da solução analítica $u(x,t)$ da EDP na malha.
Definimos o Erro de arredondamento (também chamado de erro de truncamento) $\epsilon _{j}^{n}$ como
    $\epsilon _{j}^{n}=U_{j}^{n}-u_{j}^{n}$
onde $u_{j}^{n}$ é a solução da equação discretizada (1) que seria calculada sem os erros de truncamento, e $U_{j}^{n}$ é a solução numérica obtida com precisão finita. Já que a solução exata $u_{j}^{n}$ deve satisfazer a equação discretizada, o erro $\epsilon _{j}^{n}$ também deve satisfazer a equação discretizada. Portanto
    $\quad (2)\qquad \epsilon _{j}^{n+1}=\epsilon _{j}^{n}+r\left(\epsilon _{j+1}^{n}-2\epsilon _{j}^{n}+\epsilon _{j-1}^{n}\right)$
é uma relação de recorrência para o erro. Equações (1) e (2) mostram que ambos os erros e a solução numérica tem o mesmo crescimento ou decaimento em relação ao tempo. Para equações diferenciais lineares com condições de contorno, a variação espacial do erro pode ser expandida em séries de Fourier, no intervalo $L$, como
    $\quad (3)\qquad \epsilon (x)=\sum _{m=1}^{N/2}A_{m}e^{ik_{m}x}$
onde o Número de onda $k_{m}={\frac {\pi m}{L}}$ com $m=1,2,\ldots ,M$, $M={\frac {L}{\Delta x}}$ e $N$ sendo uma incógnita. A dependência no tempo do erro é incluída assumindo-se que a amplitude do erro $A_{m}$ está em função do tempo. Já que o erro tende a crescer ou decair exponencialmente com o tempo, é sensato assumir que a amplitude varia exponencialmente com o tempo; daí
    $\quad (4)\qquad \epsilon (x,t)=\sum _{m=1}^{N/2}e^{at}e^{ik_{m}x}$
onde $a$ é uma constante.
Já que a equação diferencial do erro é linear (o comportamento de cada tempo da série é o mesmo que o dá série), podemos então considerar que o crescimento do erro de um dado termo é:
    $\quad (5)\qquad \epsilon _{m}(x,t)=e^{at}e^{ik_{m}x}$
As característica da estabilidade podem ser estudadas usando apenas esta forma para o erro, sem grandes perdas em geral. Para descobrir como o erro varia nos espaços de tempo, substituimos (5) na equação (2), notando que
    ${\begin{aligned}\epsilon _{j}^{n}&=e^{at}e^{ik_{m}x}\\\epsilon _{j}^{n+1}&=e^{a(t+\Delta t)}e^{ik_{m}x}\\\epsilon _{j+1}^{n}&=e^{at}e^{ik_{m}(x+\Delta x)}\\\epsilon _{j-1}^{n}&=e^{at}e^{ik_{m}(x-\Delta x)},\end{aligned}}$
dando (depois de simplificar)
    $\quad (6)\qquad e^{a\Delta t}=1+{\frac {\alpha \Delta t}{\Delta x^{2}}}\left(e^{ik_{m}\Delta x}+e^{-ik_{m}\Delta x}-2\right).$
Usando as identidades
    $\qquad \cos(k_{m}\Delta x)={\frac {e^{ik_{m}\Delta x}+e^{-ik_{m}\Delta x}}{2}}\qquad {\text{and}}\qquad \sin ^{2}{\frac {k_{m}\Delta x}{2}}={\frac {1-\cos(k_{m}\Delta x)}{2}}$
equação (6) pode ser reescrita como
    $\quad (7)\qquad e^{a\Delta t}=1-{\frac {4\alpha \Delta t}{\Delta x^{2}}}\sin ^{2}(k_{m}\Delta x/2)$
Definimos então o fator de amplitude
    $G\equiv {\frac {\epsilon _{j}^{n+1}}{\epsilon _{j}^{n}}}$
A condição necessária e suficiente para o erro se manter limitado é que, $\vert G\vert \leq 1.$ Contudo,
    $\quad (8)\qquad G={\frac {e^{a(t+\Delta t)}e^{ik_{m}x}}{e^{at}e^{ik_{m}x}}}=e^{a\Delta t}$
Daí, das equações (7) e (8), a condição para a estabilidade é dada por
    $\quad (9)\qquad \left\vert 1-{\frac {4\alpha \Delta t}{\Delta x^{2}}}\sin ^{2}(k_{m}\Delta x/2)\right\vert \leq 1$
Para a condição acima manter todos os $\sin ^{2}(k_{m}\Delta x/2)$, temos
    $\quad (10)\qquad {\frac {\alpha \Delta t}{\Delta x^{2}}}\leq {\frac {1}{2}}$
Equação (10) dá o requisito de estabilidade para o método FTCS quando aplicado a equação unidimensional do calor. Ela diz que para um determinado $\Delta x$,o valor permitido de $\Delta t$ deve ser pequeno o bastante para satisfazer a equação (10).