Você está na página 1de 14

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO - UFRPE

UNIDADE ACADÊMICA DE BELO JARDIM – UABJ

ENGENHARIA QUÍMICA
COMPONENTE CURRICULAR: CÁLCULO NUMÉRICO

ZEROS DE FUNÇÕES REAIS - MÉTODOS NUMÉRICOS

BELO JARDIM
2022
SUMÁRIO

1. INTRODÇÃO……………………………………………….………………………. 3

2. MÉTODOS E PROCEDIMENTOS………………………………………………… 4

2.1 FUNÇÃO…………………………………...…………………………………………. 4

2.2 MÉTODO DA BISSECÇÃO……………………………..………………………….. 5

2,3 MÉTODO DA POSIÇÃO FALSA…………………………………………………... 7

2.4 MÉTODO DO PONTO FIXO……………………………………………………….. 8

2.5 MÉTODO DE NEWTON……………………………………………………………. 10

2.6 MÉTODO DA SECANTE…………………………………………………………… 12

3. RESULTADOS E DISCUSSÕES……………………………………………………. 13

4. CONCLUSÃO……………………………………………………………………..…. 14
3

1. INTRODUÇÃO

Neste presente relatório, serão apresentados 5 métodos usados para calcular as raízes de
infinitas funções matemáticas.
Zeros de funções reais, popularmente como as raízes de uma função , são aqueles valores de
“X” que vão zerar a função, ou seja, um número real “X*” é um zero da função f(x) ou uma raíz da
equação f(x) = 0, se f(x*) = 0. Determinar essas raízes em algumas equações pode até ser um
procedimento considerado simples, a depender da função, para a maioria das pessoas. Porém,
existem diversas funções reais nas quais determinar suas raízes é um trabalho totalmente inviável
para uma pessoa desenvolver. Para facilitar o cálculo desses zeros de funções reais, é válido recorrer
a métodos algébricos e computacionais que servirão para facilitar tais procedimentos.
Um procedimento inicial para determinar raízes reais de uma equação consiste em duas fases.
Na fase 1, temos o isolamento das raízes, ou seja, determinar intervalos que contém tais raízes. A
determinação destes intervalos segue procedimentos fixados em teorema: Seja f(x) uma função
contínua em um intervalo genérico “I” da reta real, e sejam “a” e “b”valores que pertencem a este
intervalo tais que f(a)xf(b)<0. Então, existe pelo menos um ponto x=x* entre “a” e “b” que é zero de
f(x). Se a derivada da função f(x) existir e preservar o sinal em todo o intervalo “I”, então, tal
intervalo contém apenas um único zero de f(x).
Seguindo os procedimentos expostos acima, é possível determinar um intervalo válido que
contenha as raízes de determinada função. Na fase 2, temos o refinamento deste intervalo
determinado na fase 1. O refinamento consiste em determinar sucessivas “partições” do intervalo
encontrado na fase 1 , onde cada partição será uma aproximação da raiz dentro de uma precisão pré -
estabelecida.
4

2. MÉTODOS E PROCEDIMENTOS

2.1 FUNÇÃO

A função a ser trabalhada utilizando os métodos numéricos apresentados neste relatório é


−𝑥
𝑥 - 2 . Os diferentes métodos aplicados para determinar as raízes desta função foram
desenvolvidos utilizando a linguagem de programação Python e serão comparados entre si, a fim de
indicar aquele com maior nível de efetividade em termos computacionais.
O passo inicial foi determinar quais intervalos a função apresenta raízes reais. Usando os
procedimentos descritos no teorema apresentado no início deste relatório foi possível identificar
estes intervalos. Pela natureza da função, de forma visual é possível estabelecer o domínio da função
ao qual “X” assume resultados válidos. Sendo 𝑥 o domínio é: Dom f(x) = [0 , +∞). Tendo
determinado o domínio da função, foram estabelecidos intervalos aleatórios com o intuito de
encontrar aquele que apresenta raízes reais. A tabela abaixo demonstra os resultados obtidos a partir
de tais análises.

VALORES PARA F(X) 0 1 2 3 4 5

SINAL DE F(X) - + + + + +

