Método das diferenças finitas

O método das diferenças finitas (MDF) é um método de resolução de equações diferenciais que se baseia na aproximação de derivadas por diferenças finitas. A fórmula de aproximação obtém-se da série de Taylor da função derivada.[1] Hoje, os MDFs são a abordagem dominante das soluções numéricas de equações diferenciais parciais.[2]

O operador de diferenças finitas para derivada pode ser obtido a partir da série de Taylor para as seguintes funções:

f ( x + h ) = f ( x ) + f ( x ) h + f ( x ) h 2 2 + f ( x ) h 3 6 + o ( h 4 ) {\displaystyle f(x+h)=f(x)+f'(x)h+{\frac {f''(x)h^{2}}{2}}+{\frac {f'''(x)h^{3}}{6}}+o(h^{4})\,}
f ( x h ) = f ( x ) f ( x ) h + f ( x ) h 2 2 f ( x ) h 3 6 + o ( h 4 ) {\displaystyle f(x-h)=f(x)-f'(x)h+{\frac {f''(x)h^{2}}{2}}-{\frac {f'''(x)h^{3}}{6}}+o(h^{4})}

Portanto, a derivada primeira pode ser escrita de três formas distintas como uma diferença-quociente mais um termo de erro, obtido ao desprezar-se termos de ordem superior :

