Logo Passei Direto
Buscar

EDOs 1ª Ordem em Python

User badge image
Roberta

em

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

Equações diferenciais ordinárias de 1ª
ordem em Python
Você vai conhecer os modelos matemáticos usados na resolução de equações diferenciais ordinárias de
primeira ordem na área da engenharia.
Prof. David Fernandes Cruz Moura
1. Itens iniciais
Preparação
Antes de iniciar este estudo, busque por tutoriais que mostrem o uso do Google Colab.
Objetivos
Reconhecer o método de Euler para resolução numérica de equações diferenciais ordinárias de
primeira ordem, com aplicação em situações-problema por meio da implementação computacional em
Python.
 
Reconhecer o método de Runge-Kutta para a resolução numérica de equações diferenciais ordinárias
de primeira ordem, com aplicação em situações-problema por meio da implementação computacional
em Python.
Introdução
Neste vídeo, vamos conhecer os métodos para resolver equações diferenciais ordinárias de primeira ordem.
Abordaremos os métodos numéricos de Euler e Runge-Kutta, aprendendo a aplicá-los na resolução de
situações-problemas por meio da implementação computacional em Python, transformando teoria em
aplicação prática.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
• 
• 
1. Método de Euler
Fundamentos de equações diferenciais ordinárias de 1°
ordem
Neste vídeo, introduziremos o conceito de equações diferenciais ordinárias (EDOs) de primeira ordem e
problemas de valor inicial (PVIs). Exploremos como encontrar soluções analíticas por integração, o papel da
condição inicial para obter soluções particulares e a distinção entre soluções gerais e particulares. 
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Vamos estabelecer a base para o nosso estudo introduzindo o conceito de equações diferenciais ordinárias
(EDOs) de primeira ordem e os problemas de valor inicial (PVIs). Veremos como, em certos casos, podemos
encontrar soluções exatas ou analíticas para essas equações, utilizando técnicas de integração.
Equação diferencial ordinária (EDO) de 1ª ordem
É uma equação que envolve uma função incógnita de uma única variável independente e uma ou mais de suas
derivadas em relação a essa variável.
 
O termo “ordinária” distingue essas equações das equações diferenciais parciais (EDPs), que envolvem
funções de múltiplas variáveis e suas derivadas parciais, que não vamos abordar.
 
A ordem de uma EDO é determinada pela derivada de maior ordem presente na equação. Veja! 
Uma EDO de ordem envolve, portanto, apenas a primeira derivada da função incógnita. Se é a
função incógnita de variável dependente, e a variável independente, uma EDO de ordem pode ser
expressa genericamente como:
Em geral, podemos isolar a derivada , obtendo a forma normal ou explícita:
Em que é uma função conhecida de e . Nosso objetivo ao resolver uma EDO é encontrar a
função que satisfaz essa equação.
Exemplo
A função é a solução da equação diferencial linear de primeira ordem. Veja!
No intervalo . Note que em que . Além disso, se , a
derivada . Substituindo na equação diferencial, temos:
Logo, a equação diferencial é satisfeita para todo .
Soluções analíticas
Em alguns casos, especialmente quando a função depende apenas de , ou seja, , a
EDO de 1 a ordem é simplificada para:
Para encontrar , basta integrar ambos os lados da equação em relação a :
Isso resulta em:
Em que é uma primitiva de , ou seja, e é a constante de integração. Essa solução 
 é chamada de solução geral da EDO, pois representa uma família de curvas, cada uma
correspondente a um valor diferente de .
Exemplo 1
Vamos resolver a EDO:
Essa é uma EDO de ordem em que , que depende apenas de .
 
Integramos em relação a para encontrar :
Essa é a solução geral da EDO.
Exemplo 2
Vamos encontrar agora a solução geral da EDO:
A variável independente é e a dependente é . 
 
Integrando, temos:
Logo, essa é a solução geral.
Problemas de valor inicial (PVI)
A solução geral de uma EDO de ordem contém uma constante arbitrária . Para determinar um valor
específico para e, assim, encontrar uma solução particular, precisamos de uma condição adicional.
 
Essa condição, chamada de condição inicial, especifica o valor da função em um ponto , ou seja, 
.
 
Uma EDO de ordem, juntamente com uma condição inicial, forma um problema de valor inicial (PVI).
Matematicamente, um PVI de ordem é expresso como:
Exemplo 3
Vamos resolver o problema de valor inicial (PVI):
Vamos ver a solução! 
 
Primeiro, encontramos a solução geral.
Agora, aplicamos a condição inicial :
Assim, a solução particular do PVI é:
Exemplo 4
Resolva o PVI:
Vejamos a solução!
 