Observa-se que no intervalo I= (0 , 1) existe a raiz pois houve a mudança de sinal entre um e
outro. De acordo com os valores da tabela, a partir do número 1 o sinal da função permanece
positivo, demonstrando que a função cresce a partir deste, para certificarmos de que não existe
nenhuma outra raiz em intervalos seguintes, segue-se procedimentos descritos no teorema no qual se
analisa o sinal da derivada da função, se este se manter constante ao infinito, é a confirmação de que
a função só apresenta uma raiz real.
Derivando a função, temos:
5

A partir da derivada é possível observar que a função é crescente dentro do intervalo (1 , +∞)
, logo, a função só apresenta uma única raiz e esta se encontra no intervalo I = (0 , 1). A imagem
abaixo confirma as análises expostas acima.

2.2 MÉTODO DA BISSECÇÃO

Este método garante a existência de uma solução para f(x) = 0 no intervalo (a, b) desde que f :
[a, b] → R seja contínua e satisfaz f(a).f(b) < 0. o método da bissecção consiste em dividir o
intervalo [a, b] ao meio (média), obtendo os subintervalos [a, m] e [m, b], e considerar como
intervalo de busca o subintervalo em que f tem sinais opostos nos extremos. Em seguida repete-se o
procedimento com o subintervalo de interesse. Após um número finito de subdivisões o método
convergirá para a solução seguindo aproximação de uma precisão pré - estabelecida (e).

2.2.1 Código em Python para cálculo da solução utilizando o método da bissecção.

import math
def f(x):
return math.sqrt(x) - 1/math.pow(2 , x)
a=int(input("Digite o valor inicial do intervalo: "))
b=int(input("Digite o valor final do intervalo: "))
e=0.00001
k=0
while a==b:
print("Os valores do intervalo são iguais, digite um intervalo válido: ")
a=int(input("Digite o valor inicial do intervalo: "))
b=int(input("Digite o valor final do intervalo: "))
6

if f(a)*f(b)<0:
while (b - a)>e:
k=k + 1
M=(a + b)/2
if f(a)*f(M)<0:
b=M
else:
a=M
print("a solução encontrada foi",M)
print("A quantidade de interações foi",k)
else:
print("Neste intervalo não tem raíz")

As figuras abaixo demonstram os resultados obtidos usando o código acima.


7

2.3 MÉTODO DA POSIÇÃO FALSA

Seja f(x) contínua no intervalo [a,b] e tal que f(a)f(b) < 0. Se considerarmos que existe uma
raiz no intervalo (a,b), podemos encontrar o valor aproximado dessa raiz usando os valores da função
obtidos a cada interação, pois, a cada interação aproxima-se mais da raiz, desde que o método seja
convergente. O método da posição falsa consiste em obter dois pontos iniciais (a,f(a)) e (b,f(b)) onde
entre esses dois pontos passará uma reta intersectando o eixo X, neste ponto de intersecção (M)
gera-se um novo ponto (M,f(M)) de modo que a nova interação entre (M,f(M)) com (a,f(a)) ou
(M,f(M)) com (b,f(b)) (o conjunto de interação dependerá de quanto o intervalo esteja próximo a
raiz) gera uma nova reta que intersecta o eixo X gerando um outro ponto de intersecção (M). Nesse
processo, a cada nova interação, a reta se aproxima cada vez mais do valor da raiz. De modo geral, o
valor de M a cada interação será determinado pela média ponderada entre “a” e “b” e com pesos
“f(a)” e “f(b)” visto que tais pontos (a,f(a)), (b,f(b)) e (M,f(M)) são colineares e respeitam o critério:

Logo, o valor de M será determinado por:

𝑎𝑓(𝑏) − 𝑏𝑓(𝑎)
M=
𝑓(𝑏) − 𝑓(𝑎)

2.3.1 Código em Python para cálculo da solução utilizando o método da posição falsa.

