Introdução

Outra maneira para resolver o PVI é através de passo múltiplo se a aproximação \(y_{i+1}\) depende, para seu cálculo de \(k\) resultados anteriores:

\[y_i, y_{i-1}, \cdots, y_{i-k+1}\]

Diz-se que \(k\) é o passo do método. Os métodos de Adams constituem uma subclasse dos métodos de passo múltiplo, sendo também dos mais populares. Para isso, observe que por definição uma solução exata da equação diferencial satisfaz a identidade:

\[ y(x+q) - y(x)=\int_{x}^{x+q}{f(t, y(t))} dt\]

Para quais pontos \(x\) e \(x+q\) no intervalo \([a, b]\). Os métodos a serem discutidos baseiam-se em substituir a função \(f(x, y(x))\), que é desconhecida. Por um polinômio interpolador, que assuma os valores \(f_i=f(x_i, y_i)\) num conjunto de pontos \(x_i\), onde \(y_i\) ou já foi obtido ou está sendo computado, calculando-se a integral e aceitando-se seu valor como o incremento do valor aproximado \(y_i\) entre \(x\) e \(x+q\). Vamos supor que os pontos de interpolação sejam \(x_i, x_{i-1}, \cdots, x_{i-k+1}\), então, por exemplo:

\[ y(i+1) - y(i)=\int_{x_i}^{x_{i+1}}{f(x, y)} dx\]

Método de Adams-Bashforth de Passo Dois

A ideia por trás da obtenção dos métodos de passo dois é a seguinte: supõe-se que se tenha calculado \(y_1\), por um método de passo simples; assim os valores \(f_1 = f(x_1, y_1)\) e \(f_0 = f(x_0, y_0)\) ficam disponíveis. Assim é possível aproximar \(f(x, y(x))\) pelo polinômio de 1º grau \(P_1(x)\) dado por:

\[P_1(x) = \frac{x - x_1}{x_0 - x_1}f_0 + \frac{x - x_0}{x_1 - x_0}f_1 \]

O polinômio P_1(x) satisfaz

\[ P_1(x_0) = f_0 \textrm{ e } P_1(x_1) = f_1 \to \textrm{Equação 1}\]

Fazendo \(x = x_1 + hz\):

\[\left. \begin{array}{ll} x - x_1 &= hz\\ x - x_0 &= x - (x_1 - h)\\ \textrm{}&= (x_1 - h) + h \\ \textrm{}&= hz + h \\ \textrm{}&= h(z+1) \\ \end{array} \right\} \to \textrm{Equação 2} \]

Substituindo a Equação 2 na Equação 1, tem-se:

\[P_1(x) = (z+1)f_1 - zf_0, x = x_1 + hz\]

Para \(j=1\) e \(f(x, y) \doteq P_1(x)\):

\[y_2 = y_1 + \int_{x_1}^{x_2}{[(z+1)f_1-zf_0]}dx\]

Tem-se \(dx = hdz\) e, para \(x = x_1\), \(z=0\) e para \(x=x_2\), \(z=1\). Fazendo a mudança de variável de integração em:

\[y_2 = y_1 + \int_{0}^{1}{[(z+1)f_1-zf_0]}dx\]

Integrando, chega-se a:

\[y_2 = y_1+\frac{h}{2}(3f_1-f_0)\]

De modo geral:

Esse método é chamado de Adams-Bashforth de passo dois.

Método de Adams-Bashforth de Passo Três

A ideia é aproximar \(f(x, y)\) por um polinômio interpolador de 2º Grau, que satisfaz:

\[P_2(x_0) = f_0\textrm{, } P_2(x_1) = f_1\textrm{e } P_2(x_2) = f_2 \]

Onde:

\[ P_2(x) = f_0\frac{(x-x_1)(x-x_1)}{(x_0-x_1)(x_0-x_2)} + f_1\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} + f_2\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} \]

Desenvolvendo a fórmula e integrando os valores temos:

\[y_4 = y_3 + \frac{h}{12}(23f_2 -16f_1 - 5f_0)\]

De modo Geral:

Método de Adams-Bashforth de Passo Quatro

