# Métodos explícitos e implícitos

Métodos explícitos e implícitos são aproximações usadas na análise numérica para a obtenção de soluções dependentes do tempo, de equações diferenciais ordinárias e parciais, como é exigido em simulações computacionais de processos físicos. Métodos explícitos calculam o estado do sistema num tempo posterior ao estado atual do sistema, enquanto que métodos implícitos encontram a solução resolvendo uma equação que envolve ambos estados atual e posterior do sistema. Matematicamente, se $Y(t)$ é o estado atual do sistema e $Y(t+\Delta t)$ é o estado posterior ($\Delta t$ é um pequeno passo de tempo), então, para um método explícito:
    $Y(t+\Delta t)=F(Y(t))\,$
enquanto que um método implícito usa a equação:
    $G(Y(t),Y(t+\Delta t))=0\,$
para encontrar $Y(t+\Delta t).$
Fica claro que métodos implícitos exigem uma computação adicional e eles podem ser muito mais difíceis de serem implementados. Métodos implícitos são usados em problemas em que o uso de um método explícito exigiria passos de tempo impraticavelmente pequenos para manter os erros limitados(ver estabilidade numérica). Para atingir a precisão desejada em tais problemas, leva muito menos tempo computacional quando um método implícito é usado. Eles geralmente são incondicionalmente estáveis, o que quer dizer que podemos dar grandes valores ao passo de tempo para que a solução possa ser encontrada mais rapidamente, porém o custo computacional também aumenta consideravelmente, o que também aumenta a necessidade de mais memória do computador já que a velocidade do processo é maior.

## Métodos de Euler explícito e implícito

Considerando a equação da convecção linear unidimensional:
    ${\frac {\partial u}{\partial t}}+a{\frac {\partial u}{\partial x}}=0\quad \quad \ ou\quad \quad u_{t}+au_{x}=0\,$
onde $u(x,t)$ é a função desconhecida de $(x,t)$ e a é a velocidade de convecção (velocidade da onda). Considerando um problema de valor inicial e de contorno, essa equação tem que ser fundamentada pelas seguintes condições iniciais e de contorno, para a>0:
    $em\ t=0\quad u(x,0)=u^{(0)}(x)\quad 0\leq x\leq L$
    $em\ x=0\quad u(0,t)=g(t)\quad \quad \ t\geq 0$
A fim de aplicar um método de diferenças finitas, discretizamos os domínios do tempo e espaço, com passos constantes. Ou seja, o eixo x é discretizado em N intervalos de malha $\Delta x$, e o eixo y em intervalos de tempos constantes $\Delta t$, como mostrado na figura ao lado, com:
$x_{i}=i\Delta x\quad \quad t^{n}=n\Delta t\,$
$u_{i}^{n}=u(i\Delta x,n\Delta t)\,$
Onde o nível de tempo é indicado por n e a posição do espaço é indicada por i. A fim de obtermos um esquema numérico, temos que discretizar as derivadas do espaço e do tempo. Poderíamos selecionar, por exemplo, um método de diferenças centradas de segunda ordem para a discretização da derivada do espaço no ponto i. Isto leva ao esquema semi-discreto, também chamado de método das linhas: $(u_{t})_{i}=-{\frac {a}{2\Delta x}}(u_{i+1}-u_{i-1})\quad \quad (1)\,$
O lado esquerdo representa as derivadas do tempo avaliadas no ponto i, onde o próximo passo é definir uma discretização no tempo. Isto implica na substituição da derivada do tempo por uma forma discreta e também na decisão quanto ao nível de tempo em que o lado direito será avaliado. Em um problema de convecção (ou propagação), sabemos a solução em t=0 e procuramos a solução para tempos posteriores. Traduzindo numericamente, quando progredimos de um nível de tempo n para um nível de tempo (n+1), considerando que conhecemos a solução no nível n, queremos encontrar a evolução dessa solução para o tempo de nível (n+1). Assim fica lógico escolhermos uma fórmula de diferença finita avançada(explicita) para $(u_{t})_{i}$, o que nos leva a:
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}=-{\frac {a}{2\Delta x}}(u_{i+1}-u_{i-1})\,$
Este método é conhecido por método de Euler explicito para a integração no tempo de equações diferenciais ordinárias, levando ao esquema numerico explícito:
    $u_{i}^{n+1}=u_{i}^{n}-{\frac {a\Delta t}{2\Delta x}}(u_{i+1}^{n}-u_{i-1}^{n})$
Avaliando o lado direito da equação (1) para o nível de tempo (n+1), encontramos o esquema implícito:
    ${\frac {u_{i}^{n+1}-u_{i}^{n}}{\Delta t}}+{\frac {a}{2\Delta x}}(u_{i+1}^{n+1}-u_{i-1}^{n+1})=0\,$
o qual é conhecido por método de Euler implícito, já que três valores desconhecidos aparecem simultaneamente no nível de tempo (n+1).
Se levarmos em consideração a equação diferencial parcial:
    ${\frac {\partial u}{\partial t}}=F\left(u,x,t,{\frac {\partial u}{\partial x}},{\frac {\partial ^{2}u}{\partial x^{2}}}\right)$
O método de euler explícito, pode entao ser escrito na forma:
    ${\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)$
Já o método de euler implícito fica na forma:
    ${\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)$