Crie um algoritmo computacional para obter a solução do problema de valor inicial (PVI) a seguir, utilizando o Método de Euler Melhorado.
\left\{\begin{array}{l} y^{\prime}=\frac{1}{1+x^{2}}-2 y^{2} \\\ y(1)=0.5 \quad 1 \leq x \leq 1.6 \quad ; \quad h=0.1 \end{array}\right.
Como resposta desse exercício:
a) anexe um bloco de notas com o código desenvolvido na atividade do Classroom. No início do código, insira um comentário com seu nome, RA e qual linguagem de programação está usando (recomenda-se a utilização da linguagem R por haver material sobre essa linguagem no Classroom, mas pode ser utilizada qualquer linguagem de sua preferência);
b) considerando que a solução analítica do PVI é y(x)=\frac{x}{1+x^{2}}, apresente uma tabela com as soluções exatas (utilizando y(x) ), as soluções numéricas obtidas por Euler Melhorado e os erros absolutos, para todos os pontos da malha (veja Exemplo 2 nos slides 34-36). Complete acrescentando um gráfico do Geogebra, contendo a função y(x) e os valores numéricos obtidos para os pontos da malha (veja slide 37). Apresente a solução deste item no arquivo PDF, juntamente com a solução do Exercício 1.

Passo 1

Resumo do que o enunciado dá e pede (vou listar TUDO com clareza):
  • Equação diferencial ordinária (PVI): y'=\frac{1}{1+x^{2}}-2y^{2}
  • Condição inicial: y(1)=0{,}5
  • Intervalo: 1 \le x \le 1{,}6
  • Passo: h=0{,}1
  • Também é dada a solução analítica (para comparação): y(x)=\frac{x}{1+x^{2}}
O que você precisa (resumo das entregas):
a) fornecer o código (arquivo de texto) com comentário inicial contendo seu nome e RA (vou deixar placeholders que você substitui);
b) calcular para cada ponto da malha x=1{,}0,1{,}1,\dots,1{,}6: a solução exata y(x), a solução numérica pelo Método de Euler Melhorado e o erro absoluto; apresentar esses valores em tabela e gerar pontos que podem ser plotados no GeoGebra.

Passo 2

O Método de Euler Melhorado (também chamado de método de Heun / predictor-corrector simples) — explicação didática e fórmula:
  • Ideia: em vez de usar só a inclinação em x_n (como no Euler explícito), fazemos um “previsor” e depois corrigimos usando a média das inclinações em x_n e em x_{n+1}.
  • Notação: x_n é o ponto atual, y_n é a aproximação para y(x_n). O passo é h. A função do lado direito é f(x,y)=\dfrac{1}{1+x^{2}}-2y^{2}.
  • Predictor (Euler explícito): \tilde{y}_{n+1} = y_n + h\,f(x_n,y_n)
  • Corrector (média das inclinações): y_{n+1} = y_n + \frac{h}{2}\bigl(f(x_n,y_n)+f(x_{n+1},\tilde{y}_{n+1})\bigr)
Explicando cada símbolo:
  • f(x_n,y_n): taxa de variação (derivada) avaliada no ponto atual;
  • \tilde{y}_{n+1}: previsão do próximo valor usando Euler simples;
  • f(x_{n+1},\tilde{y}_{n+1}): taxa de variação no próximo ponto usando a previsão;
  • y_{n+1}: valor corrigido (média das inclinações * passo + y_n).
    Esse método costuma ser bem melhor que o Euler explícito e ainda é simples de implementar (sem sistemas implícitos).

Passo 3

Código (bloco de notas) em linguagem R — coloque esse texto num arquivo de texto simples (por ex. “euler_melhorado_R.txt”) e substitua os placeholders de nome/RA. O código calcula tabela e grava um CSV pronto para abrir no GeoGebra; também imprime a tabela na tela.
# Nome: SEU_NOME_AQUI
# RA: SEU_RA_AQUI
# Linguagem: R
# Método: Euler Melhorado (Heun) para y' = 1/(1+x^2) - 2 y^2
# Como usar: copie este arquivo para um .R ou .txt, edite o nome/RA e rode em R.

f <- function(x,y) {
  1/(1 + x^2) - 2*y^2
}

# malha
x0 <- 1.0
xf <- 1.6
h <- 0.1
xs <- seq(x0, xf, by = h)

# condição inicial
y0 <- 0.5

# vetor para armazenar
yn <- numeric(length(xs))
yn[1] <- y0

