Métodos explícitos e implícitos

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

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

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
Discretização dos eixos de tempo e espaço

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. Afim 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)

Referências[editar | editar código-fonte]