A solução geral é:
Como estamos considerando , podemos simplificar para:
Agora, aplicamos a condição inicial :
Portanto, a solução particular é:
Neste tópico, exploramos os conceitos de EDOs de 1ª ordem e problemas de valor inicial (PVIs), destacando
casos em que a solução analítica pode ser obtida por meio de integração direta. Observamos que a solução
geral dessas equações inclui uma constante de integração, que é determinada a partir da condição inicial,
resultando em uma solução particular. Entretanto, como veremos a seguir, muitos problemas práticos geram
EDOs que não podem ser resolvidas de forma tão direta, tornando necessário o uso de métodos numéricos
para obter soluções aproximadas.
Atividade 1
Considerando a resolução de equações diferenciais ordinárias (EDOs) de primeira ordem com condições
iniciais (PVIs), assinale a alternativa correta.
A Toda EDO de primeira ordem admite solução analítica por integração direta.
B A constante de integração presente na solução geral é sempre arbitrária, mesmo quando há uma
condição inicial.
C Quando a EDO admite solução analítica, a condição inicial permite determinar a constante de
integração e, assim, obter a solução particular.
D Problemas práticos raramente envolvem EDOs que exigem métodos numéricos, pois a maioria das EDOs
pode ser resolvida de forma direta.
E O uso de métodos numéricos é exclusivo para EDOs de ordem superior, não se aplicando às de
primeira ordem.
A alternativa C está correta.
A solução geral possui uma constante de integração, definida pela condição inicial, resultando na solução
particular.
A alternativa A está incorreta, pois nem toda EDO admite solução analítica direta. Muitas exigem métodos
numéricos.
A alternativa B está incorreta porque a constante de integração é determinada a partir da condição inicial,
deixando de ser arbitrária.
A alternativa D está incorreta, pois, na prática, muitas EDOs não podem ser resolvidas diretamente e, por
isso, os métodos numéricos são utilizados.
A alternativa E está incorreta, pois os numéricos podem ser aplicados a EDOs de qualquer ordem, incluindo
as de primeira ordem.
Método de Euler
Assista ao vídeo a seguir que aborda o método de Euler para resolver EDOs de primeira ordem quando
soluções analíticas não são viáveis. Aprenda os fundamentos do método, como ele utiliza a inclinação da reta
tangente para aproximar a solução passo a passo e a fórmula iterativa. 
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Nem sempre é possível resolver algumas equações diferenciais ordinárias (EDOs) de primeira ordem de forma
analítica, ou seja, encontrar uma fórmula exata para a solução. No entanto, é necessário calcular
aproximações numéricas para a solução. Existe uma enorme “família” de metodologias para construir soluções
numéricas para problemas de valor inicial. O método de Euler é o ponto de partida mais simples e intuitivo
para entender como essas aproximações são construídas. 
Fundamentos do método de Euler
Considere o seguinte problema de valor inicial (PVI) de 1ª ordem:
Com condição inicial:
O que significa essa equação?
 
 representa a inclinação da reta tangente à curva da solução no ponto .
 
O método de Euler explora essa ideia de inclinação para construir, passo a passo, uma aproximação da
curva solução.
 
Seu funcionamento consiste em:
 
Se conhecemos , então a inclinação da reta tangente nesse ponto é .
 
Para valorespróximos de , podemos aproximar a função pela reta tangente: 
 
Para avançar até (onde é o passo): 
 
Assim, iteramos esse processo, sempre usando o último ponto como base.
Passo a passo do método de Euler
Agora que você já compreende os fundamentos, veja o passo a passo para aplicar o método de Euler:
Defina o PVI
Especifique a EDO e a condição inicial .
Escolha o ponto final
Determine até onde quer calcular a solução, ou seja, .
Escolha o passo 
Inicialização
• 
• 
• 
• 
• 
• 
• 
Iteração
Para cada passo :
Calcule a inclinação: 
Atualize 
Atualize 
Resultado
Após passos, será a aproximação de .
Vamos ver agora alguns exemplos na utilização da metodologia. Acompanhe!
Exemplo 1
Considere a EDO de primeira ordem:
Nosso objetivo é determinar o valor da função no ponto , sabendo que a condição inicial é 
.
 
Pelo passo 3, vamos obter o valor de para em que e 
 
Para isso, utilizamos a fórmula de Euler, dada por:
Nesse caso, podemos substituir a função pela expressão fornecida na EDO, ou seja, 
. Assim, a fórmula de Euler para esse problema passa a ser:
• 
• 
• 
Como já possuímos a expressâo matemática que será avaliada e o valor inicial da função, estamos diante de
um problema de valor inicial, e , ou seja, . De posse dessas informações,
iniciamos os cálculos passo a passo. Começamos com o ponto inicial: quando , temos que .
Aplicamos, então, a fórmula de Euler para determinar o valor de no próximo ponto:
Avançamos para o próximo valor de , que será . Assim, 
.
 
Repetimos o procedimento:
O novo valor de é . Agora temos .
 
Prosseguindo:
Avançamos novamente:
Calculamos agora o valor :
E agora:
Atualizamos:
Logo:
Ao final do processo, determinamos que o valor aproximado da função no ponto é 
utilizando o método de Euler com cinco subintervalos de comprimento 0,2 .
Exemplo 2
Vamos ver um segundo exemplo em que queremos obter uma aproximação para , em relação à EDO de
primeira ordem, com valor inicial:
Sabemos que a fórmula de Euler é dada por:
Em que, neste problema, a função .
O intervalo considerado é de 0 a 1, e será dividido em partes iguais. Logo, o passo será:
A condição inicial é: e .
 
Agora, vamos realizar as 6 iterações. Acompanhe!
Iteração 1
Calculamos:
Aplicamos a fórmula de Euler:
E o próximo valor de , em que (0,1667, 2,85852).
Iteração 2
Calculamos:
Aplicamos a fórmula de Euler:
E o próximo valor de (0,3334,
2,74512).
Iteração 3
Calculamos:
Aplicamos a fórmula de Euler:
E o próximo valor de . Com isso, 
.
Iteração 4
Calculamos:
Aplicamos a fórmula de Euler:
E o próximo valor de .
Iteração 5
Calculamos:
Aplicamos a fórmula de Euler:
E o próximo valor de e (0,8335, 2,53464).
Iteração 6
Calculamos:
Aplicamos a fórmula de Euler:
O último valor de é:
O resultado, após seis iterações usando o método de Euler, é a aproximação:
Exemplo 3
Considere a seguinte equação diferencial ordinária (EDO):
Com a condição inicial:
Nosso objetivo é aproximar o valor de y no ponto , utilizando o método de Euler com N = 5 iterações.
Acompanhe os passos!
Determinar o tamanho do passo 
Aplicar a fórmula de Euler
Com:
Condição inicial
Vejamos agora as 5 iterações. 
Iteração 1
Iteração 2
Iteração 3
Iteração 4
Iteração 5
Utilizando o método de Euler com N = 5 subintervalos, obtemos a aproximação:
O método de Euler nos fornece uma maneira sistemática e relativamente simples de aproximar soluções para
problemas de valor inicial (PVI) de 1ª ordem. Sua base geométrica, utilizando a reta tangente, é intuitiva. Para
problemas que exigem maior precisão, ou para evitar um número excessivo de passos e, portanto, de cálculos,
métodos mais sofisticados são necessários, como o método de Euler melhorado, que veremos a seguir.
Atividade 2
Um tanque de água possui um dispositivo que regula a vazão de entrada e saída. A variação do volume de
água no tanque, ao longo do tempo (em horas), pode ser modelada pela seguinte equação diferencial
ordinária de 1 ª ordem:
 
