Você está na página 1de 21

UFRB- Universidade Federal do Recôncavo da Bahia

CETENS- Centro de Ciência e Tecnologia em Energia e Sustentabilidade

Maira Pinto Oliveira

Métodos de Cálculo Numérico

Relatório Técnico

Feira de Santana
2021
Maira Pinto Oliveira

Métodos de Cálculo Numérico

Relatório Técnico apresentado ao curso de


Bacharelado Interdisciplinar em Energia e Sus-
tentabilidade, como parte dos requisitos ne-
cessários à terceira avaliação do componente
curricular de Cálculo Numérico ministrado pela
docente Anderson Dourado Sisnando.

Feira de Santana
2021
Sumário

Introdução .....................................................................................................................

Metodologia ...................................................................................................................

Resultados e Discussão ...............................................................................................

Questão 1...................................................................................................................
Questão 2 ..................................................................................................................
Questão 3 ..................................................................................................................
Questão 4 ..................................................................................................................
Imagens das Compilações dos Métodos .................................................................

Conclusão....................................................................................................................

Referências Bibliográficas .........................................................................................


1. Introdução

Equações diferenciais são equações onde aparece uma função e suas deriva-
das, para alcançar sua solução exata é necessário que se tenha uma função que torne
toda a equação uma sentença verdadeira para quaisquer valores das variaveis quando
a função é substituida na equação. Uma equação diferencial pode ser parcial, quando
se tem apenas uma variável na função envolvida e parcial quando se tem mais de uma
variável.

O problema de valor inicial (PVI), é uma equação diferencial com mais condi-
ções iniciais, e essa quantidade de condições iniciais vai depender da ordem da equa-
ção. A determinação da solução exata de uma equação diferencial envolve o calculo de
uma ou mais primitivas, por esse motivo na maioria das vezes o cálculo exato é difícil
ou impossível de ser realizado utilizando apenas as funções elementares conhecidas.

Devido a impossibilidade de se determinar a solução exata na maioria dos ca-


sos, desenvolveu-se técnicas de determinação de solução numérica aproximada da
equação. A resolução numérica aproximada não envolve calculo de primitiva, apenas
aequência de passos onde são usados operações aritméticas básicas e cálculo de valo-
res de funções. Neste caso não se determina uma função, mas uma tabela de valores
de pontos que devem estar muito próximos do gráfico da função que seria a solução
exata da equação.

O presente relatório traz dois métodos de Cálculo Numérico estudados na tercei-


ra unidade da disciplina, Método de Euler e o Método de Runge-Kutta de segunda e
quarta ordem, onde através de programas computacionais e da linguagem de progra-
mação, ao construir os algoritmos você consegue calcular soluções aproximadas para
uma equação diferencial. Os algoritmos desse trabalho foram escritos em linguagem C
no programa DEVC++, seguidos os seus respectivos comentários de construção. Ao fi-
nal de cada algoritmo é mostrado o que se pede na questão como: o f(x) determinado e
também o erro absoluto.
2. Metodologia

Para resolução do trabalho proposto, foi utilizado o programa DEVC++,


visto pelo discente na disciplina de Programação de Computadores I, adqui-
rindo afinidade para construção dos algoritmos em linguagem C++.
Utilizou -se os conhecimentos vistos em sala de aula sobre osMétodos de
Euler e Rungge-Kutta, transcrevendo a lógica dos métodos para obtenção
dos valores aproximados em forma de tabela, assim como o erro absoluto a
partir do resultado exato.
Foi estudado apenas um tipo de Problema de Valor Inicial (PVI):
y’ = f(x,y) , y(x0) = y0.
Uma solução de um PVI desse tipo é uma função derivável cujo gráfico
passa pelo ponto (x0, y0). Uma solução apróximada é uma tabela de valores
que inicia com (x0, y0), próximo do gráfico da função que seria a solução da
equação diferencial.
O método de Euler é o mais simples para se encontrar pontos (xn, yn)
próximos do gráfico com a solução do PVI, y’ = f(x,y) , y(x0) = y0. A aplicação
do metódo de Euler, consiste em, a partir do ponto inicial (x0, y0) dado,ir cal-
culando varios pontos (xn, yn), ultilizando as fórmulas:
xn+1 = xn + h
yn+1 = yn + h * f(xn , yn)
O h é o passo útilizado, quanto mais próximo de zero melhor vai ser a
aproximação.
O método de Runge-Kutta(RK) surge a partir do de Euler, então o RK de
primeira ordem é calculado igual o método anterior, mas a partir do RK de
segunda ordem (RK2) surge mais um termo que é o k2, no de terceira ordem
(RK3) surge k3 e no de quarta ordem surge o k4, assim temos:
Dados h > 0 próximo de zero e um PVI: y’ = f(x,y) , y(x0) = y0
RK:
xn+1 = xn + h
yn+1 = yn + k1
k1 = h * f(xn , yn)

RK2:
xn+1 = xn + h
yn+1 = yn + (k1 + k2) / 2
k1 = h * f(xn , yn)
k2 = h * f(xn + h/2 , yn + k1/2)

RK3:

xn+1 = xn + h
yn+1 = yn + (k1 + 4*k2 + k3) / 6
k1 = h * f(xn , yn)
k2 = h * f(xn + h/2 , yn + k1/2)
k3 = h * f(xn + h , yn - k1 - 2*k2)

RK4:

xn+1 = xn + h
yn+1 = yn + (k1 + 2*k2 + 2*k3 + k4) / 6
k1 = h * f(xn , yn)
k2 = h * f(xn + h/2 , yn + k1/2)
k3 = h * f(xn + h/2 , yn + k2/2)
k4 = h * f(xn + h , yn + k3)

