Escolar Documentos
Profissional Documentos
Cultura Documentos
São Cristóvão
2023
1
Na aula passada...
Passado...
• Método de Newton-Raphson
• Método da Bissecção
2
Introdução
3
Método da Falsa Posição
4
Método da Falsa Posição
5
Método da Falsa Posição
• Exceções...
6
Método da Falsa Posição
7
Método da Falsa Posição
8
Método da Falsa Posição
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
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)
18
Método da Falsa Posição
• Exemplo 2: Ache as raízes da seguinte equação:
𝑥² − 𝑐𝑜𝑠 2 𝑥 − 4𝑥 = 0
𝑓 𝑥 = 𝑥² + 𝑐𝑜𝑠 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
x,n = rfalsi(y,x1,x2)
20
Método da Secante
• 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
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
26
Método da Secante
Método das Secantes
27
Método da Secante
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
2𝑥² − 5𝑥 + 3 = 0
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)
31
Método da Secante
• Exemplo 4: Ache as raízes da seguinte equação pelo método da secante:
𝑥² − 𝑐𝑜𝑠 2 𝑥 − 4𝑥 = 0
𝑓 𝑥 = 𝑥² + 𝑐𝑜𝑠 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)
33
Funções em Scipy
• newton(f,x0)
• bisect(f,x1,x2)
• fsolve(f,x0)
• root(f,x0)
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
36
Próximas Aulas
• Interpolação
• Ajustes de Curvas
• Integração Numérica
• Método das Diferenças Finitas
...
37
Referências
38