Sabendo que, inicialmente, o volume no tanque é de 50 litros, ou seja, . Com passo 
horas, qual das alternativas a seguir apresenta o valor aproximado de , ou seja, após 1 hora?
A 45,25 litros 
B 47,50 litros 
C 48,00 litros
D 44,00 litros 
E 54,85 litros
A alternativa A está correta.
Passo 1: Definição dos dados
Iteração 1: de t = 0 até t = 0,5
Iteração 2: de t = 0,5 até t = 1
Portanto, o volume após 1 hora é aproximadamente: 45,25 litros.
Implementação do método de Euler em Python
Neste vídeo, vamos demonstrar a implementação do método de Euler em Python para resolver problemas de
valor inicial. Você vai aprender a traduzir a lógica do método em um algoritmo, definindo a EDO, inicializando
variáveis e iterando para obter a solução numérica. Veja também como a programação facilita a aplicação do
método para um grande número de passos.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Você já conhece a teoria e a aplicação manual do método de Euler tradicional para resolver problemas de valor
inicial (PVIs) de primeira ordem. Embora a resolução manual seja importante para entender o funcionamento
dos métodos, ela se torna impraticável para um grande número de passos. É aqui que a programação entra
como uma ferramenta poderosa. Vamos desenvolver um algoritmo em Python para implementar o método de
Euler.
 
Nesta prática, vamos executar o método de Euler com as EDOs usadas no exemplo. Em seguida vamos
detalhar os pontos cruciais do funcionamento da implementação do código. Para realizá-la você deve:
 
Passo1: replique o código a seguir em uma célula do Google Colab.
 
Passo2: descomente a linha 4 removendo “#“ para executar a função desejada. 
 
Passo 3: preencha as linhas 9, 10, 11, 17 e 18 com os valores usados nos exemplos.
 
Passo 4: execute.
 
Passo 5: repita o processo para outras funções, comentando agora a linha 4, descomentando as
respectivas linhas (5 e 6) e refazendo o passo 3 com os valores das respectivas funções.
 
Veja a linha de códigos.
• 
• 
• 
• 
• 
python
 1. import numpy as np 
 2. 
 3. def f(x,y): 
 4. #return 3*x-1 
 5. #return np.cos(y)+np.sin(y)
 6. #return y**2 -x
 7. 
 8. #Inicialização
 9. N = ??
10. x_inicial = ??
11. x_final = ??
12. h = (x_final - x_inicial)/N 
13. #cria vetor x e y 
14. x = np.empty(N+1) 
15. y = np.copy(x)
16. 
17. x[0] = ?? #x0 
18. y[0] = ?? #y0
19. 
20. #iteracoes 
21. for i in np.arange(N): 
22. x[i+1] = x[i] + h 
23. y[i+1] = y[i] + h*f(x[i],y[i]) 
24. 
25. #impressão dos resultados
26. print("Resultados do Método de Euler (N = {})".format(N)) 
27. print("Passo h = {:.1f}".format(h)) 
28. print("-" * 40) 
29. for i in range(N + 1): 
30. if i == 0: 
31. print('Inicial')
32. print(f"x0: {x[i]:.2f}, y0: {y[i]:.2f}\n") 
33. else: 
34. print(f"Iteração {i}: x={x[i]:.2f}, y={y[i]:.2f}") 
35. print("-" * 40) 
Vejamos alguns pontos a serem discutidos:
 
Explorar o comportamento da solução obtida em função dos valores iniciais e a quantidade de
subintervalos. 
 
Explicar o trecho de código presente entre as linhas 21 e 23.
Atividade 3
Considere o código apresentado no roteiro da prática para implementação do método de Euler em Python.
Suponha que um engenheiro deseja usá-lo para modelar a temperatura (em graus Celsius) de um
sistema de resfriamento, cuja taxa de variação é descrita pela seguinte EDO:
• 
• 
Em que:
 
 é a constante de resfriamento.
 
 é a temperatura ambiente.
Sabendo que inicialmente , e que o engenheiro deseja estimar a temperatura após 2
horas utilizando o método de Euler, como o código apresentado pode ser ajustado para resolver o
problema?
Chave de resposta
O código apresentado permite resolver qualquer EDO de 1 § ordem com a estrutura
, bastando definir adequadamente a função e os parâmetros de
entrada N, x_inicial, x_final, .
Assim, para esse problema:
A função deve ser alterada parareturn - .
x_inicial (tempo inicial).
x_final (tempo final).
 (temperatura inicial).
N pode ser escolhido conforme a precisão desejada (por exemplo, 4 para passos de ).
O código não precisa de modificações estruturais, apenas ajustes nos valores de entrada e na função f.
Método de Euler melhorado
Neste vídeo, vamos apresentar o método de Euler melhorado, que oferece maior precisão que o tradicional.
Entenda como ele utiliza uma média de duas inclinações: uma no início e uma estimativa no final do intervalo
para calcular o próximo ponto. Exploremos o conceito de predição e correção para resolver EDOs. Assista!
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Você já sabe que o método de Euler tradicional utiliza a inclinação da solução no início de um intervalo para
aproximar o valor da solução no final desse intervalo. Embora simples, esse método pode acumular erros
significativos, sobretudo se o passo for grande ou se a curvatura da solução for acentuada. Para obter
aproximações mais precisas sem necessariamente reduzir drasticamente o tamanho do passo, o que
• 
• 
• 
• 
• 
• 
• 
aumentaria o custo computacional, o método de Euler melhorado, também conhecido como método de Heun,
é um desses aprimoramentos. 
Fundamentos do método de Euler melhorado
O método de Euler tradicional usa:
A inclinação é calculada apenas no ponto inicial do intervalo . Já o método de Euler melhorado
usa uma média de duas inclinações para projetar o próximo ponto. Veja!
 