# iteração do Euler melhorado
for (i in 1:(length(xs)-1)) {
  xi <- xs[i]
  yi <- yn[i]
  fi <- f(xi, yi)
  y_pred <- yi + h * fi                     # preditor
  fi_next <- f(xs[i+1], y_pred)             # f(x_{n+1}, y_pred)
  yn[i+1] <- yi + (h/2) * (fi + fi_next)    # corretor
}

# solução exata
y_exact <- function(x) { x/(1 + x^2) }
ys_exact <- sapply(xs, y_exact)

# erros absolutos
errors <- abs(ys_exact - yn)

# tabela
res <- data.frame(x = xs, y_exata = ys_exact, y_euler_melhorado = yn, erro_abs = errors)
print(res, digits = 10)

# salva CSV para abrir no GeoGebra (substitua o nome se quiser)
write.csv(res, file = "tabela_euler_melhorado.csv", row.names = FALSE)

# salva também os pontos no formato que o GeoGebra aceita (duas colunas)
write.table(res[, c("x","y_euler_melhorado")], file = "pontos_geogebra.txt", row.names = FALSE, col.names = FALSE)
Observação prática: o arquivo “tabela_euler_melhorado.csv” fica pronto para abrir no GeoGebra ou Excel; o arquivo “pontos_geogebra.txt” contém pares "x y" que o GeoGebra lê como pontos.

Passo 4

Vamos aplicar o método passo a passo — explicando e calculando com calma cada operação (vou mostrar cálculos numéricos aproximados, cada valor com várias casas para você conferir na prova). Começamos no ponto inicial:
  • x_0=1{,}0, y_0=0{,}5.
  • Calcule f(x_0,y_0)=\dfrac{1}{1+1^{2}}-2(0{,}5)^{2}=\dfrac{1}{2}-2\cdot0{,}25=0{,}5-0{,}5=0.
  • Predictor: \tilde{y}_1 = y_0 + h f(x_0,y_0)=0{,}5+0{,}1\cdot 0 = 0{,}5.
  • Avalie f(x_1,\tilde{y}_1) com x_1=1{,}1: f(1{,}1,0{,}5)=\frac{1}{1+1{,}1^{2}}-2(0{,}5)^{2}=\frac{1}{2{,}21}-0{,}5\approx 0{,}4524886878-0{,}5=-0{,}0475113122.
  • Corrector: y_1 = 0{,}5 + \frac{0{,}1}{2}\bigl(0 + (-0{,}0475113122)\bigr)=0{,}5-0{,}00237556561\approx 0{,}4976244344.
Comparação com a solução exata: y(1{,}1)=\dfrac{1{,}1}{1+1{,}1^{2}}=\dfrac{1{,}1}{2{,}21}\approx 0{,}4977324263. Erro absoluto: \approx 0{,}0001079919.

Passo 5

Do passo x_1=1{,}1 para x_2=1{,}2:
  • Dados: x_1=1{,}1, y_1\approx 0{,}4976244344.
  • Calcule f(x_1,y_1)=\dfrac{1}{1+1{,}1^{2}}-2y_1^{2}.
    • Primeiro y_1^{2}\approx 0{,}2476300760 (detalhe: calculei (0{,}4976244344)^{2} por expansão).
    • Então f(x_1,y_1)\approx 0{,}4524886878 - 2\cdot 0{,}2476300760 = 0{,}4524886878 - 0{,}4952601520 \approx -0{,}0427714642.
  • Predictor: \tilde{y}_2 = y_1 + 0{,}1\cdot (-0{,}0427714642) \approx 0{,}4976244344 - 0{,}0042771464 = 0{,}49334728798.
  • Avalie f(x_2,\tilde{y}_2) com x_2=1{,}2:
    • \dfrac{1}{1+1{,}2^{2}}=\dfrac{1}{2{,}44}\approx 0{,}4098360656.
    • \tilde{y}_2^{2}\approx 0{,}2433915683 então 2\tilde{y}_2^{2}\approx 0{,}4867831366.
    • f(x_2,\tilde{y}_2)\approx 0{,}4098360656 - 0{,}4867831366 = -0{,}0769470710.
  • Corrector: y_2 = y_1 + 0{,}05\bigl(-0{,}0427714642 -0{,}0769470710\bigr) = 0{,}4976244344 - 0{,}00598592676\approx 0{,}4916385076.