import math
def f(x):
return math.sqrt(x) - 1/math.pow(2 , x)
a=int(input("Digite o valor inicial do intervalo: "))
b=int(input("Digite o valor final do intervalo: "))
e=0.00001
k=0
M=(a + b)/2
while a==b:
print("Os valores do intervalo são iguais, digite um intervalo válido: ")
a=int(input("Digite o valor inicial do intervalo: "))
b=int(input("Digite o valor final do intervalo: "))
if f(a)*f(b)<0:
while math.fabs(f(M))>e:
k=k + 1
M=(a*f(b) - b*f(a))/(f(b) - f(a))
if f(a)*f(M)<0:
8

b=M
else:
a=M
print("a solução encontrada foi",M)
print("A quantidade de interações foi",k)
else:
print("Neste intervalo não tem raíz")

A figura abaixo demonstra os resultados obtidos usando o código acima.

2.4 MÉTODO DO PONTO FIXO

Seja f(x) uma função contínua e que contenha uma raiz no intervalo [a,b]. O método do ponto
fixo consiste em obter uma função iteração φ(𝑥) tal que f(x) = φ(𝑥) - x e φ(𝑥 *) = x*. A partir
de uma aproximação inicial 𝑥0 da raiz x* deve-se gerar uma sequência {𝑥𝑘} pela relação

𝑥𝑘+1 = φ(𝑥𝑘)

Vale destacar que é possível determinar várias funções de iteração, porém nem todas vão
convergir para o valor da raiz. Sendo assim, é necessário seguir os procedimentos do teorema a
seguir:

Seja x* uma raiz da equação f(x)=0 isolada num intervalo I. Seja φ(𝑥) uma função de
iteração para a equação f(x)=0. Se:

I - φ(𝑥) e φ´(𝑥) são contínuas em I

II - | φ´(𝑥)|≤ M < 1 para todo x ∈ I

III - 𝑥0 ∈ I
9

Então, a sequência {𝑥𝑘} gerado pelo processo iterativo 𝑥𝑘+1 = φ(𝑥𝑘) converge para a raiz.

Determinando a função iteração e analisando os criterios de convergencia, temos:


10

2.4.1 Código em Python para cálculo da solução utilizando o método do ponto fixo.

import math
def f(x):
return math.sqrt(x) - 1/math.pow(2 , x)
def phi(x):
return 1/math.pow(4, x)
e=0.00001
k=0
x_0 = 0.3
x= x_0
while math.fabs(f(x))>e:
k=k + 1
x= phi(x)
x_raiz = x
print("a solução encontrada foi",x_raiz)
print("A quantidade de interações foi",k)

A figura abaixo demonstra os resultados obtidos usando o código acima.

2.5 MÉTODO DE NEWTON

O método de newton é uma especificação do método do ponto fixo, tendo este uma função
iteração geral pré-estabelecida que será usada por todo o método. O método de Newton é
considerado um dos métodos mais eficientes pois tem convergência de ordem 2. O primeiro passo é
escolher uma aproximação inicial. Após isso, calcula-se a equação da reta tangente (por meio da
derivada) da função nesse ponto e a interseção dela com o eixo X , a fim de encontrar uma melhor
aproximação para a raiz. Repetindo-se o processo, cria-se um método iterativo para encontrarmos a
raiz da função. A função iteração geral para este método é:
𝑓(𝑥𝑛 )
𝑥𝑛 + 1= 𝑥𝑛 - 𝑓´(𝑥𝑛 )
11

Assim como no método do ponto fixo, a função acima precisa respeitar um critério de convergência
para que o método seja efetivo. Este critério é descrito no teorema a seguir:
Seja f(x), f´(x) e f´´(x) contínuas num intervalo I que contenha a raiz x = x* de f(x) = 0,
supondo que f´(x) ≠ 0. Então existe um intervalo 𝐼 ⊂ I contendo a raiz x* tal que se 𝑥0∈ 𝐼, a
𝑓(𝑥𝑛 )
sequência gerada pela fórmula recursiva 𝑥𝑛 + 1= 𝑥𝑛 - 𝑓´(𝑥𝑛 )
convergirá para x*

2.5.1 Código em Python para cálculo da solução utilizando o método de Newton.