A inclinação no início do intervalo:
Uma estimativa da inclinação no final do intervalo:
Em que é uma primeira estimativa para , obtida usando o método de Euler tradicional:
Com essas duas inclinações, e , calculamos uma inclinação média:
E então usamos essa inclinação média para fazer a "correção" e obter a aproximação final para :
Passo a passo do desenvolvimento do método de Euler melhorado
Agora veja o passo a passo para aplicar o método de Euler melhorado:
 
1. Defina o PVI:
2. Escolha o ponto final:
3. Escolha o tamanho do passo ou o número de passos , com:
• 
• 
4. Inicialização:
5. Iteração: Para :
 
Calcule a inclinação no início do intervalo:
Calcule uma estimativa preliminar para no próximo ponto:
Determine o próximo :
Calcule a inclinação no final do intervalo usando o valor predito:
Corretor: calcule o valor final de usando a média das inclinações:
Incremente .
 
6. O valor é a aproximação de .
 
Vamos revisitar os nossos exemplos com base nessa atualização do método.
Exemplo 1
Resolva:
Encontre usando com o método de Euler melhorado.
 
Passo 1: Defina o tamanho do passo.
 
Teremos os seguintes pontos: .
 
• 
• 
• 
• 
• 
• 
Passo 2: Iterações.
 
Iteração 1, em que, :
Iteração 2, em que :
Iteração 3, em que :
. Com isso, .
Logo, 3.74.
 
Iteração 4, em que :
Iteração 5, em que :
 
Exemplo 2
Considere novamente o problema EDO de valor inicial:
Encontre usando o método de Euler melhorado.
Neste problema, vamos atuar de modo mais direto, mas seguindo os mesmos passos do exemplo 1.
 
Passo 1: Definir o tamanho do passo.
Os pontos serão: 
 
Passo 2: Iterações passo a passo.
 
Iteração em que, 
Iteração 2, em que, 
Iteração 3, em que, 
Iteração 4, em que, 
Iteração 5, em que, 
Iteração 6, em que, 
Assim, .
 
O método de Euler melhorado representa um avanço significativo em termos de precisão sobre o método de
Euler tradicional. Ao considerar uma média de inclinações no intervalo, ele captura melhor o comportamento
da solução. A seguir, veremos como implementar esses métodos em Python para automatizar os cálculos e
lidar com um grande número de iterações.
Atividade 4
Um engenheiro ambiental está modelando a concentração de um poluente em um lago após
um derramamento acidental. A taxa de variação da concentração do poluente ao longo do tempo (em dias)
é descrita pela seguinte equação diferencial ordinária:
Sabendo que a concentração inicial do poluente no instante era , o engenheiro deseja
estimar a concentração do poluente após 1 dia, ou seja, , utilizando o método de Euler melhorado com
um único passo dia.
Qual será a concentração estimada calculada pelo engenheiro?
A 8.000 mg/L 
B 8.150 mg/L 
C 8.225 mg/L 
D 8.450 mg/L 
E 9.225 mg/L
A alternativa C está correta.
O problema nos apresenta , condição inicial: 
. Queremos encontrar: .
1. Calcular : 
2. Calcular uma estimativa preliminar para no próximo ponto :
3. Determinar o próximo :
4. Calcular 
5. Calcular o valor final de usando a média das inclinações (corretor):
Se usássemos o método de Euler tradicional:
Implementação do método de Euler melhorado em
Python
Neste vídeo, aprenda a implementar o método de Euler melhorado em Python. Vamos detalhar como codificar
os passos de predição e correção, calculando as inclinações. Você irá entender como a média dessas
inclinações é usada para obter uma solução numérica mais precisa para EDOs de primeira ordem. Assista!
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Para obter aproximações mais precisas sem a necessidade de reduzir drasticamente o tamanho do passo, o
que implicaria um maior custo computacional, o método de Euler melhorado surge como um aperfeiçoamento
da abordagem tradicional. A aplicação dessa metodologia, aliada ao potencial da linguagem Python, possibilita
a implementação eficiente de soluções numéricas para equações diferenciais ordinárias.
 
Nesta prática, vamos executar o método de Euler melhorado com as EDOs usadas no exemplo. Em seguida,
detalharemos os pontos cruciais do funcionamento da implementação do código. Para realizá-la, você deve:
 
Passo1: replicar o código a seguir em uma célula do Google Colab.
 
Passo2: descomentar a linha 4 ou 5 removendo “#“ para executar a função desejada. 
 
Passo 3: preencher as linhas 8, 9, 10, 18 e 19 com os valores usados nos exemplos.
 
Passo 4: executar.
 
Passo 5: repetir o processo para outras funções, comentando agora a linha 4 e descomentando a respectiva
linha 5 e refazendo o passo 3 com os valores das respectivas funções.
 
Veja a linha de código a seguir.
python
1. import numpy as np 
 2. 
 3. def f(x, y): 
 4. #return 3 * x - 1 
 5. #return np.cos(y)+np.sin(y)
 6. 
 7. 
 8. N = ?? 
 9. x_inicial = ?? 