E seguindo a analogia dos métodos anteriores, a ideia é aproximar \(f(x, y)\) por um polinômio interpolador de 3º Grau, que satisfaz:

\[P_3(x_0) = f_0\textrm{, } P_3(x_1) = f_1\textrm{, } P_3(x_2) = f_2 \textrm{ e } P_3(x_3) = f_3\]

Onde:

\[y_4 = y_3 + \frac{h}{24}(55f_3 - 59f_2 + 37f_1 - 9f_0)\]

De modo Geral:

Exemplo 1

Dada a PVI:

\[\begin{cases} y' = 2x - y + 1\\ y(0) = 1\\ \end{cases} \]

Na malha \([0, 2]\) com \(h=0.2\), como não conseguimos aplicar diretamente o Método de Adams-Bashforth para o cálculo de \(y_1\), iremos começar o processo com o método de RK4, depois passamos para o método de Adams-Bashforth de passo 2, 3 e 4:

Iteração \(x_{i}\) \(y_{i}\) Valor Exato Cálculo
Usando RK4 para calcular y1, já que é os métodos de Adams-Bashforth precisam de pelos menos 2 valores para dar continuidade
0 0 1 1 \[K_1 = f(0, 1) = 0\] \[K_2 = f(0 + \frac{0.2}{2}, 1 + \frac{0.2}{2} \times 0) = 0.2\] \[K_3 = f(0 + \frac{0.2}{2}, 1 + \frac{0.2}{2} \times 0.2) = 0.18\] \[K_4 = f(0 + 0.2, 1 + 0.2 \times 0.18) = 0.364 \] \[y_{2} = 1 + \frac{0.2}{6} (0 + 2\times 0.2 + 2\times 0.18 + 0.364) = 1.03747\]
Passando agora para o método de Adams-Bashforth de passo 2 para calcular y2
1 0.2 1.03747 1.03746 \[y_2 = y_1 + \frac{h}{2}(3f(x_{1}, y_{1}) - f(x_{0}, y_{0}))\] \[y_2 = y_1 + \frac{0.2}{2}(3f(0.2, 1.03747) - f(0, 1))\] \[f(0.2, 1.03747) = 2 \times (0.2) - (1.03747) +1 = 0.362533\] \[f(0, 1) = 2 \times (0) - (1) +1 = 0 \] \[y_2 = 1 + \frac{0.2}{2}(3 \times 0.362533 - 0) = 1.146227 \]
Passando agora para o método de Adams-Bashforth de passo 3 para calcular y3
2 0.4 1.14623 1.14064 \[y_3 = y_2 + \frac{h}{12}(23f(x_{2}, y_{2}) - 16f(x_{1}, y_{1}) + 5f(x_{0}, y_{0}))\] \[y_3 = y_2 + \frac{0.2}{12}(23f({0.4}, {1.14623}) - 16f({0.2}, {1.03747}) + 5f({0}, {1})) \] \[f(0.4, 1.14623) = 2 \times (0.4) - (1.14623) +1 = 0.653773\] \[f(0.2, 1.03747) = 2 \times (0.2) - (1.03747) +1 = 0.362533\] \[f(0, 1) = 2 \times (0) - (1) +1 = 0\] \[y_3 = y_2 + \frac{0.2}{12}(23 \times 0.653773 - 16 \times 0.362533 + 5 \times 0) = 1.300164\]
Passando para o método de Adams-Bashforth de passo 4 pra o restante dos valores
3 0.6 1.30016 1.29762 \[y_{4} = y_{3} + \frac{h}{24}(55f(x_{3}, y_{3}) -59f(x_{2}, y_{2}) + 37f(x_{1}, y_{1}) - 9f(x_{0}, y_{0}))\] \[y_{4} = 1.30016 + \frac{h}{24}(55f({0.6}, {1.30016}) -59f({0.4}, {1.14623}) + 37f({0.2}, {1.03747}) - 9f({0}, {1}))\] \[f(0.6, 1.30016) = *0.6 - 1.30016 + 1 = 0.899836\] \[f(0.4, 1.14623) = *0.4 - 1.14623 + 1 = 0.653773\] \[f(0.2, 1.03747) = *0.2 - 1.03747 + 1 = 0.362533\] \[f(0, 1) = *0 - 1 + 1 = 0\] \[y_{4} = 1.30016 + \frac{0.2}{24}(55\times 0.899836 - 59\times 0.653773 + 37\times 0.362533 -9\times 0) = 1.50293 \]
4 0.8 1.50293 1.49866 \[y_{5} = y_{4} + \frac{h}{24}(55f(x_{4}, y_{4}) -59f(x_{3}, y_{3}) + 37f(x_{2}, y_{2}) - 9f(x_{1}, y_{1}))\] \[y_{5} = 1.50293 + \frac{h}{24}(55f({0.8}, {1.50293}) -59f({0.6}, {1.30016}) + 37f({0.4}, {1.14623}) - 9f({0.2}, {1.03747}))\] \[f(0.8, 1.50293) = *0.8 - 1.50293 + 1 = 1.09707\] \[f(0.6, 1.30016) = *0.6 - 1.30016 + 1 = 0.899836\] \[f(0.4, 1.14623) = *0.4 - 1.14623 + 1 = 0.653773\] \[f(0.2, 1.03747) = *0.2 - 1.03747 + 1 = 0.362533\] \[y_{5} = 1.50293 + \frac{0.2}{24}(55\times 1.09707 - 59\times 0.899836 + 37\times 0.653773 -9\times 0.362533) = 1.73773 \]
5 1 1.73773 1.73576 \[y_{6} = y_{5} + \frac{h}{24}(55f(x_{5}, y_{5}) -59f(x_{4}, y_{4}) + 37f(x_{3}, y_{3}) - 9f(x_{2}, y_{2}))\] \[y_{6} = 1.73773 + \frac{h}{24}(55f({1}, {1.73773}) -59f({0.8}, {1.50293}) + 37f({0.6}, {1.30016}) - 9f({0.4}, {1.14623}))\] \[f(1, 1.73773) = *1 - 1.73773 + 1 = 1.26227\] \[f(0.8, 1.50293) = *0.8 - 1.50293 + 1 = 1.09707\] \[f(0.6, 1.30016) = *0.6 - 1.30016 + 1 = 0.899836\] \[f(0.4, 1.14623) = *0.4 - 1.14623 + 1 = 0.653773\] \[y_{6} = 1.73773 + \frac{0.2}{24}(55\times 1.26227 - 59\times 1.09707 + 37\times 0.899836 -9\times 0.653773) = 2.00529 \]
6 1.2 2.00529 2.00239 \[y_{7} = y_{6} + \frac{h}{24}(55f(x_{6}, y_{6}) -59f(x_{5}, y_{5}) + 37f(x_{4}, y_{4}) - 9f(x_{3}, y_{3}))\] \[y_{7} = 2.00529 + \frac{h}{24}(55f({1.2}, {2.00529}) -59f({1}, {1.73773}) + 37f({0.8}, {1.50293}) - 9f({0.6}, {1.30016}))\] \[f(1.2, 2.00529) = *1.2 - 2.00529 + 1 = 1.39471\] \[f(1, 1.73773) = *1 - 1.73773 + 1 = 1.26227\] \[f(0.8, 1.50293) = *0.8 - 1.50293 + 1 = 1.09707\] \[f(0.6, 1.30016) = *0.6 - 1.30016 + 1 = 0.899836\] \[y_{7} = 2.00529 + \frac{0.2}{24}(55\times 1.39471 - 59\times 1.26227 + 37\times 1.09707 -9\times 0.899836) = 2.29469 \]
7 1.4 2.29469 2.29319 \[y_{8} = y_{7} + \frac{h}{24}(55f(x_{7}, y_{7}) -59f(x_{6}, y_{6}) + 37f(x_{5}, y_{5}) - 9f(x_{4}, y_{4}))\] \[y_{8} = 2.29469 + \frac{h}{24}(55f({1.4}, {2.29469}) -59f({1.2}, {2.00529}) + 37f({1}, {1.73773}) - 9f({0.8}, {1.50293}))\] \[f(1.4, 2.29469) = *1.4 - 2.29469 + 1 = 1.50531\] \[f(1.2, 2.00529) = *1.2 - 2.00529 + 1 = 1.39471\] \[f(1, 1.73773) = *1 - 1.73773 + 1 = 1.26227\] \[f(0.8, 1.50293) = *0.8 - 1.50293 + 1 = 1.09707\] \[y_{8} = 2.29469 + \frac{0.2}{24}(55\times 1.50531 - 59\times 1.39471 + 37\times 1.26227 -9\times 1.09707) = 2.60581 \]
8 1.6 2.60581 2.60379 \[y_{9} = y_{8} + \frac{h}{24}(55f(x_{8}, y_{8}) -59f(x_{7}, y_{7}) + 37f(x_{6}, y_{6}) - 9f(x_{5}, y_{5}))\] \[y_{9} = 2.60581 + \frac{h}{24}(55f({1.6}, {2.60581}) -59f({1.4}, {2.29469}) + 37f({1.2}, {2.00529}) - 9f({1}, {1.73773}))\] \[f(1.6, 2.60581) = *1.6 - 2.60581 + 1 = 1.59419\] \[f(1.4, 2.29469) = *1.4 - 2.29469 + 1 = 1.50531\] \[f(1.2, 2.00529) = *1.2 - 2.00529 + 1 = 1.39471\] \[f(1, 1.73773) = *1 - 1.73773 + 1 = 1.26227\] \[y_{9} = 2.60581 + \frac{0.2}{24}(55\times 1.59419 - 59\times 1.50531 + 37\times 1.39471 -9\times 1.26227) = 2.93174 \]
9 1.8 2.93174 2.9306 \[y_{10} = y_{9} + \frac{h}{24}(55f(x_{9}, y_{9}) -59f(x_{8}, y_{8}) + 37f(x_{7}, y_{7}) - 9f(x_{6}, y_{6}))\] \[y_{10} = 2.93174 + \frac{h}{24}(55f({1.8}, {2.93174}) -59f({1.6}, {2.60581}) + 37f({1.4}, {2.29469}) - 9f({1.2}, {2.00529}))\] \[f(1.8, 2.93174) = *1.8 - 2.93174 + 1 = 1.66826\] \[f(1.6, 2.60581) = *1.6 - 2.60581 + 1 = 1.59419\] \[f(1.4, 2.29469) = *1.4 - 2.29469 + 1 = 1.50531\] \[f(1.2, 2.00529) = *1.2 - 2.00529 + 1 = 1.39471\] \[y_{10} = 2.93174 + \frac{0.2}{24}(55\times 1.66826 - 59\times 1.59419 + 37\times 1.50531 -9\times 1.39471) = 3.27208 \]
10 2
3.27208288
3.27067067
 

Exemplo 2

Dada a PVI:

\[\begin{cases} y' = \sqrt{x^3 + 2y^2}\\ y(0) = 0\\ \end{cases} \]

Na malha \([0, 1]\) com \(h=0.1\), começando calculando os valores de \(y_1, y_2 \textrm{ e } y_3\) pelo método de RK4 depois passamos para o método de Adams-Bashforth de passo 4:

Iteração \(x_{i}\) \(y_{i}\) Valor Exato Cálculo
Usando RK4 para calcular y1, já que é os métodos de Adams-Bashforth precisam de pelos menos 2 valores para dar continuidade
0 0 0 0 \[K_1 = f(0, 0) = 0\] \[K_2 = f(0 + \frac{0.1}{2}, 0 + \frac{0.1}{2} \times 0) = 0.0111803\] \[K_3 = f(0 + \frac{0.1}{2}, 0 + \frac{0.1}{2} \times 0.0111803) = 0.0112083\] \[K_4 = f(0 + 0.1, 0 + 0.1 \times 0.0112083) = 0.0316625 \] \[y_{2} = 0 + \frac{0.1}{6} (0 + 2\times 0.0111803 + 2\times 0.0112083 + 0.0316625) = 0.00127399 \]
1 0.1 0.00127399 0.00126606 \[K_1 = f(0.1, 0.00127399) = 0.0316741\] \[K_2 = f(0.1 + \frac{0.1}{2}, 0.00127399 + \frac{0.1}{2} \times 0.0316741) = 0.0582352\] \[K_3 = f(0.1 + \frac{0.1}{2}, 0.00127399 + \frac{0.1}{2} \times 0.0582352) = 0.0583956\] \[K_4 = f(0.1 + 0.1, 0.00127399 + 0.1 \times 0.0583956) = 0.0900067 \] \[y_{3} = 0.00127399 + \frac{0.1}{6} (0.0316741 + 2\times 0.0582352 + 2\times 0.0583956 + 0.0900067) = 0.0071897 \]
2 0.2 0.0071897 0.00718097 \[K_1 = f(0.2, 0.0071897) = 0.0900188\] \[K_2 = f(0.2 + \frac{0.1}{2}, 0.0071897 + \frac{0.1}{2} \times 0.0900188) = 0.126089\] \[K_3 = f(0.2 + \frac{0.1}{2}, 0.0071897 + \frac{0.1}{2} \times 0.126089) = 0.126448\] \[K_4 = f(0.2 + 0.1, 0.0071897 + 0.1 \times 0.126448) = 0.166694 \] \[y_{4} = 0.0071897 + \frac{0.1}{6} (0.0900188 + 2\times 0.126089 + 2\times 0.126448 + 0.166694) = 0.0198861 \]
Passando para o método de Adams-Bashforth de passo 4 pra o restante dos valores
3 0.3 0.0198861 0.0198767 \[y_{4} = y_{3} + \frac{h}{24}(55f(x_{3}, y_{3}) -59f(x_{2}, y_{2}) + 37f(x_{1}, y_{1}) - 9f(x_{0}, y_{0}))\] \[y_{4} = 0.0198861 + \frac{h}{24}(55f({0.3}, {0.0198861}) -59f({0.2}, {0.0071897}) + 37f({0.1}, {0.00127399}) - 9f({0}, {0}))\] \[f(0.3, 0.0198861) = \sqrt{0.3^3 + 2\times 0.0198861^2} = 0.166706\] \[f(0.2, 0.0071897) = \sqrt{0.2^3 + 2\times 0.0071897^2} = 0.0900188\] \[f(0.1, 0.00127399) = \sqrt{0.1^3 + 2\times 0.00127399^2} = 0.0316741\] \[f(0, 0) = \sqrt{0^3 + 2\times 0^2} = 0\] \[y_{4} = 0.0198861 + \frac{0.1}{24}(55\times 0.166706 - 59\times 0.0900188 + 37\times 0.0316741 -9\times 0) = 0.0408431 \]
4 0.4 0.0408431 0.0410591 \[y_{5} = y_{4} + \frac{h}{24}(55f(x_{4}, y_{4}) -59f(x_{3}, y_{3}) + 37f(x_{2}, y_{2}) - 9f(x_{1}, y_{1}))\] \[y_{5} = 0.0408431 + \frac{h}{24}(55f({0.4}, {0.0408431}) -59f({0.3}, {0.0198861}) + 37f({0.2}, {0.0071897}) - 9f({0.1}, {0.00127399}))\] \[f(0.4, 0.0408431) = \sqrt{0.4^3 + 2\times 0.0408431^2} = 0.259492\] \[f(0.3, 0.0198861) = \sqrt{0.3^3 + 2\times 0.0198861^2} = 0.166706\] \[f(0.2, 0.0071897) = \sqrt{0.2^3 + 2\times 0.0071897^2} = 0.0900188\] \[f(0.1, 0.00127399) = \sqrt{0.1^3 + 2\times 0.00127399^2} = 0.0316741\] \[y_{5} = 0.0408431 + \frac{0.1}{24}(55\times 0.259492 - 59\times 0.166706 + 37\times 0.0900188 -9\times 0.0316741) = 0.0720183 \]
5 0.5 0.0720183 0.0723088 \[y_{6} = y_{5} + \frac{h}{24}(55f(x_{5}, y_{5}) -59f(x_{4}, y_{4}) + 37f(x_{3}, y_{3}) - 9f(x_{2}, y_{2}))\] \[y_{6} = 0.0720183 + \frac{h}{24}(55f({0.5}, {0.0720183}) -59f({0.4}, {0.0408431}) + 37f({0.3}, {0.0198861}) - 9f({0.2}, {0.0071897}))\] \[f(0.5, 0.0720183) = \sqrt{0.5^3 + 2\times 0.0720183^2} = 0.367931\] \[f(0.4, 0.0408431) = \sqrt{0.4^3 + 2\times 0.0408431^2} = 0.259492\] \[f(0.3, 0.0198861) = \sqrt{0.3^3 + 2\times 0.0198861^2} = 0.166706\] \[f(0.2, 0.0071897) = \sqrt{0.2^3 + 2\times 0.0071897^2} = 0.0900188\] \[y_{6} = 0.0720183 + \frac{0.1}{24}(55\times 0.367931 - 59\times 0.259492 + 37\times 0.166706 -9\times 0.0900188) = 0.114869 \]
6 0.6 0.114869 0.115199 \[y_{7} = y_{6} + \frac{h}{24}(55f(x_{6}, y_{6}) -59f(x_{5}, y_{5}) + 37f(x_{4}, y_{4}) - 9f(x_{3}, y_{3}))\] \[y_{7} = 0.114869 + \frac{h}{24}(55f({0.6}, {0.114869}) -59f({0.5}, {0.0720183}) + 37f({0.4}, {0.0408431}) - 9f({0.3}, {0.0198861}))\] \[f(0.6, 0.114869) = \sqrt{0.6^3 + 2\times 0.114869^2} = 0.492331\] \[f(0.5, 0.0720183) = \sqrt{0.5^3 + 2\times 0.0720183^2} = 0.367931\] \[f(0.4, 0.0408431) = \sqrt{0.4^3 + 2\times 0.0408431^2} = 0.259492\] \[f(0.3, 0.0198861) = \sqrt{0.3^3 + 2\times 0.0198861^2} = 0.166706\] \[y_{7} = 0.114869 + \frac{0.1}{24}(55\times 0.492331 - 59\times 0.367931 + 37\times 0.259492 -9\times 0.166706) = 0.170998 \]
7 0.7 0.170998 0.171369 \[y_{8} = y_{7} + \frac{h}{24}(55f(x_{7}, y_{7}) -59f(x_{6}, y_{6}) + 37f(x_{5}, y_{5}) - 9f(x_{4}, y_{4}))\] \[y_{8} = 0.170998 + \frac{h}{24}(55f({0.7}, {0.170998}) -59f({0.6}, {0.114869}) + 37f({0.5}, {0.0720183}) - 9f({0.4}, {0.0408431}))\] \[f(0.7, 0.170998) = \sqrt{0.7^3 + 2\times 0.170998^2} = 0.633625\] \[f(0.6, 0.114869) = \sqrt{0.6^3 + 2\times 0.114869^2} = 0.492331\] \[f(0.5, 0.0720183) = \sqrt{0.5^3 + 2\times 0.0720183^2} = 0.367931\] \[f(0.4, 0.0408431) = \sqrt{0.4^3 + 2\times 0.0408431^2} = 0.259492\] \[y_{8} = 0.170998 + \frac{0.1}{24}(55\times 0.633625 - 59\times 0.492331 + 37\times 0.367931 -9\times 0.259492) = 0.242165 \]
8 0.8 0.242165 0.242576 \[y_{9} = y_{8} + \frac{h}{24}(55f(x_{8}, y_{8}) -59f(x_{7}, y_{7}) + 37f(x_{6}, y_{6}) - 9f(x_{5}, y_{5}))\] \[y_{9} = 0.242165 + \frac{h}{24}(55f({0.8}, {0.242165}) -59f({0.7}, {0.170998}) + 37f({0.6}, {0.114869}) - 9f({0.5}, {0.0720183}))\] \[f(0.8, 0.242165) = \sqrt{0.8^3 + 2\times 0.242165^2} = 0.793276\] \[f(0.7, 0.170998) = \sqrt{0.7^3 + 2\times 0.170998^2} = 0.633625\] \[f(0.6, 0.114869) = \sqrt{0.6^3 + 2\times 0.114869^2} = 0.492331\] \[f(0.5, 0.0720183) = \sqrt{0.5^3 + 2\times 0.0720183^2} = 0.367931\] \[y_{9} = 0.242165 + \frac{0.1}{24}(55\times 0.793276 - 59\times 0.633625 + 37\times 0.492331 -9\times 0.367931) = 0.330295 \]
9 0.9 0.330295 0.330751 \[y_{10} = y_{9} + \frac{h}{24}(55f(x_{9}, y_{9}) -59f(x_{8}, y_{8}) + 37f(x_{7}, y_{7}) - 9f(x_{6}, y_{6}))\] \[y_{10} = 0.330295 + \frac{h}{24}(55f({0.9}, {0.330295}) -59f({0.8}, {0.242165}) + 37f({0.7}, {0.170998}) - 9f({0.6}, {0.114869}))\] \[f(0.9, 0.330295) = \sqrt{0.9^3 + 2\times 0.330295^2} = 0.973236\] \[f(0.8, 0.242165) = \sqrt{0.8^3 + 2\times 0.242165^2} = 0.793276\] \[f(0.7, 0.170998) = \sqrt{0.7^3 + 2\times 0.170998^2} = 0.633625\] \[f(0.6, 0.114869) = \sqrt{0.6^3 + 2\times 0.114869^2} = 0.492331\] \[y_{10} = 0.330295 + \frac{0.1}{24}(55\times 0.973236 - 59\times 0.793276 + 37\times 0.633625 -9\times 0.492331) = 0.437536 \]
10 1
0.43753559
0.43804355
 

Resolvendo EDOs em Python:

Em Python, a resolução numérica de EDOs pode ser feita com solve_ivp, da biblioteca scipy:

from scipy.integrate import solve_ivp

solucao = solve_ivp(funcao, intervalo, condicao_inicial, t_eval=pontos)

Onde funcao representa a EDO, intervalo define o início e o fim do cálculo, condicao_inicial contém o valor inicial de \(y\), e t_eval indica os pontos em que a solução deve ser retornada.

Quando precisamos controlar a malha, criamos explicitamente os pontos com o passo desejado e passamos essa lista para t_eval.

Veja alguns exemplos de uso:

Iremos resolver o seguinte PVI:

\[\begin{cases} y' = 2x - y + 1\\ y(0) = 1\\ \end{cases} \]

Na malha \([0, 2]\) com \(h=0.2\)

Em Python:

import numpy as np
from scipy.integrate import solve_ivp

def f(x, y):
    return 2*x - y[0] + 1

pontos = np.arange(0, 2.0 + 0.2, 0.2)
solucao = solve_ivp(f, (0, 2), [1], t_eval=pontos)

print(solucao.y[0, -1])

Podemos interpretar o resultado da seguinte forma: no ponto final, \(y \approx 3.27067\).

Organizando o código

Uma forma prática é criar uma função auxiliar para receber o intervalo, a condição inicial e o passo:

def resolver_pvi(funcao, x0, xf, y0, h):
    pontos = np.arange(x0, xf + h, h)
    return solve_ivp(funcao, (x0, xf), [y0], t_eval=pontos)

solucao = resolver_pvi(f, 0, 2, 1, 0.2)
print(solucao.y[0])

Atividade

Calcule o valor das EDOs a seguir através dos métodos solicitados

  • PVI:

    \[\begin{cases} y' = x - 3y^2\\ y(0) = 1\\ \end{cases} \]

    Na malha \([0, 1]\) com \(h=0.2\)

    Utilize o método RK2 para calcular o primeiro valor e \(y\) e depois para o método de Adams-Bashforth de passo 2

  • PVI:

    \[\begin{cases} y' = x - y^3 - 3\\ y(0) = 1\\ \end{cases} \]

    Na malha \([1, 5]\) com \(h=0.5\)

    Utilize o método RK4 para calcular o primeiro valor e \(y\), Adams-Bashforth de passo 2 para \(y_2\), Adams-Bashforth de passo 3 para \(y_3\) e depois passe para o método de Adams-Bashforth de passo 4

  • PVI:

    \[\begin{cases} y' = sen(\frac{x^2}{y})\\ y(0) = 1\\ \end{cases} \]

    Na malha \([0, 10]\) com \(h=1\)

    Utilize o método RK4 para calcular o primeiro valor e \(y\) e depois utilize o método de Adams-Bashforth de passo 4