Neste post vamos considerar o seguinte problema de valor de contorno (PVF) linear de segunda ordem:
\[
y”(x) = p(x)\,y'(x) + q(x)\,y(x) + r(x), \quad a \le x \le b,
\]
com condições de contorno
\[
y(a) = \alpha, \qquad y(b) = \beta.
\]
O método das diferenças finitas aproxima derivadas usando expansões de Taylor em uma malha uniforme:
\[
x_i = a + i h, \quad i = 0, 1, \dots, N+1, \quad h = \frac{b-a}{N+1}.
\]
Usando diferenças centrais:
\[
y'(x_i) \approx \frac{y_{i+1} – y_{i-1}}{2h}, \quad
y”(x_i) \approx \frac{y_{i+1} – 2y_i + y_{i-1}}{h^2},
\]
a substituição produz um sistema linear para as incógnitas \( y_1, \dots, y_N \):
\[
-\left(1 + \frac{h}{2}p_i\right) y_{i-1}
+ \left(2 + h^2 q_i\right) y_i
-\left(1 – \frac{h}{2}p_i\right) y_{i+1}
= -h^2 r_i,
\]
onde \( p_i = p(x_i) \), \( q_i = q(x_i) \) e \(r_i = r(x_i) \). Os valores de contorno \( y_0 = \alpha \) e \( y_{N+1} = \beta \) são incorporados na primeira e última equações.
O sistema resultante é tridiagonal e resolvido eficientemente usando o algoritmo de Thomas (uma eliminação gaussiana especializada).
O nosso código resolve o sistema, apresenta a tabela com a solução numérica e plota seu gráfico. Esta implementação em Java Script segue Burden & Faires, Análise Numérica.
Clique no link abaixo para usar o app e ver os exemplos.
Método das Diferenças Finitas.