10. x_final = ?? 
11. h = (x_final - x_inicial) / N 
12. 
13. # cria vetores x e y 
14. x = np.empty(N + 1) # N+1 para incluir o último ponto 
15. y = np.copy(x) 
16. 
17. # Condição inicial 
18. x[0] = ?? # x0 
19. y[0] = ?? # y0 
20. 
21. # Iterações 
22. for i in np.arange(N): 
23. x[i + 1] = x[i] + h 
24. 
25. m1 = f(x[i], y[i]) 
26. y_pred = y[i] + h * m1 # predição 
27. 
28. m2 = f(x[i + 1], y_pred) 
29. 
30. y[i + 1] = y[i] + (h / 2) * (m1 + m2) # correção 
31. 
32. #impressão dos resultados
33. print("Resultados do Método de Euler Melhorado (N = {})".format(N)) 
34. print("Passo h = {:.1f}".format(h)) 
35. print("-" * 40) 
36. for i in range(N + 1): 
37. if i == 0: 
38. print('Inicial')
39. print(f"x0: {x[i]:.2f}, y0: {y[i]:.2f}\n") 
40. else: 
41. print(f"Iteração {i}: x={x[i]:.2f}, y={y[i]:.2f}") 
42. print("-" * 40)
43. 
Pontos a serem discutidos:
 
Explorar o comportamento da solução obtida em função dos valores iniciais e a quantidade de
subintervalos. 
 
• 
Explorar o trecho de código presente entre as linhas 21 e 30.
Atividade 5
Após executar o código Python fornecido para o método de Euler melhorado, experimentando as diferentes
EDOs e variando o número de subintervalos N, um estudante observa o trecho de código entre as linhas 22 e
30, que corresponde ao loop de iteração do método:
python
22. for i in np.arange(N): 
23. x[i + 1] = x[i] + h 
24. 
25. m1 = f(x[i], y[i]) 
26. y_pred = y[i] + h * m1 # predição 
27.
28. m2 = f(x[i + 1], y_pred) 
29. 
30. y[i + 1] = y[i] + (h /2) * (m1 + m2) # correção 
Considerando a lógica do método de Euler melhorado e a implementação mostrada, qual das seguintes
alternativas descreve de maneira mais precisa o papel da variável y_pred (calculada na linha 26) e sua relação
com a precisão do método?
A y_pred é o valor final e mais preciso de y no próximo passo, e y[i + 1] na linha 30 é apenas uma
verificação redundante.
B y_pred representa uma estimativa inicial da inclinação no ponto x[i], usada para calcular a inclinação
final m2.
C y_pred é calculada usando a média de m1 e m2, e y[i + 1] na linha 30 é uma segunda etapa de correção
para refinar ainda mais o valor de y_pred.
D y_pred armazena a média das inclinações m1 e m2, sendo essencial para a etapa de correção, mas não
é uma estimativa de y. 
E
y_pred é uma estimativa preliminar do valor de y no ponto x[i + 1], calculada usando o método de Euler
tradicional. Essa estimativa é então utilizada para calcular uma segunda inclinação (m2) que, juntamente
com a inclinação inicial (m1), aprimora a aproximação final de y[i + 1].
A alternativa E está correta.
A alternativa E descreve com precisão a função de pred no método de Euler melhorado. A
linha pred é exatamente o cálculo de um passo do método de Euler tradicional.
Esse valor pred é então usado para avaliar a função no final do intervalo ( ) para obter .
A média de e é então usada para a "correção" final, resultando em .
A alternativa A está incorreta, pois y_pred é uma estimativa preliminar (o passo "preditor"). O
• 
valor calculado na linha 30 é a aproximação final do método para aquele passo (o passo
"corretor"), que é mais preciso que y_pred.
A alternativa B está incorreta, pois (calculada na linha 25 como , )) é a estimativa da
inclinação no ponto inicial pred é uma estimativa do valor de , não de uma inclinação.
A alternativa C está incorreta, pois y_pred é o resultado do passo "preditor" (Euler simples). A
linha * é a única etapa de "correção" no método de Euler
melhorado padrão, que utiliza a média das inclinações e . Não há uma segunda etapa de correção
envolvendo pred dessa forma.
A alternativa D está incorreta, pois pred é uma estimativa do valor de no próximo ponto, não a média
das inclinações. A média das inclinações é usada, multiplicada por , para incrementar 
 e obter .
2. Método de Runge-Kutta 
Método de Runge-Kutta
Neste vídeo, vamos explorar o método de Runge-Kutta de 2ª Ordem (RK2). Aprenda como ele utiliza duas
avaliações da função, uma no início do intervalo e outra baseada em uma predição para obter uma
aproximação mais precisa da solução da EDO, usando uma média ponderada.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Este método, também conhecido como método de Heun, apresenta uma evolução significativa em relação ao
de Euler, oferecendo resultados mais precisos com um número moderado de cálculos, tornando-se uma
alternativa eficiente para resolver equações diferenciais de modo mais confiável.
Princípio do método Runge-Kutta (RK2)
Como veremos mais adiante, o método de Runge-Kutta de ordem (RK4) é altamente preciso, mas sua
complexidade de cálculo, envolvendo quatro avaliações da função por passo, pode ser intensiva.
Contudo, nessa metodologia, podemos incluir métodos de ordens inferiores que oferecem um meio-termo.
Apesar de ser mais preciso que o método de Euler, é menos complexo que o RK4. O método de Runge-Kutta
de ordem (RK2) é um excelente exemplo disso, exigindo apenas duas avaliações da função por
passo.
 
A ideia central do método é calcular duas inclinações: uma, no início do intervalo; outra, como uma estimativa
no final do intervalo. A média dessas duas inclinações é então usada para avançar a solução.
 
Com isso, dada a EDO:
o método calcula da seguinte forma:
 