f ( x ) = f ( x + h ) f ( x ) h + o ( h ) {\displaystyle f'(x)={\frac {f(x+h)-f(x)}{h}}+o(h)} , que é conhecida como fórmula das diferenças progressivas, ou
f ( x ) = f ( x ) f ( x h ) h + o ( h ) {\displaystyle f'(x)={\frac {f(x)-f(x-h)}{h}}+o(h)} , que é conhecida como fórmula das diferenças regressivas, ou ainda
f ( x ) = f ( x + h ) f ( x h ) 2 h + o ( h 2 ) {\displaystyle f'(x)={\frac {f(x+h)-f(x-h)}{2h}}+o(h^{2})} , que é conhecida como fórmula das diferenças centradas.
Além disso, é possível obter derivadas de ordem superior. A derivada de segunda ordem é obtida a partir de
f ( x + h ) + f ( x h ) = 2 f ( x ) + f ( x ) h 2 + o ( h 4 ) {\displaystyle f(x+h)+f(x-h)=2f(x)+f''(x)h^{2}+o(h^{4})}

e é dada por f ( x ) = f ( x + h ) 2 f ( x ) + f ( x h ) h 2 + o ( h 2 ) {\displaystyle f''(x)={\frac {f(x+h)-2f(x)+f(x-h)}{h^{2}}}+o(h^{2})}

Método das diferenças finitas para problemas lineares

A partir das aproximações por diferença-quociente para derivadas de qualquer ordem, é possível transformar equações diferenciais em problemas lineares. Para isso, é necessário ignorar o termo de erro e tornar h {\displaystyle h} um número muito pequeno, mas grande o suficiente para que não cause instabilidades nas aproximações das derivadas.

Resolução de problemas de contorno

Para uma equação diferencial do tipo y ( x ) = f ( x ) y ( x ) + g ( x ) y ( x ) + z ( x ) {\displaystyle y''(x)=f(x)y'(x)+g(x)y(x)+z(x)} , onde x {\displaystyle x} varia de a {\displaystyle a} até b {\displaystyle b} , y ( a ) = α {\displaystyle y(a)=\alpha } e y ( b ) = β {\displaystyle y(b)=\beta } .

A equação é aproximada pelo método das diferenças finitas, com um erro de truncamento igual a o ( h 2 ) {\displaystyle o(h^{2})} , substituindo-se as derivadas pelas suas representações numéricas, que são dadas por:

y ( x ) = y ( x + h ) y ( x h ) 2 h {\displaystyle y'(x)={\frac {y(x+h)-y(x-h)}{2h}}}

y ( x ) = y ( x + h ) 2 y ( x ) + y ( x h ) h 2 {\displaystyle y''(x)={\frac {y(x+h)-2y(x)+y(x-h)}{h^{2}}}}

Como é possível perceber, necessita-se definir um valor para h {\displaystyle h} . Este valor pode ser definido pela divisão do intervalo em que se está interessado para a resolução do problema em N {\displaystyle N} intervalos menores. Assim, o valor de h {\displaystyle h} é dado por: h = b a N {\displaystyle h={\frac {b-a}{N}}} .

As extremidades destes subintervalos são dadas por x ( i ) = a + ( i 1 ) h {\displaystyle x(i)=a+(i-1)h} , para i = 1 , 2 , . . . , N {\displaystyle i=1,2,...,N} .

Para a resolução do problema, o mesmo é escrito na forma y ( x ) f ( x ) y ( x ) g ( x ) y ( x ) = z ( x ) {\displaystyle y''(x)-f(x)y'(x)-g(x)y(x)=z(x)} , que após a substituição das derivadas, torna-se:

y ( x ( i ) + h ) 2 y ( x ( i ) ) + y ( x ( i ) h ) h 2 f ( x ( i ) ) [ y ( x ( i ) + h ) y ( x ( i ) h ) 2 h ] g ( x ( i ) ) y ( x ( i ) ) = z ( x ( i ) ) {\displaystyle {\frac {y(x(i)+h)-2y(x(i))+y(x(i)-h)}{h^{2}}}-f(x(i))\left[{\frac {y(x(i)+h)-y(x(i)-h)}{2h}}\right]-g(x(i))y(x(i))=z(x(i))} , para i = 2 , 3 , . . . , N {\displaystyle i=2,3,...,N} .

Como x ( i + 1 ) = x ( i ) + h {\displaystyle x(i+1)=x(i)+h} e x ( i 1 ) = x ( i ) h {\displaystyle x(i-1)=x(i)-h} , aquela equação pode ser reescrita como

y ( x ( i + 1 ) ) 2 y ( x ( i ) ) + y ( x ( i 1 ) ) h 2 f ( x ( i ) ) [ y ( x ( i + 1 ) ) y ( x ( i 1 ) ) 2 h ] g ( x ( i ) ) y ( x ( i ) ) = z ( x ( i ) ) {\displaystyle {\frac {y(x(i+1))-2y(x(i))+y(x(i-1))}{h^{2}}}-f(x(i))\left[{\frac {y(x(i+1))-y(x(i-1))}{2h}}\right]-g(x(i))y(x(i))=z(x(i))} .

Isolando os termos y ( x ( i + 1 ) ) {\displaystyle y(x(i+1))} , y ( x ( i ) ) {\displaystyle y(x(i))} e y ( x ( i 1 ) ) {\displaystyle y(x(i-1))} na fórmula acima, obtêm-se

y ( x ( i 1 ) ) [ 1 h 2 + f ( x ( i ) ) 2 h ] + y ( x ( i ) ) [ 2 h 2 g ( x ( i ) ) ] + y ( x ( i + 1 ) ) [ 1 h 2 f ( x ( i ) ) 2 h ] = z ( x ( i ) ) {\displaystyle y(x(i-1))\left[{\frac {1}{h^{2}}}+{\frac {f(x(i))}{2h}}\right]+y(x(i))\left[{\frac {-2}{h^{2}}}-g(x(i))\right]+y(x(i+1))\left[{\frac {1}{h^{2}}}-{\frac {f(x(i))}{2h}}\right]=z(x(i))}

A partir desta equação é possível resolver o sistema linear a partir de uma matriz A {\displaystyle A} de coeficientes que multiplica os valores de y {\displaystyle y} , sendo que a solução deste sistema é dada por B {\displaystyle B} . Esse sistema linear é representado a seguir.

A = [ 1 0 0 0 1 h 2 + f ( x ( 2 ) ) 2 h 2 h g ( x ( 2 ) ) 1 h 2 f ( x ( 2 ) ) 2 h 0 0 0 0 0 1 h 2 + f ( x ( N 1 ) ) 2 h 2 h g ( x ( N ) ) 1 h 2 f ( x ( N + 1 ) ) 2 h 0 0 1 ] {\displaystyle A={\begin{bmatrix}1&0&0&\cdots &\cdots &\cdots &0\\{\frac {1}{h^{2}}}+{\frac {f(x(2))}{2h}}&{\frac {-2}{h}}-g(x(2))&{\frac {1}{h^{2}}}-{\frac {f(x(2))}{2h}}&0&\cdots &\cdots &0\\0&\ddots &\ddots &\ddots &\vdots &\vdots &0\\0&\ddots &\ddots &\ddots &{\frac {1}{h^{2}}}+{\frac {f(x(N-1))}{2h}}&{\frac {-2}{h}}-g(x(N))&{\frac {1}{h^{2}}}-{\frac {f(x(N+1))}{2h}}\\0&0&\cdots &\cdots &\cdots &\cdots &1\end{bmatrix}}}

B = [ α z ( x ( 2 ) ) z ( x ( 3 ) ) β ] {\displaystyle B={\begin{bmatrix}\alpha \\z(x(2))\\z(x(3))\\\vdots \\\beta \end{bmatrix}}}

Onde a aproximação para y {\displaystyle y} é dada pelos pontos que são solução do sistema A y = B {\displaystyle Ay=B} .

Resolução de problemas de valor inicial e o método de Euler

A partir do método das diferenças finitas também é possível obter o método de Euler, que é usado para obter soluções de problemas de valor inicial bem-posto. Leonhard Euler (1707 - 1783) foi o primeiro matemático de sua época a apresentar o uso do método de diferenças finitas para encontrar aproximações de soluções de equações diferenciais. Entretanto, o método de Euler não é usado na prática, pois possui pouca precisão. Alternativamente a este, são utilizados com maior frequência o método de Euler modificado ou o método de Runge-Kutta para solução de problemas de valor inicial.

Para um dado problema de valor inicial bem posto

y ( t ) = f ( t , y ) {\displaystyle y'(t)=f(t,y)} , a {\displaystyle a} t {\displaystyle t} b {\displaystyle b} , y ( a ) = α {\displaystyle y(a)=\alpha } .

Divide-se o intervalo [ a , b ] {\displaystyle [a,b]} em N {\displaystyle N} subintervalos e define-se que t ( i ) = a + ( i 1 ) h {\displaystyle t(i)=a+(i-1)h} , para i = 1 , 2 , . . . , N {\displaystyle i=1,2,...,N} . Onde h {\displaystyle h} é o espaçamento da malha.

A partir disto, temos que h = ( b a ) N = t ( i + 1 ) t ( i ) {\displaystyle h={\frac {(b-a)}{N}}=t(i+1)-t(i)} , para i = 1 , 2 , . . . , N {\displaystyle i=1,2,...,N} .

Aproximando a equação diferencial pelo método das diferenças finitas, desprezando-se o termo de erro, temos

y ( t ( i + 1 ) ) y ( t ( i ) ) h = f ( t ( i ) , y ( i ) ) {\displaystyle {\frac {y(t(i+1))-y(t(i))}{h}}=f(t(i),y(i))}

y ( t ( i + 1 ) ) = y ( t ( i ) ) + h f ( t ( i ) , y ( i ) ) {\displaystyle y(t(i+1))=y(t(i))+hf(t(i),y(i))} , que é usada para i = 1 , 2 , 3 , . . . , N . {\displaystyle i=1,2,3,...,N.}

A equação acima é conhecida como equação de diferença associada ao método de Euler.

O sistema linear é inicializado com y ( 1 ) = α {\displaystyle y(1)=\alpha } e é de fácil solução.

Método das diferenças finitas para problemas não lineares

O método das diferenças finitas é análogo ao utilizado para problemas lineares. Entretanto, é utilizado um processo iterativo para a obtenção da solução do problema, que não é linear.

Resolução de problemas de contorno não-lineares

Para um problema de contorno não-linear geral, dado por y = f ( x , y , y ) {\displaystyle y''=f(x,y,y')} com x {\displaystyle x} variando de a {\displaystyle a} até b {\displaystyle b} , e sendo as condições de contorno y ( a ) = α {\displaystyle y(a)=\alpha } e y ( b ) = β {\displaystyle y(b)=\beta } ,

há garantia de solução única se as seguintes condições forem satisfeitas.

  • f {\displaystyle f} e suas derivadas parciais em relação a y {\displaystyle y} e y {\displaystyle y'} são contínuas em D = {\displaystyle D=} { ( x , y , y ) | a {\displaystyle (x,y,y')|a} x {\displaystyle x} b , {\displaystyle b,} - {\displaystyle \infty } < y {\displaystyle y} < {\displaystyle \infty } , - {\displaystyle \infty } < y {\displaystyle y'} < {\displaystyle \infty } };
  • f ( x , y , y ) {\displaystyle f(x,y,y')} > δ {\displaystyle \delta } , para um certo δ {\displaystyle \delta } > 0 {\displaystyle 0}  ;
  • Existem constantes P {\displaystyle P} e Q {\displaystyle Q} tais que: P {\displaystyle P} é o valor máximo que o módulo da derivada parcial de f {\displaystyle f} em relação a y {\displaystyle y} atinge em D {\displaystyle D} e Q {\displaystyle Q} é o valor máximo que o módulo da derivada parcial de f {\displaystyle f} em relação a y {\displaystyle y'} atinge em D {\displaystyle D} .

Como no caso anterior, a aproximação para a equação é obtida quando os termos de erro são desprezados.

Assim, y = f ( x , y , y ) {\displaystyle y''=f(x,y,y')} torna-se y ( x + h ) 2 y ( x ) + y ( x h ) h 2 = f ( x , y , y ( x + h ) y ( x h ) 2 h ) {\displaystyle {\frac {y(x+h)-2y(x)+y(x-h)}{h^{2}}}=f(x,y,{\frac {y(x+h)-y(x-h)}{2h}})} , que com a mesma divisão em intervalos anterior, é dada por y ( x ( i + 1 ) ) 2 y ( x ( i ) ) + y ( x ( i 1 ) ) h 2 = f ( x ( i ) , y ( i ) , y ( x ( i + 1 ) ) y ( x ( i 1 ) ) 2 h ) {\displaystyle {\frac {y(x(i+1))-2y(x(i))+y(x(i-1))}{h^{2}}}=f(x(i),y(i),{\frac {y(x(i+1))-y(x(i-1))}{2h}})} , para i = 2 , 3 , . . . , N {\displaystyle i=2,3,...,N} .

As condições de contorno são y ( 1 ) = α {\displaystyle y(1)=\alpha } e y ( N + 1 ) = β {\displaystyle y(N+1)=\beta } .

A partir da equação y ( x ( i + 1 ) ) 2 y ( x ( i ) ) + y ( x ( i 1 ) ) h 2 + f ( x ( i ) , y ( i ) , y ( x ( i + 1 ) ) y ( x ( i 1 ) ) 2 h ) = 0 {\displaystyle -{\frac {y(x(i+1))-2y(x(i))+y(x(i-1))}{h^{2}}}+f(x(i),y(i),{\frac {y(x(i+1))-y(x(i-1))}{2h}})=0} , para i = 2 , 3 , . . . , N {\displaystyle i=2,3,...,N} e das condições de contorno, obtemos um sistema não linear que pode ser resolvido via Método de Newton para sistemas não-lineares. Sendo que o sistema terá solução única se h {\displaystyle h} < 2 / Q {\displaystyle 2/Q} . Se a aproximação inicial utilizada no método de Newton for suficientemente próxima da solução e se a matriz Jacobiana do sistema for não-singular, o sistema converge para a solução exata.

Referências

  1. Richard L. Burden; J. Douglas Faires. Análise Numérica, Editora CENGAGE Learning, 8° edição. [S.l.: s.n.]  A referência emprega parâmetros obsoletos |coautor= (ajuda)
  2. Christian Grossmann; Hans-G. Roos; Martin Stynes (2007). Numerical Treatment of Partial Differential Equations. [S.l.]: Springer Science & Business Media. p. 23. ISBN 978-3-540-71584-9 

Ver também

  • Portal da matemática
Ícone de esboço Este artigo sobre matemática é um esboço. Você pode ajudar a Wikipédia expandindo-o.
  • v
  • d
  • e
Controle de autoridade