Você está na página 1de 38

Universidade Federal de Sergipe

Métodos Numéricos para Engenharia


Mecânica
Raízes de Equações

Prof. Dr. Alexandre Ramos

São Cristóvão
2023
1
Na aula passada...

Passado...

• Método iterativo Simples ou Ponto Fixo Simples...

• Método de Newton-Raphson

• Método da Bissecção

2
Introdução

Objetivos desta aula

• Nesta aula veremos:


• Método da Falsa Posição
• Método da Secante
• Funções no SciPy
• Comparativo entre os Métodos

3
Método da Falsa Posição

Método da Falsa Posição


• Embora o método da bissecção seja uma técnica válida para determinar
raízes, sua abordagem do tipo “força bruta” é relativamente ineficiente.
• O método da falsa posição é uma alternativa baseada na percepção gráfica.

4
Método da Falsa Posição

Método da Falsa Posição

• Uma deficiência no método da bissecção é que, na divisão do intervalo de x1


a x2 em metades iguais, não são levados em conta os módulos de f(x1) e
f(x2).

5
Método da Falsa Posição

Método da Falsa Posição

• Exceções...

6
Método da Falsa Posição

Método da Falsa Posição

• É um método intervalar e exigem duas estimativas iniciais para a raiz.

7
Método da Falsa Posição

• O método da falsa posição que explora essa percepção gráfica é


ligar f(x1) e f(x2) por uma reta.

8
Método da Falsa Posição

• A intersecção dessa reta com o eixo x representa uma


estimativa melhorada da raiz.

9
Método da Falsa Posição
• O fato de a substituição da curva por uma reta dar uma “falsa
posição” da raiz é a origem do seu nome, ou em latim, regula
falsi.

10
Método da Falsa Posição

11
Método da Falsa Posição

Derivada de AB = Derivada de BF

12
Método da Falsa Posição

• Um ponto
importante é
que o 𝑥ℎ da
reta sempre
estará no eixo
y= 0, porém o
𝑦ℎ desse ponto
deve ser em
relação a curva
desejada (em
azul).

13
Método da Falsa Posição

Derivada de AB = Derivada de BF

Então:

14
Método da Falsa Posição
Vamos escrever o passo-a-passo da solução no seguinte algoritmo:
• 1° Passo: Entre com dois valores de x que estejam compreendidos no intervalo onde a
raiz é esperada.
• 2° Passo: Calcule o valor correspondente de y.
• 3° Passo: Verifique a diferença de sinais entre os valores de y.
• 4° Passo: Se os sinais não são opostos, pare.
• 5° Passo: Calcule os valores de 𝑥ℎ 𝑒 𝑦ℎ .
• 6° Passo: se 𝑦ℎ se aproximar de zero, imprimir 𝑥ℎ (a raiz) e parar.
• 7° Passo: se 𝑦1 e 𝑦ℎ tiverem sinais opostos, faça 𝑥1 = 𝑥ℎ (a raiz) e 𝑦2 = 𝑦ℎ .
• 8° Passo: Senão faça 𝑥1 = 𝑥ℎ e 𝑦1 = 𝑦ℎ
• 9° Passo: Repita os passos de 5° ao 8°

15
Método da Falsa Posição
def rfalsi(fn,x1,x2,tol=0.001,ilimit=100):
y1=fn(x1)
y2=fn(x2)
xh=0
ipos=0
if y1 == 0: xh=x1
elif y2==0: xh=x2
elif y1*y2>0:
print("não existem raízes no dado intervalo")
else:
for ipos in range(1,ilimit+1):
xh=x2-(x2-x1)/(y2-y1)*y2
yh= fn(xh)
if abs(yh)<tol:
break
elif y1*yh<0:
x2=xh
y2=yh
else:
x1=xh
y1=yh
return xh, ipos

16
Método da Falsa Posição
• Exemplo 1: Ache as raízes da seguinte equação:

2𝑥² − 5𝑥 + 3 = 0

• Solução Analítica: x=1 e x=1,5.

• Solução: O primeiro passo é colocar a equação em uma forma de função:

f(x) =2𝑥² − 5𝑥 + 3 = 0