1. Cálculo da primeira inclinação no início do intervalo:
2. Estimativa preliminar de (predictor — passo de Euler):
3. Cálculo da segunda inclinação (estimativa no final do intervalo):
4. Cálculo final de :
Podemos também expressar o método usando a notação , para facilitar:
Assim:
Nos exemplos a seguir, vamos considerar poucos passos. Neste caso, consideraremos para obter o
valor de em 0,2 , ou seja, . Assim, o número de iteração é igual a 2.
Exemplo 1
Considere a EDO:
Vamos encontrar usando .
 
Iteração 1: calculando a partir de .
Portanto, .
 
Iteração 2: calculando a partir de .
Portanto, .
 
Comparando com a solução analítica de , teremos:
Assim, para :
O método de Runge-Kutta de 2ª ordem é uma boa aproximação.
 
Vejamos mais um exemplo.
Exemplo 2
Considere a EDO:
A solução analítica é:
Pelo método iterativo, teremos:
 
Iteração 1: calculando a partir de .
Iteração 2: calculando a partir de .
O método de Heun (RK2) oferece uma melhoria substancial sobre o método de Euler com um custo
computacional adicional modesto. A seguir, veremos os métodos de Runge-Kutta de ordens superiores, como
o RK4, que são mais precisos.
Atividade 1
Considere a seguinte equação diferencial ordinária (EDO):
Com a condição inicial:
Utilize o método de Runge-Kutta de ordem com passo para realizar uma iteração e calcular uma
aproximação de .
 
Qual é o valor aproximado de ?
A 1,11 
B 1,105 
C 1,10 
D 1,12 
E 1,115
A alternativa A está correta.
Passo 1: Dados: 
Passo 2: Cálculo de :
Passo 3: Estimativa provisória de :
Passo 4: Cálculo de :
Passo 5: Cálculo de :
Método de Runge-Kutta de 4ª ordem
Neste vídeo, vamos apresentar o método de Runge-Kutta de 4ª Ordem (RK4), utilizado pela sua alta precisão.
Aprenda como ele calcula quatro estimativas de inclinação (k1, k2, k3, k4) dentro de cada passo e as combina
por meio de uma média ponderada para obter soluções numéricas robustas para EDOs de primeira ordem.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
Agora, vamos avançar para o método de Runge-Kutta de 4ª ordem (RK4), considerado um dos mais
importantes e utilizados métodos numéricos para a resolução de EDOs. Sua elevada precisão, mesmo com
passos relativamente grandes, torna-o indispensável em aplicações de engenharia, física e ciências
computacionais. 
Runge-Kutta de 4ª ordem (RK4)
O método de Euler, embora simples, apresenta baixa precisão, exigindo muitos subintervalos para reduzir
erros. O erro do método de Euler decorre de sua formulação. Já com o método de Runge-Kutta, mais
sofisticado, obtemos resultados muito mais precisos com menos subintervalos, sendo, por isso, mais
utilizados em aplicações práticas. Ele combina múltiplas aproximações intermediárias para reduzir o erro.
 
O método de Runge-Kutta de 4ª ordem, chamado com frequência de RK4 ou método clássico de Runge-Kutta,
é um dos mais utilizados devido ao seu bom equilíbrio entre precisão e esforço computacional.
 
Dada uma equação diferencial ordinária de primeira ordem na forma:
Com uma condição inicial:
Queremos encontrar o valor aproximado de no próximo ponto:
Em que é o tamanho do passo. O método RK4 calcula da seguinte forma:
Em que:
Esta é a estimativa da inclinação no início do intervalo, multiplicada pelo passo (similar ao incremento do
método de Euler):
Aqui, estimamos a inclinação no ponto médio do intervalo . O valor de usado para essa estimativa
é o valor inicial mais metade do incremento (como se déssemos um "meio passo" usando a inclinação 
 ).
Novamente, estimamos a inclinação no ponto médio do intervalo . Dessa vez, o valor de usado é 
 mais metade do incremento (um "meio passo" mais refinado, usando a inclinação ).