import math
E=2.7182
def f(x):
return math.sqrt(x) - 1/math.pow(2 , x)
def f_linha(x):
return (1 / 2*math.sqrt(x)) + (math.log(E,2) / math.pow(2,x))
k=0
x_0 = 0.3
x= x_0
e=0.00001
while math.fabs(f(x)) > e:
k=k + 1
x= x - (f(x) / f_linha(x))
x_raiz = x
print("a solução encontrada foi",x_raiz)
print("A quantidade de interações foi",k)

A figura abaixo demonstra os resultados obtidos usando o código acima.

.
12

2.6 MÉTODO DA SECANTE

No método de Newton usa-se o critério da reta tangente ao gráfico, ou seja, a derivada da


função, para se chegar ao valor da raiz. No método da secante, esse critério será feito a partir da reta
secante ao gráfico, ou seja, será calculado a derivada de forma discreta da função. Para isto, este
método necessita de duas aproximações iniciais 𝑥0 e 𝑥1 de modo que para determinar a próxima
interação (o próximo valor da aproximação), será calculado usando a seguinte fórmula:

(𝑥𝑛 − 1)(𝑓(𝑥𝑛 )) − 𝑥𝑛 (𝑓(𝑥𝑛 − 1))


𝑥𝑛 + 1= 𝑓(𝑥𝑛 ) − 𝑓(𝑥𝑛 − 1)

2.6.1 Código em Python para cálculo da solução utilizando o método da secante.

import math
def f(x):
return math.sqrt(x) - 1/math.pow(2 , x)
k=0
x_0 = 0
x_1 = 1
x=0.4
e=0.00001
while math.fabs(f(x)) > e:
k=k + 1
x= (x_0*f(x_1) - x_1*f(x_0)) / (f(x_1) - f(x_0))
x_0 = x_1
x_1 = x
x_raiz = x
print("a solução encontrada foi",x_raiz)
print("A quantidade de interações foi",k)

A figura abaixo demonstra os resultados obtidos usando o código acima.


13

3. RESULTADOS E DISCUSSÕES

Os resultados obtidos a partir dos cálculos utilizando os diferentes métodos numéricos para a
determinação de zeros de funções reais estão agrupados na tabela abaixo.

Método da Método da Método do Método de Método da


Bissecção Posição Falsa Ponto Fixo Newton Secante

Dados e a=0 a=0 𝑥0= 0,3 𝑥0= 0,3 𝑥0= 0


aproximações iniciais b=1 b=1 𝑥1= 1
x = 0,4

Solução Encontrada ≈0,49999237 ≈0,5 ≈0,49999249 ≈0,49999237 ≈0,49999999

Quantidade de 17 0 28 5 5
Interações

De acordo com os resultados da tabela acima, é possível perceber que houve uma divergência
considerável em relação à quantidade de interações que cada método obteve para determinar o valor
aproximado ou exato da raiz. O valor exato da raiz da função trabalhada neste relatório é X= 0,5,
logo, para a resolução desta função,o método da posição falsa foi o mais eficiente. O método menos
eficiente em termos de efetividade computacional foi o método do ponto fixo, visto que este teve 28
interações até obter um valor aproximado da raiz dentro de uma precisão pré-estabelecida que foi
comum a todos os métodos. É importante destacar que esses resultados podem variar de função para
função, onde o método mais eficiente neste caso, poderá ser o menos eficiente de acordo com o tipo
de função a ser trabalhada. Podemos considerar então, que existe uma relatividade inerente a tais
métodos à medida que ocorra variações de funções a serem trabalhadas usando estes mesmos
métodos numéricos.
14

4. CONCLUSÃO

Os métodos numéricos para a determinação de zeros de funções reais apresentados neste


relatório, classificam-se como sendo viáveis para tal objetivo, visto que foi possível determinar
aproximações válidas para o valor real da função apresentada, sendo o mais efetivo o método da
posição falsa. Como esperado, houve significativas variações em relação a quantidade de interações
realizadas por cada método até se chegar a uma aproximação válida para o valor da raiz, este
resultado se dá pelo fato de que cada método apresenta uma dinâmica diferente para a realização dos
cálculos, a qual reflete diretamente no número de interações, bem como, no valor aproximado da
raiz.

Você também pode gostar