17
Método da Falsa Posição
def rfalsi(fn,x1,x2,tol=0.001,ilimit=100):
y1=fn(x1)
y2=fn(x2)
xh=0
ipos=0
if y1 == 0: xh=x1
elif y2==0: xh=x2
elif y1*y2>0:
print("não existem raízes no dado intervalo") Observe que se definimos x1=0 e
else:
for ipos in range(1,ilimit+1): x2=1.2, teremos 15 iterações para a raiz 1.000760 com
xh=x2-(x2-x1)/(y2-y1)*y2
yh= fn(xh) precisão (tolerância) de 0.001.
if abs(yh)<tol:
break
elif y1*yh<0:
x2=xh
E se aumentarmos a tolerância para 0.000001, o
y2=yh que acontece com o número de iterações?
else:
x1=xh
y1=yh
return xh, ipos Selecione outros valores de X para achar
def y(x): return 2*x**2-5*x+3 a outra raiz
x1= float(input("entre com o valor de x1:"))
x2= float(input("entre com o valor de x2:"))

x,n = rfalsi(y,x1,x2)

print("a raiz: %f" %x)


print("o numero de falsas posições computados foram %d“ % n)

18
Método da Falsa Posição
• Exemplo 2: Ache as raízes da seguinte equação:

𝑥² − 𝑐𝑜𝑠 2 𝑥 − 4𝑥 = 0

Solução Analítica: x=0,25032 e x=3,8503

Solução: O primeiro passo é colocar a equação em uma forma de função:

𝑓 𝑥 = 𝑥² + 𝑐𝑜𝑠 2 𝑥 − 4𝑥

19
Método da Falsa Posição
import numpy as np
def rfalsi(fn,x1,x2,tol=0.001,ilimit=100):
y1=fn(x1)
y2=fn(x2)
xh=0
ipos=0
if y1 == 0: xh=x1
elif y2==0: xh=x2
elif y1*y2>0:
print("não existem raízes no dado intervalo") Altere os valores de x1 e x2 e observe
else:
for ipos in range(1,ilimit+1): o numero de iterações!
xh=x2-(x2-x1)/(y2-y1)*y2
yh= fn(xh)
if abs(yh)<tol:
break
elif y1*yh<0:
x2=xh
y2=yh
else:
x1=xh
y1=yh
return xh, ipos

y = lambda x: x**2+np.cos(x)**2-4*x

x1= float(input("entre com o valor de x1:"))


x2= float(input("entre com o valor de x2:"))

x,n = rfalsi(y,x1,x2)

print("a raiz: %f" %x)


print("o numero de falsas posições computados foram %d"% n)

20
Método da Secante

Método das Secantes


• O método das secantes exige duas estimativas iniciais de x.

• Mas, como não é exigido que f (x) mude de sinal entre as estimativas, ele não é
classificado como um método intervalar.

• Método Aberto!

21
Método da Secante

Método das Secantes


• O método da secante é semelhante ao da falsa posição, se comparadas termo a
termo de suas equações, ambos usam duas estimativas iniciais para calcular a
aproximação da inclinação da função que é utilizada para projetar para o eixo x para
uma nova estimativa da raiz.

Falsa Posição Secante

22
Método da Secante

Pode divergir!

23
Método da Secante
Método das Secantes

O que muda em relação ao Método das Secantes não exige que y1 , y2..yn
método da Falsa Posição? tenham sinais opostos.
24
Método da Secante
Método das Secantes

O que muda em relação ao No Método da secante o novo ponto é


método da Falsa Posição? sempre conectado ao anterior.
25
Método da Secante
Método das Secantes

26
Método da Secante
Método das Secantes

27
Método da Secante

Vamos escrever o passo-a-passo da solução no seguinte algoritmo:

• 1° Passo: Entre com dois valores de x1 e x2


𝑥2 −𝑥1
• 2° Passo: Calcule o valor de 𝑥n𝑜𝑣𝑜 = 𝑥2 − f(𝑥2 )
𝑓 𝑥2 −𝑓(𝑥1 )

• 3° Passo: Se 𝑥𝑛𝑜𝑣𝑜 − 𝑥2 < tolerância, saída xnovo (a raiz) e pare


• 4° Passo: Se numero de iterações atingir o máximo , pare.
• 5° Passo: Senão faça 𝑥1 = 𝑥2 e 𝑥2 = 𝑥novo
• 6° Passo: Repita os passos de 2 a 5.

28
Método da Secante
Função Método das Secantes
def secant(fn,x1,x2,tol,maxiter):
for iteration in range (maxiter):
xnew=x2-(x2-x1)/(fn(x2)-fn(x1))*fn(x2)
if abs(xnew-x2)<tol:break
else:
x1=x2
x2=xnew
else:
print("Alerta: o numero maximo de iterações foi alcançado")
return xnew, iteration

29
Método da Secante

• Exemplo 3: Ache as raízes da seguinte equação pelo método da secante:

2𝑥² − 5𝑥 + 3 = 0

• Solução Analítica: x=1 e x=1,5.

• Solução: O primeiro passo é colocar a equação em uma forma de função:

f(x) =2𝑥² − 5𝑥 + 3 = 0

30
Método da Secante

def secant(fn,x1,x2=0,tol=0.000001,maxiter=100):
for iteration in range (maxiter):
xnew=x2-(x2-x1)/(fn(x2)-fn(x1))*fn(x2)
if abs(xnew-x2)<tol:break
else:
x1=x2
x2=xnew
else:
print("Alerta: o numero maximo de iterações foi alcançado")
return xnew, iteration

f=lambda x: 2*x**2-5*x+3
x1= float(input("Entre com o valor de x1"))

r, n = secant(f,x1)

print("raizes = %f em %d iterações" %(r,n))

31
Método da Secante
• Exemplo 4: Ache as raízes da seguinte equação pelo método da secante:

𝑥² − 𝑐𝑜𝑠 2 𝑥 − 4𝑥 = 0

Solução Analítica: x=0,25032 e x=3,8503

Solução: O primeiro passo é colocar a equação em uma forma de função:

𝑓 𝑥 = 𝑥² + 𝑐𝑜𝑠 2 𝑥 − 4𝑥

32
Método da Secante
import numpy as np
def secant(fn,x1,x2=0,tol=0.000001,maxiter=100):
for iteration in range (maxiter):
xnew=x2-(x2-x1)/(fn(x2)-fn(x1))*fn(x2)
if abs(xnew-x2)<tol:break
else:
x1=x2
x2=xnew
else:
print("Alerta: o numero maximo de iterações foi alcançado")
return xnew, iteration

f=lambda x: x**2+np.cos(x)**2-4*x
x1= float(input("Entre com o valor de x1"))

r, n = secant(f,x1,4,0.001,1000)

print("raizes = %f em %d iterações" %(r,n))

33
Funções em Scipy

Encontrando as raízes pelo Scipy

No SciPy, uma biblioteca do Python, existe muitas funções para encontrar as


raízes de equações em “optimizing and root finding module”: scypy.optimize
resolve diferentes tipos de equações por métodos numéricos avançados
como:

• newton(f,x0)
• bisect(f,x1,x2)
• fsolve(f,x0)
• root(f,x0)

Onde f é a função, x0 é o chute inicial e x1 e x2 são os intervalos iniciais.

34
Resumo Raízes de Equações

Comparação dos erros relativos percentuais verdadeiro para uma função especifica

35
Resumo Raízes de Equações

1. O método de iterações simples é o método mais simples para resolver


equações de ordem superior.
2. A tolerância é muito importante para a determinação da solução
aproximada aceitável.
3. A convergência ocorre quando os valores calculados pelas iterações
ficam cada vez mais próximas da solução. O oposto é chamado de
divergência.
4. O método de Newton-Raphson, apesar da simplicidade, é um método
que encontra a raiz com um pequeno número de iterações.
5. O método da bissecção é um método convergente quando a raiz está
localizada dentro do intervalo inicial.
6. Para um código mais limpo, é uma vantagem utilizar funções pré-
desenvolvidas em bibliotecas.

36
Próximas Aulas

• Interpolação
• Ajustes de Curvas
• Integração Numérica
• Método das Diferenças Finitas
...

37
Referências

• Steven C. Chapra e Raymond P. Canale, 2008. Métodos Numéricos Para


Engenharia. McGraw Hill. ISBN:978-8586804878

38

Você também pode gostar