Finalmente, estimamos a inclinação no final do intervalo . O valor de usado é mais o
incremento completo (como se déssemos um "passo completo" usando a inclinação .
 
Observe que representam incrementos (ou seja, ). A fórmula final para é uma média
ponderada desses incrementos, dando mais peso às estimativas de inclinação no ponto médio ( e ).
Essa ponderação é crucial para alcançar a precisão de quarta ordem do método.
 
Vamos ver alguns exemplos para deixar essa metodologiamais clara. Acompanhe!
Exemplo 1
Vamos resolver a EDO:
Com a condição inicial:
Nosso objetivo é encontrar o valor de utilizando o método RK4 com um passo .
Isso significa que teremos os seguintes pontos para :
Iteração 1: Calculando a partir de .
 
Temos . A função é .
Agora, calculamos :
Portanto:
Iteração 2: Calculando a partir de .
 
Agora, .
Calculando :
Portanto:
Continuando o processo iterativo:
Tabela: Processo iterativo do método RK4.
Autor: David Fernandes Cruz Moura
Assim, encontramos:
Embora esse método seja apropriado para EDOs que não possuem solução analítica, no exemplo que usamos
existe uma solução com a qual podemos comparar o resultado obtido na tabela. A solução analítica para a
EDO é:
Para :
Nesse caso, o método numérico forneceu o resultado exato da solução analítica. Em EDOs mais complexas,
pode haver pequenas diferenças, mas o RK4 ainda oferece uma excelente aproximação. Esse exemplo
demonstra o poder e a precisão do método RK4. Embora envolva mais cálculos por passo, em comparação
com o método de Euler, o ganho em precisão geralmente compensa, permitindo o uso de passos h maiores
para atingir uma determinada acurácia ou fornecendo resultados muito mais precisos para o mesmo h.
Exemplo 2
Vamos considerar o exemplo a seguir em 2 subintervalos. Queremos resolver a EDO de 1ª ordem:
Com condição inicial:
Usando o método de Runge-Kutta, em um intervalo até .
Para este exemplo, consideraremos .
 
Iteração 1: Calculando a partir de .
 
Temos: .
Cálculo de :
Cálculo de :
Cálculo de :
Cálculo de :
Cálculo de :
Portanto:
Iteração 2: Calculando a partir de .
 
Agora:
Cálculo de :
Cálculo de :
Cálculo de :
Cálculo de :
Cálculo de :
Se fôssemos usar o método de Euler para uma precisão parecida, seriam necessárias cerca de 10 iterações ou
mais. Assim, vemos que o método, mesmo com mais cálculos por passo, é mais eficiente e mais preciso.
Atividade 2
Em um processo industrial de aquecimento, a temperatura de um fluido ao longo do tempo 
(em minutos) segue o modelo descrito pela equação diferencial ordinária:
Sabendo que inicialmente a temperatura é de , o engenheiro deseja estimar a temperatura após
1 minuto, utilizando o método de Runge-Kutta de 4ª ordem (RK4) com um único passo de minuto.
 
Após realizar os cálculos, qual valor mais próximo representa a temperatura ao final do primeiro minuto?
A 25,0 °C 
B 24,0 °C 
C 26,0 °C 
D 27,0 °C 
E 28,0 °C
A alternativa B está correta.
Dados: EDO: Condição inicial: Passo: 
Passo 1: Cálculo de :
Passo 2: Cálculo de :
Passo 3: Cálculo de :
Passo 4: Cálculo de :
Passo 5: Cálculo de :
Implementando o método de RK4 em Python
Vamos aprender a implementar o método de Runge-Kutta de 4ª ordem (RK4) em Python. Neste vídeo,
demonstraremos como traduzir as fórmulas de cálculo de k1, k2, k3, k4 e a atualização da solução para
código. Veja como definir a EDO e aplicar o RK4 para obter soluções numéricas precisas de forma eficiente.
Conteúdo interativo
Acesse a versão digital para assistir ao vídeo.
O método de Runge-Kutta de 4ª ordem (RK4) é utilizado na resolução de equações diferenciais ordinárias
(EDOs) devido à sua precisão. A aplicação dessa metodologia, aliada à linguagem Python, permite a
implementação de algoritmos numéricos de forma rápida e eficaz.
 
Nesta prática, vamos explorar a aplicação do RK4 utilizando a linguagem Python, destacando como essa
combinação ajuda a implementar soluções numéricas robustas e precisas, fundamentais para a modelagem e
a simulação de fenômenos em diversas áreas da engenharia, ciências e tecnologia.
 
Vamos avaliar, nesta implementação, os exemplos já vistos. Assim, para realizá-la:
 
Passo 1: reproduza o código em uma célula do Google Colab.
 
Passo 2: descomente a linha 4, removendo “#” para executar a primeira função.
 
Passo 3: ajuste as linhas 32, 33, 34 e 35 com os respectivos valores iniciais.
 
1. 
2. 
3. 
Passo 4: execute.
 
Reproduza o processo comentando a linha 4 e descomentando a linha 5.
python
1. # Programa em Python para implementar o método de Runge-Kutta de 4ª ordem
 2. import numpy as np
 3. # Definição da equação diferencial ordinária de primeira ordem
 4. def f(x, y): 
 5. #return 3*x-1
 6. #return np.cos(y) + np.sin(y) 
 7. # Encontra o valor de y, dado x, utilizando um intervalo h 
 8. # Considera os valores iniciais como x0 e y0
 9. def rungeKutta(x0, y0, x, h): 
10. # Contagem do número de iterações utilizando o tamanho do passo 
11. n = int((x - x0) / h)
12. 
13. # Realização da iteração para um número predeterminado 
14. y = y0 
15. 
16. for i in range(1, n + 1): 
17. # Aplicação das fórmulas de Runge-Kutta para encontrar o valor seguinte de y
18. k1 = h * f(x0, y) 
19. k2 = h * f(x0 + 0.5 * h, y + 0.5 * k1) 
20. k3 = h * f(x0 + 0.5 * h, y + 0.5 * k2) 
21. k4 = h * f(x0 + h, y + k3) 
22. 
23. # Atualização do valor seguinte de y 
24. y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) 
25. 
26. # Atualização do valor seguinte de x 
27. x0 = x0 + h 
28. 
29. return y
30. 
31. # Programa principal
32. x0 = ??
33. y = ??
34. x = ??
35. h = ??
36. 
37. resultado = rungeKutta(x0, y, x, h)
38. print(f"O valor de y em x = {x} é aproximadamente:{resultado:.6f}")
39. 
Pontos a serem discutidos:
 
Explorar o comportamento da solução obtida em função dos valores iniciais e a quantidade de
subintervalos. 
 