Exata: y(1{,}2)=\dfrac{1{,}2}{1+1{,}2^{2}}=\dfrac{1{,}2}{2{,}44}\approx 0{,}4918032787. Erro: \approx 0{,}0001647710.

Passo 6

Do passo x_2=1{,}2 para x_3=1{,}3:
  • x_2=1{,}2, y_2\approx 0{,}4916385076.
  • y_2^{2}\approx 0{,}2417084376. Então f(x_2,y_2)=\dfrac{1}{2{,}44}-2\cdot 0{,}2417084376 \approx 0{,}4098360656 - 0{,}4834168752 = -0{,}0735808096.
  • Predictor: \tilde{y}_3 = 0{,}4916385076 + 0{,}1\cdot(-0{,}0735808096) \approx 0{,}4842804266.
  • Avalie f(1{,}3,\tilde{y}_3): \dfrac{1}{1+1{,}3^{2}}=\dfrac{1}{2{,}69}\approx 0{,}3717472119. \tilde{y}_3^{2}\approx 0{,}2345275278 então 2\tilde{y}_3^{2}\approx 0{,}4690550556. Assim f\approx 0{,}3717472119-0{,}4690550556=-0{,}0973078437.
  • Corrector: y_3 = 0{,}4916385076 + 0{,}05\bigl(-0{,}0735808096 -0{,}0973078437\bigr)\approx 0{,}4830940750.
Exata: y(1{,}3)=\dfrac{1{,}3}{1+1{,}3^{2}}=\dfrac{1{,}3}{2{,}69}\approx 0{,}4832752618. Erro: \approx 0{,}0001811868.

Passo 7

Do passo x_3=1{,}3 para x_4=1{,}4:
  • y_3\approx 0{,}4830940750. y_3^{2}\approx 0{,}2333799548.
  • f(x_3,y_3)=\dfrac{1}{2{,}69}-2\cdot 0{,}2333799548 \approx 0{,}3717472119-0{,}4667599096 = -0{,}0950126977.
  • Predictor: \tilde{y}_4 = 0{,}4830940750 + 0{,}1\cdot(-0{,}0950126977)=0{,}4735928052.
  • Avalie em x_4=1{,}4: \dfrac{1}{1+1{,}4^{2}}=\dfrac{1}{2{,}96}\approx 0{,}3378378378.
    • \tilde{y}_4^{2}\approx 0{,}2242905050 e 2\tilde{y}_4^{2}\approx 0{,}44858101.
    • f(1{,}4,\tilde{y}_4)\approx 0{,}3378378378 - 0{,}44858101 = -0{,}1107431722.
  • Corrector: y_4 = 0{,}4830940750 + 0{,}05(-0{,}0950126977 -0{,}1107431722)\approx 0{,}4728062815.
Exata: y(1{,}4)=\dfrac{1{,}4}{1+1{,}4^{2}}=\dfrac{1{,}4}{2{,}96}\approx 0{,}4729729730. Erro: \approx 0{,}0001666915.

Passo 8

Do passo x_4=1{,}4 para x_5=1{,}5:
  • y_4\approx 0{,}4728062815. y_4^{2}\approx 0{,}2235457310.
  • f(x_4,y_4)=\dfrac{1}{2{,}96}-2\cdot 0{,}2235457310 \approx 0{,}3378378378 - 0{,}4470914620 = -0{,}1092536242.
  • Predictor: \tilde{y}_5 = 0{,}4728062815 + 0{,}1\cdot (-0{,}1092536242) \approx 0{,}4618809191.
  • Avalie em x_5=1{,}5: \dfrac{1}{1+1{,}5^{2}}=\dfrac{1}{3{,}25}\approx 0{,}3076923077.
    • \tilde{y}_5^{2}\approx 0{,}2133329480 então 2\tilde{y}_5^{2}\approx 0{,}4266658960.
    • f(1{,}5,\tilde{y}_5)\approx 0{,}3076923077 - 0{,}4266658960 = -0{,}1189735883 (aprox).
  • Corrector: y_5 = 0{,}4728062815 + 0{,}05(-0{,}1092536242 -0{,}1189735883)\approx 0{,}4613949256.
Exata: y(1{,}5)=\dfrac{1{,}5}{1+1{,}5^{2}}=\dfrac{1{,}5}{3{,}25}\approx 0{,}4615384615. Erro: \approx 0{,}0001435359.

Passo 9

