Método das diferenças finitas









Question book-4.svg

Esta página ou secção cita fontes confiáveis e independentes, mas que não cobrem todo o conteúdo, o que compromete a verificabilidade (desde Março de 2011). Por favor, insira mais referências no texto. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)


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)h22+f‴(x)h36+o(h4){displaystyle f(x+h)=f(x)+f'(x)h+{frac {f''(x)h^{2}}{2}}+{frac {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)h22−f‴(x)h36+o(h4){displaystyle f(x-h)=f(x)-f'(x)h+{frac {f''(x)h^{2}}{2}}-{frac {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)}{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)}{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)2h+o(h2){displaystyle f'(x)={frac {f(x+h)-f(x-h)}{2h}}+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)=2f(x)+f″(x)h2+o(h4){displaystyle f(x+h)+f(x-h)=2f(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)−2f(x)+f(x−h)h2+o(h2){displaystyle f''(x)={frac {f(x+h)-2f(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})}




Índice






  • 1 Método das diferenças finitas para problemas lineares


    • 1.1 Resolução de problemas de contorno


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




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


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




  • 3 Referências


  • 4 Ver também





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}{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)}{displaystyle y''(x)=f(x)y'(x)+g(x)y(x)+z(x)}, onde x{displaystyle x}{displaystyle x} varia de a{displaystyle a}{displaystyle a} até b{displaystyle b}{displaystyle b}, y(a)=α{displaystyle y(a)=alpha }{displaystyle y(a)=alpha } e y(b)=β{displaystyle y(b)=beta }{displaystyle y(b)=beta }.


A equação é aproximada pelo método das diferenças finitas, com um erro de truncamento igual a o(h2){displaystyle 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)2h{displaystyle y'(x)={frac {y(x+h)-y(x-h)}{2h}}}{displaystyle y'(x)={frac {y(x+h)-y(x-h)}{2h}}}


y″(x)=y(x+h)−2y(x)+y(x−h)h2{displaystyle y''(x)={frac {y(x+h)-2y(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}{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}{displaystyle N} intervalos menores. Assim, o valor de h{displaystyle h}{displaystyle h} é dado por: h=b−aN{displaystyle h={frac {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}{displaystyle x(i)=a+(i-1)h}, para i=1,2,...,N{displaystyle 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)}{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)−2y(x(i))+y(x(i)−h)h2−f(x(i))[y(x(i)+h)−y(x(i)−h)2h]−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))}{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}{displaystyle i=2,3,...,N}.


Como x(i+1)=x(i)+h{displaystyle 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}{displaystyle x(i-1)=x(i)-h}, aquela equação pode ser reescrita como


y(x(i+1))−2y(x(i))+y(x(i−1))h2−f(x(i))[y(x(i+1))−y(x(i−1))2h]−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))}{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))}{displaystyle y(x(i+1))}, y(x(i)){displaystyle y(x(i))}{displaystyle y(x(i))} e y(x(i−1)){displaystyle y(x(i-1))}{displaystyle y(x(i-1))} na fórmula acima, obtêm-se


y(x(i−1))[1h2+f(x(i))2h]+y(x(i))[−2h2−g(x(i))]+y(x(i+1))[1h2−f(x(i))2h]=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))}{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}{displaystyle A} de coeficientes que multiplica os valores de y{displaystyle y}{displaystyle y}, sendo que a solução deste sistema é dada por B{displaystyle B}{displaystyle B}. Esse sistema linear é representado a seguir.


A=[100⋯01h2+f(x(2))2h−2h−g(x(2))1h2−f(x(2))2h0⋯00⋱00⋱1h2+f(x(N−1))2h−2h−g(x(N))1h2−f(x(N+1))2h00⋯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 &1end{bmatrix}}}{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 &1end{bmatrix}}}


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