Explorar o trecho de código presente entre as linhas 16 e 27.
Atividade 3
No código Python fornecido para a implementação do método de Runge-Kutta de 4ª ordem (RK4), o loop
principal de iteração (linhas 16 a 27) é responsável por calcular sucessivamente os valores da solução y em
4. 
• 
• 
diferentes pontos x. Dentro desse loop, as variáveis k1, k2, k3 e k4 são calculadas (linhas 18 a 21) e, em
seguida, utilizadas para atualizar o valor de y (linha 24).
python
16. for i in range(1, n + 1): 
17. 
18. k1 = h * f(x0, y) 
19. k2 = h * f(x0 + 0.5 * h, y + 0.5 * k1) 
20. k3 = h * f(x0 + 0.5 * h, y + 0.5 * k2) 
21. k4 = h * f(x0 + h, y + k3) 
22. 
23. # Atualização do valor seguinte de y 
24. y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) 
25. 
26. # Atualização do valor seguinte de x 
27. x0 = x0 + h 
Considerando a lógica do método RK4, explique o significado conceitual de cada uma das variáveis k1, k2, k3
e k4 no contexto da estimativa da solução da EDO. 
Chave de resposta
Significado conceitual de k1, k2, k3 e k4:
As variáveis e k4 representam aproximações do incremento total da função y (ou seja, ) ao
longo do intervalo de tamanho , baseadas em diferentes estimativas da inclinação dentro
desse intervalo, mais especificamente:
k1 = h * f(x0, y): representa o incremento em y se a inclinação no início do intervalo (f(x0, y)) for mantida
constante ao longo de todo o passo h. É a estimativa de Euler.
k2 = h * f(x0 + 0.5 * h, y + 0.5 * k1): representa o incremento em y usando uma estimativa da inclinação no
ponto médio do intervalo em x (x0 + 0.5*h). O valor de y usado para calcular essa inclinação é uma
estimativa no ponto médio, obtida avançando y por 0.5*k1 (meio incremento da estimativa de Euler).
k3 = h * f(x0 + 0.5 * h, y + 0.5 * k2): similar a k2, também representa o incremento em y usando uma
estimativa da inclinação no ponto médio do intervalo em x (x0 + 0.5*h). No entanto, o valor de y usado
para essa estimativa é agora mais refinado, avançando y por 0.5*k2 (meio incremento baseado na
estimativa de inclinação k2).
k4 = h * f(x0 + h, y + k3): representa o incremento em y usando uma estimativa da inclinação no final do
intervalo (x0 + h). O valor de y usado para essa estimativa é obtido avançando y pelo incremento completo
k3 (estimativa de incremento baseada na inclinação k3).
Em resumo, cada k é h vezes uma inclinação calculada emum ponto específico do intervalo (ou usando um
valor de y estimado para aquele ponto).
3. Conclusão
Considerações finais
O que você aprendeu neste conteúdo?
Conceitos fundamentais de equações diferenciais ordinárias (EDOs) de primeira ordem e problemas de
valor inicial (PVIs).
 
Princípio e aplicação do método de Euler para a resolução numérica de EDOs de primeira ordem.
 
Funcionamento do método de Euler melhorado, que aprimora a precisão do método de Euler
tradicional.
 
Formulação e aplicação do método de Runge-Kutta de 4ª ordem (RK4), um método de alta precisão
que utiliza múltiplas estimativas de inclinação em cada passo.
 
Implementação de todas as etapas utilizando a linguagem Python.
Explore +
Há muitos materiais adicionais que podem complementar e ampliar seu conhecimento acerca dos métodos de
resolução de equações diferenciais ordinárias de primeira ordem. Recomendamos, entre eles, a seguinte lista:
 
BURIAN, R.; LIMA, A. C. de; HETEM JUNIOR, A. (coord.). Fundamentos de Informática – cálculo numérico. Rio
de Janeiro: LTC, 1997.
 
CLAUDIO, D. M. Cálculo numérico computacional: teoria e prática. São Paulo: Atlas, 1989.
 
FRANCO, N. B. Cálculo numérico. São Paulo: Pearson Prentice-Hall, 2006.
 
RUGGIERO, M. A. G.; LOPES, V. L. R. Cálculo numérico: aspectos teóricos e computacionais. 2. ed. São Paulo:
Makron Books, 1998.
Referências
BURIAN, R.; LIMA, A. C. Cálculo numérico. Rio de Janeiro: LTC, 2007.
 
FRANCO, N. B. Cálculo numérico. São Paulo: Pearson Prentice Hall, 2007.
 
MOURA, D. F. C. Cálculo numérico. Rio de Janeiro: SESES, 2017. 
 
REAMAT. Cálculo numérico: um livro colaborativo versão Python. Porto Alegre: UFRGS, 2019.
1. 
2. 
3. 
4. 
5. 
	Equações diferenciais ordinárias de 1ª ordem em Python
	1. Itens iniciais
	Preparação
	Objetivos
	Introdução
	Conteúdo interativo
	1. Método de Euler
	Fundamentos de equações diferenciais ordinárias de 1° ordem
	Conteúdo interativo
	Equação diferencial ordinária (EDO) de 1ª ordem
	Exemplo
	Soluções analíticas
	Exemplo 1
	Exemplo 2
	Problemas de valor inicial (PVI)
	Exemplo 3
	Exemplo 4
	Atividade 1
	Método de Euler
	Conteúdo interativo
	Fundamentos do método de Euler
	Passo a passo do método de Euler
	Defina o PVI
	Escolha o ponto final
	Escolha o passo
	Inicialização
	Iteração
	Resultado
	Exemplo 1
	Exemplo 2
	Iteração 1
	Iteração 2
	Iteração 3
	Iteração 4
	Iteração 5
	Iteração 6
	Exemplo 3
	Determinar o tamanho do passo
	Aplicar a fórmula de Euler
	Condição inicial
	Iteração 1
	Iteração 2
	Iteração 3
	Iteração 4
	Iteração 5
	Atividade 2
	Implementação do método de Euler em Python
	Conteúdo interativo
	Atividade 3
	Método de Euler melhorado
	Conteúdo interativo
	Fundamentos do método de Euler melhorado
	Passo a passo do desenvolvimento do método de Euler melhorado
	Exemplo 1
	Exemplo 2
	Atividade 4
	Implementação do método de Euler melhorado em Python
	Conteúdo interativo
	Atividade 5
	2. Método de Runge-Kutta
	Método de Runge-Kutta
	Conteúdo interativo
	Princípio do método Runge-Kutta (RK2)
	Exemplo 1
	Exemplo 2
	Atividade 1
	Método de Runge-Kutta de 4ª ordem
	Conteúdo interativo
	Runge-Kutta de 4ª ordem (RK4)
	Exemplo 1
	Exemplo 2
	Atividade 2
	Implementando o método de RK4 em Python
	Conteúdo interativo
	Atividade 3
	3. Conclusão
	Considerações finais
	O que você aprendeu neste conteúdo?
	Explore +
	Referências

Mais conteúdos dessa disciplina