3. Resultados e Discussão

Bibliotecas ultilizadas para compilação dos programas

Variáveis gerais e menu para que o usuario escolha que questão deseja
responder. O primeiro do guarda todo o código para que ao final de cada
questão seja possivel que o usuario retorne ao menu inicial e o segundo
é para que não entre nenhum valor diferente das opções que o menu ofe-
rece.
Þ Quetão 1:

Pedindo as variáveis necessárias para a resolução da questão como o: x0, y0 e o x pa-


ra o f(x) que se deseja determinar . O do que aparece logo no inicio do case guarda o
código da questão completa para ser possivel o usuário fazer de novo com outros va-
lores sem precisar ir para o menu.

Foi usado um do-while para pedir o valor de h, pois é necessário que o mesmo seja
maior que 0 e menor que 1, então o código só vai parar de pedir um valor quando for
informado um que esteja dentro das condições informadas. Temos também a variável
inte que guarda a quantidade de interações que o meu código vai precisar fazer para
chegar no valor de x determinado para o f(x).
Depois de ter todos os dados foi feito o cabeçalho da tabela que vai imprimir os pon-
tos encontrados. Dentro do for é feito o cálculo dos x e y para o método de Euler até
chegar no x e y que desejamos, que são os últimos da interação.Depois de imprimir a
tabela com os pontos encontrados fora do for tem um printf para imprimir o f(x) da so-
lução apróximada e depois uma mensagem para saber se o usuário deseja testar ou-
tros valores na mesma questão.

Þ Questão 2:

Pedindo as variáveis necessárias para a resolução da questão como o: x0, y0 e o x pa-


ra o f(x) que se deseja determinar . O do que aparece logo no inicio do case guarda o
código da questão completa para ser possivel o usuário fazer de novo com outros va-
lores sem precisar ir para o menu.

Foi usado um do-while para pedir o valor de h, pois é necessário que o mesmo seja
maior que 0 e menor que 1, então o código só vai parar de pedir um valor quando for
informado um que esteja dentro das condições informadas. Temos também a variável
inte que guarda a quantidade de interações que o meu código vai precisar fazer para
chegar no valor de x determinado para o f(x).
Depois de ter todos os dados foi feito o cabeçalho da tabela que vai imprimir os pon-
tos encontrados. Dentro do for é feito o cálculo dos x e y para o método de Runge-
Kutta até chegar no x e y que desejamos, que são os últimos da interação. A diferença
é que agora tem que calcular k1 e k2, como o x e y ultilizados para o cálculo do f(x,y)
no k2 são diferentes do inicial eu escolhi calcular em variáveis separadas para não me
confundir na hora de escrever a função e assim acabar causando um erro.
Depois de imprimir a tabela com os pontos encontrados fora do for tem um printf para
imprimir o f(x) da solução apróximada e depois uma mensagem para saber se o usu-
ário deseja testar outros valores na mesma questão.

Þ Questão 3:

Assim como nas outras questões a parte inicial do código da questão 3 pede os valo-
res de x e y inicial o do x para o f(x) que deseja determinar, o valor de h e faz o cálculo
da quantidade de interações necessárias para chegar no valor aproximado desejado.
Depois de ter todos os dados foi feito o cabeçalho da tabela que vai imprimir os pon-
tos encontrados. Dentro do for é feito o cálculo dos x e y para o método de Runge-
Kutta até chegar no x e y que desejamos, que são os últimos da interação. A diferença
é que agora tem que calcular k1, k2, k3 e k4, como o x e y ultilizados para o cálculo do
f(x,y) no k2, k3 e k4 são diferentes do inicial eu escolhi calcular em variáveis separadas
para não me confundir na hora de escrever a função e assim acabar causando um er-
ro. Depois de imprimir a tabela com os pontos encontrados fora do for tem um printf
para imprimir o f(x) da solução apróximada e depois uma mensagem para saber se o
usuário deseja testar outros valores na mesma questão.

Þ Questão 4:

Para a questão 4 eu criei um menu para o usuário escolher para que questão ele deje-
sa calcular o erro absoluto. E assim como no menu principal, foi colocado um do-while
para que só rode quando o usuário entrar com um valor igual a umas das opções dis-
poníveis.

Dentro de cada case inicialmente coloquei o mesmo código feito nas questões 2 e 3.
O que muda é que depois do for é feito o cálculo da solução exata e depois o do erro
absoluto e depois uma mensagem para saber se o usuário deseja testar outros valo-
res na mesma questão e caso não queira ainda aparecera uma outra mensagem per-
guntando se o mesmo deseja voltar para o menu da questão 4.
case 1: questão 1

case 2: questão 2

case 3: questão 3
IMAGENS DAS COMPILAÇÕES DAS QUESTÕES
Questão 1:
Questão 2:
Questão 3:
Questão 4:

Euler

RK2
RK4
4.Conclusões

As questões foram resolvidas de modo satisfatório, atingindo o objetivo do trabalho


em programar, imprimir e organizar em tabelas os pontos encontrados e as soluções
aproximadas. Ao fazer os calculos do erro absoluto na questão 4 foi possivel observar
uma maior eficiência no método de Runge-Kutta de quarta ordem, pois o erro encon-
trado se aproximou mais de zero.
Referências bibliográficas

[1] D. M. Cl´audio, J. M. Marins (1994), C´alculo Num´erico Computacional, Ed. Atlas.

[2] Notas de aula.

Você também pode gostar