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:

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
Funções inline

Para utilizar essa função:

f(0.2,1)
Funções inline

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)
Funções inline

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\)