Onde a aproximação para y{displaystyle y}{displaystyle y} é dada pelos pontos que são solução do sistema Ay=B{displaystyle Ay=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)}{displaystyle y'(t)=f(t,y)}, a{displaystyle a}{displaystyle a}t{displaystyle t}tb{displaystyle b}b , y(a)=α{displaystyle y(a)=alpha }{displaystyle y(a)=alpha } .


Divide-se o intervalo [a,b]{displaystyle [a,b]}[a,b] em N{displaystyle N}N subintervalos e define-se que t(i)=a+(i−1)h{displaystyle t(i)=a+(i-1)h}{displaystyle t(i)=a+(i-1)h}, para i=1,2,...,N{displaystyle i=1,2,...,N}{displaystyle i=1,2,...,N}. Onde h{displaystyle h}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)}{displaystyle h={frac {(b-a)}{N}}=t(i+1)-t(i)}, para i=1,2,...,N{displaystyle 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))}{displaystyle {frac {y(t(i+1))-y(t(i))}{h}}=f(t(i),y(i))}


y(t(i+1))=y(t(i))+hf(t(i),y(i)){displaystyle y(t(i+1))=y(t(i))+hf(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.}{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 }{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')}{displaystyle y''=f(x,y,y')} com x{displaystyle x}{displaystyle x} variando de a{displaystyle a}{displaystyle a} até b{displaystyle b}{displaystyle b}, e sendo as condições de contorno y(a)=α{displaystyle y(a)=alpha }{displaystyle y(a)=alpha } e y(b)=β{displaystyle y(b)=beta }{displaystyle y(b)=beta },


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




  • f{displaystyle f}{displaystyle f} e suas derivadas parciais em relação a y{displaystyle y}y e y′{displaystyle y'}y' são contínuas em D={displaystyle D=}{displaystyle D=} { (x,y,y′)|a{displaystyle (x,y,y')|a}{displaystyle (x,y,y')|a} x{displaystyle x}{displaystyle x}b,{displaystyle b,}b, - {displaystyle infty }infty < y{displaystyle y}{displaystyle y} < {displaystyle infty }infty , - {displaystyle infty }infty < y′{displaystyle y'}y' < {displaystyle infty }infty };


  • f(x,y,y′){displaystyle f(x,y,y')}{displaystyle f(x,y,y')} > δ{displaystyle delta }delta, para um certo δ{displaystyle delta }{displaystyle delta } > 0{displaystyle 0}{displaystyle 0} ;

  • Existem constantes P{displaystyle P}P e Q{displaystyle Q}Q tais que: P{displaystyle P}P é o valor máximo que o módulo da derivada parcial de f{displaystyle f}f em relação a y{displaystyle y}y atinge em D{displaystyle D}D e Q{displaystyle Q}Q é o valor máximo que o módulo da derivada parcial de f{displaystyle f}f em relação a y′{displaystyle y'}y' atinge em D{displaystyle D}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')}{displaystyle y''=f(x,y,y')} torna-se y(x+h)−2y(x)+y(x−h)h2=f(x,y,y(x+h)−y(x−h)2h){displaystyle {frac {y(x+h)-2y(x)+y(x-h)}{h^{2}}}=f(x,y,{frac {y(x+h)-y(x-h)}{2h}})}{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))−2y(x(i))+y(x(i−1))h2=f(x(i),y(i),y(x(i+1))−y(x(i−1))2h){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}})}{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}{displaystyle i=2,3,...,N}.


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


A partir da equação y(x(i+1))−2y(x(i))+y(x(i−1))h2+f(x(i),y(i),y(x(i+1))−y(x(i−1))2h)=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}{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}{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}h < 2/Q{displaystyle 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çao. [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 |



  • Mecânica dos fluidos


  • CFD (Computation Fluid Dynamics)

  • Diferenciação Numérica



  • Portal da matemática




Ícone de esboço
Este artigo sobre matemática é um esboço. Você pode ajudar a Wikipédia expandindo-o.








Popular posts from this blog

Le Mesnil-Réaume

Ida-Boy-Ed-Garten

web3.py web3.isConnected() returns false always