Introdução
Equações Diferenciais Ordinárias - EDO - ocorrem com muita frequência na descrição de fenômenos da natureza. Um exemplo é o crescimento da população de bactérias numa colônia. Pode-se supor que sob condições ambientais favoráveis, a taxa de crescimento da colônia seja proporcional ao número de indivíduos num dado tempo: se \(y(t)\) for o número de indíviduos no tempo \(t\), tem-se a equação \(y(t)=ky(t)\).
Problema de Valor Inicial
Do Cálculo se conhece a forma com que se apresenta uma equação diferencial ordinária de orden \(n\):
\[y^{(n)}=f(x, y, y', y^{(2)}, \cdots, y^{(n-1)})\]Onde:
\[y^{\ell}= \frac{d^{\ell}y}{dx^\ell}, \ell=1,2,\cdots,n, \textrm{ } x\in \left[a, b\right] \textrm{ e } y:\left[a, b\right]\rightarrow \mathbb{R}\]Exemplo 1
\(y^{(2)}= 3y^{(1)} - 2y \) é uma EDO de ordem 2 com \(f(x, y, y') = 3y^{(1)} - 2y\)
Associadas com a equação \(y^{(n)}=f(x, y, y', y^{(2)}, \cdots, y^{(n-1)})\) podem existir condições cujo número coincide com a ordem da EDO. Se tais condições se referem a um único valor de \(x\), tem-se um problema de valor inicial - PVI, caso contrário, tem-se um problema de valor de contorno.
Exemplo 2
\[\begin{cases} y^{(2)} = & 3y^{(1)} - 2y \\ y^{(0)} = & -1\\ y'^{(0)} = & 0\\ \end{cases} \]É um PVI de 2ª ordem.
PVI de 1ª ordem.
Serão tratados aqui métodos numéricos para se conseguir os valores de \(y(x)\) em pontos distintos daqueles das condições iniciais associadas aos PVIs. O tipo de PVI que será objeto dessa parte é o de primeira ordem no formato:
\[\begin{cases} y' = f(x, y)\\ y(x_0) = y_0 = \eta, \eta \textrm{ é um número dado}\\ \end{cases} \]São condições para que um PVI de 1ª ordem tenha um única solução, se a função \(f(x,y)\):
-
É definida e contínua na faixa \(a\leq x\leq b\), \(-\infty \lt y \lt \infty\), onde \(a\) e \(b\) são finitos
-
Sendo que existe uma constante \(L\) tal que para todo \(x \in [a, b]\) e todo par de números \(y\) e \(y^*\) atende a condição de Lipschitz:
\[\left|f(x,y) - f(x, y^*)\right| \leq L \left|y - y^* \right| \]
Então existe exatamente uma função \(y(x)\) satisfazendo:
-
\(y(x)\) é contínua e diferenciável para \(x \in [a, b]\);
-
\(y'(x) = f(x, y(x)), x \in [a, b] \)
-
\(y(a) = \eta, \eta \textrm{ é um número dado} \)
Solução numérica de um PVI de 1ª Ordem
Supondo que o PVI satisfaça as condições de existência e unicidade, iremos agora tratar da solução numérica. Para isso, tomamos \(n\) subintervalos
Subdividindo o intervalo \([a, b]\) em \(n\) subintervalos de \([a, b]\), \(m \geq 1\) e fazendo \(x_j = x_0 + jh\) onde \(h=\frac{b-a}{n}, j= 0, 1, 2, \cdots, n, x_j \in [a, b]\).
O conjunto \(I_h= \{x_0,x_1, \cdots, x_n\}\) denomina-se rede ou de malha de \([a, b]\). A solução numérica \(y_{m}(x)\) é a função linear por partes cujo gráfico é um poligonal com vértices nos pontos \((x_j, y_j)\), onde \(y_j\) foi calculado usando-se alguns dos métodos numéricos dados a seguir.
Método de Euler
Seja o PVI:
\[\begin{cases} y' = f(x, y)\\ y(x_0) = y_0 = \eta, \eta \textrm{ dado}\\ \end{cases} \]Deseja-se calcular aproximações \(y_1,y_2, \cdots, y_m \) para as soluções exatas \(y(x_1), y(x_2), \cdots, y(x_n)\)
Como se desconhece o valor de \(y(x_1)\), toma-se \(y_1\) como aproximação para \(y(x_1)\). Para isso, traça-se a tangente \(T\) à curva \(y(x)\) no ponto \((x_0, y(x_0))\), cuja equação é:
\[y(x) - y(x_0) = (x-x_0)y'(x_0)\]Fazendo \(x=x_1\) e lembrando que \(y(x_0) = y_0\), \(h = x_1-x_0 \), \(y'(x_0) = f(x_0, y(x_0))\) e \(y_1 \doteq y(x_1)\) tem-se:
\[y_1 = y_0 + hf(x_0, y(x_0))\]Assim, o método de Euler consiste em calcular recursivamente a sequência \(\{y_i\}\) através das fórmulas:
e
\[y_{i+1} = y_i + hf(x_i, y_i)\]Exemplo 1
Dada o PVI:
\[\begin{cases} y' = 2x - y + 1\\ y(0) = 1\\ \end{cases} \]Na malha \([0, 2]\) com \(h=0.2\) utilizando o método de Euler.
Começamos calculando a quantidade de iterações:
\[m = \frac{b-a}{h} = \frac{2-0}{0.2} = 10\]E o desenvolvimento de cada cálculo
| Iteração | \(x_{i}\) | \(y_{i}\) | cálculo |
|---|---|---|---|
| 0 | 0 | 1 | |
| 1 | 0.2 | 1 | \[y_{1}=y_{0}+hf(x_{0},y_{0})\] \[y_{1}=y_{0}+hf(0, 1)\] \[y_{1}=1+0.2(2*0 - 1 + 1) = 1\] |
| 2 | 0.4 | 1.08 | \[y_{2}=y_{1}+hf(x_{1},y_{1})\] \[y_{2}=y_{1}+hf(0.2, 1)\] \[y_{2}=1+0.2(2*0.2 - 1 + 1) = 1.08\] |
| 3 | 0.6 | 1.224 | \[y_{3}=y_{2}+hf(x_{2},y_{2})\] \[y_{3}=y_{2}+hf(0.4, 1.08)\] \[y_{3}=1.08+0.2(2*0.4 - 1.08 + 1) = 1.224\] |
| 4 | 0.8 | 1.4192 | \[y_{4}=y_{3}+hf(x_{3},y_{3})\] \[y_{4}=y_{3}+hf(0.6, 1.224)\] \[y_{4}=1.224+0.2(2*0.6 - 1.224 + 1) = 1.4192\] |
| 5 | 1 | 1.65536 | \[y_{5}=y_{4}+hf(x_{4},y_{4})\] \[y_{5}=y_{4}+hf(0.8, 1.4192)\] \[y_{5}=1.4192+0.2(2*0.8 - 1.4192 + 1) = 1.65536\] |
| 6 | 1.2 | 1.92429 | \[y_{6}=y_{5}+hf(x_{5},y_{5})\] \[y_{6}=y_{5}+hf(1, 1.65536)\] \[y_{6}=1.65536+0.2(2*1 - 1.65536 + 1) = 1.92429\] |
| 7 | 1.4 | 2.21943 | \[y_{7}=y_{6}+hf(x_{6},y_{6})\] \[y_{7}=y_{6}+hf(1.2, 1.92429)\] \[y_{7}=1.92429+0.2(2*1.2 - 1.92429 + 1) = 2.21943\] |
| 8 | 1.6 | 2.53554 | \[y_{8}=y_{7}+hf(x_{7},y_{7})\] \[y_{8}=y_{7}+hf(1.4, 2.21943)\] \[y_{8}=2.21943+0.2(2*1.4 - 2.21943 + 1) = 2.53554\] |
| 9 | 1.8 | 2.86844 | \[y_{9}=y_{8}+hf(x_{8},y_{8})\] \[y_{9}=y_{8}+hf(1.6, 2.53554)\] \[y_{9}=2.53554+0.2(2*1.6 - 2.53554 + 1) = 2.86844\] |
| 10 | 2 | 3.21475 | \[y_{10}=y_{9}+hf(x_{9},y_{9})\] \[y_{10}=y_{9}+hf(1.8, 2.86844)\] \[y_{10}=2.86844+0.2(2*1.8 - 2.86844 + 1) = 3.21475\] |
Resultando no valor final: \(3.21475\), enquanto o resultado exato seria: \(3.27067067\)
Exemplo 2
Dada o PVI:
\[\begin{cases} y' = \frac{2}{x} - 3y + 2\\ y(0) = 0\\ \end{cases} \]Na malha \([0.2, 2]\) com \(h=0.2\) utilizando o método de Euler.
Começamos calculando a quantidade de iterações:
\[m = \frac{b-a}{h} = \frac{2-0.2}{0.2} = 9\]E o cálculo
| Iteração | \(x_{i}\) | \(y_{i}\) | Valor Exato |
|---|---|---|---|
| 0 | 0.2 | 0 | 0 |
| 1 | 0.4 | 2.4 | 1.30811 |
| 2 | 0.6 | 2.36 | 1.61635 |
| 3 | 0.8 | 2.01067 | 1.61438 |
| 4 | 1 | 1.70427 | 1.51868 |
| 5 | 1.2 | 1.48171 | 1.40599 |
| 6 | 1.4 | 1.32602 | 1.30248 |
| 7 | 1.6 | 1.21612 | 1.21511 |
| 8 | 1.8 | 1.13645 | 1.14376 |
| 9 | 2 | 1.0768 | 1.08613 |
Resultado Calculado: \(1.0768\)
Dicas de programação em HP PPL
Você pode facilitar o cálculo de funções das PVIs através da utilização de funções inline na HP Prime.
por exemplo, com a PVI do exemplo 1:
\[\begin{cases} y' = 2x - y + 1\\ y(0) = 1\\ \end{cases} \]A função \( y' = 2x - y + 1\) pode ser inserida na HP como:
f(x,y):=2x-y+1

Para utilizar essa função:
f(0.2,1)

Ainda podemos estender esse procedimento para a função do método de Euler: \(y_{i+1} = y_i + hf(x_i, y_i)\):
f(x,y,h):= y + h*(2x - y + 1)
E aplicando os valores:
f(0.2, 1, 0.2)
f(0.4, 1.08, 0.2)

Atividade
Calcule o valor das EDOs a seguir através do método de Euler:
-
PVI:
\[\begin{cases} y' = sin(x + 2y)\\ y(0) = 1\\ \end{cases} \]Na malha \([1, 10]\) com \(h=1\)
-
PVI:
\[\begin{cases} y' = ln(x) - 2y\\ y(0) = 1\\ \end{cases} \]Na malha \([0.2, 2]\) com \(h=0.2\)
-
PVI:
\[\begin{cases} y' = cos(x) - y + 1\\ y(0) = 0\\ \end{cases} \]Na malha \([0, 2]\) com \(h=0.2\)