Do passo x_5=1{,}5 para x_6=1{,}6 (último ponto):
  • y_5\approx 0{,}4613949256. y_5^{2}\approx 0{,}2128843256.
  • f(x_5,y_5)=\dfrac{1}{3{,}25} - 2\cdot 0{,}2128843256 \approx 0{,}3076923077 - 0{,}4257686512 = -0{,}1180763435.
  • Predictor: \tilde{y}_6 = 0{,}4613949256 + 0{,}1\cdot(-0{,}1180763435)\approx 0{,}4495872913.
  • Avalie em x_6=1{,}6: \dfrac{1}{1+1{,}6^{2}}=\dfrac{1}{3{,}56}\approx 0{,}2808988764.
    • \tilde{y}_6^{2}\approx 0{,}2021287910 então 2\tilde{y}_6^{2}\approx 0{,}4042575820.
    • f(1{,}6,\tilde{y}_6)\approx 0{,}2808988764 - 0{,}4042575820 = -0{,}1233587056.
  • Corrector: y_6 = 0{,}4613949256 + 0{,}05(-0{,}1180763435 -0{,}1233587056)\approx 0{,}4493231733.
Exata: y(1{,}6)=\dfrac{1{,}6}{1+1{,}6^{2}}=\dfrac{1{,}6}{3{,}56}\approx 0{,}4494382022. Erro: \approx 0{,}0001150290.

Passo 10

Tabela final (valores arredondados para apresentação — os valores completos estão no código que dei; aqui apresento 10 casas decimais e separador decimal com vírgula conforme solicitado):
  • Para cada linha: \,x\;\; y_{\text{exata}}\;\; y_{\text{EulerMelhorado}}\;\; \text{erro absoluto}.
\begin{array}{c c c c} x & y_{\text{exata}} & y_{\text{Euler Melh.}} & \text{erro abs} \\\ \hline 1{,}0 & 0{,}5 & 0{,}5 & 0{,}0 \\\\ 1{,}1 & 0{,}4977324263 & 0{,}4976244344 & 0{,}0001079919 \\\\ 1{,}2 & 0{,}4918032787 & 0{,}4916385076 & 0{,}0001647710 \\\\ 1{,}3 & 0{,}4832752618 & 0{,}4830940750 & 0{,}0001811868 \\\\ 1{,}4 & 0{,}4729729730 & 0{,}4728062815 & 0{,}0001666915 \\\\ 1{,}5 & 0{,}4615384615 & 0{,}4613949256 & 0{,}0001435359 \\\\ 1{,}6 & 0{,}4494382022 & 0{,}4493231733 & 0{,}0001150290 \end{array}
Instrução rápida para o GeoGebra (o que fazer com os arquivos gerados pelo código):
  • Abra o GeoGebra, importe o CSV “tabela_euler_melhorado.csv” (ou cole os pares do arquivo “pontos_geogebra.txt”) para obter os pontos da aproximação, e trace a função \,y(x)=\dfrac{x}{1+x^{2}}\, para comparar graficamente.

Resposta

(a) Código (arquivo .txt) — conteúdo para copiar (ver Passo 3).
(b) Tabela de x, y_{\text{exata}}=\dfrac{x}{1+x^{2}}, y pelo Euler Melhorado e erro absoluto:
x=1{,}0\quad y_{\text{exata}}=0{,}5\quad y_{\text{EM}}=0{,}5\quad \text{erro}=0{,}0
x=1{,}1\quad y_{\text{exata}}=0{,}4977324263\quad y_{\text{EM}}=0{,}4976244344\quad \text{erro}=0{,}0001079919
x=1{,}2\quad y_{\text{exata}}=0{,}4918032787\quad y_{\text{EM}}=0{,}4916385076\quad \text{erro}=0{,}0001647710
x=1{,}3\quad y_{\text{exata}}=0{,}4832752618\quad y_{\text{EM}}=0{,}4830940750\quad \text{erro}=0{,}0001811868
x=1{,}4\quad y_{\text{exata}}=0{,}4729729730\quad y_{\text{EM}}=0{,}4728062815\quad \text{erro}=0{,}0001666915
x=1{,}5\quad y_{\text{exata}}=0{,}4615384615\quad y_{\text{EM}}=0{,}4613949256\quad \text{erro}=0{,}0001435359
x=1{,}6\quad y_{\text{exata}}=0{,}4494382022\quad y_{\text{EM}}=0{,}4493231733\quad \text{erro}=0{,}0001150290

Exercícios relacionados