Você está na página 1de 42

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
Nas aulas anteriores...

Métodos numéricos
• Os métodos numéricos, ou análise numérica, são procedimentos simplificados para
obter soluções numéricas aproximadas para equações e problemas de álgebra,
cálculo e outros campos da matemática.
• Esses procedimentos devem ser organizados em etapas definidas e gerais que sejam
aplicáveis ao problema para o qual são formulados para resolver.
• Essas etapas são conhecidas como algoritmos e podem ser programadas usando uma
linguagem de programação.

2
Introdução

Objetivos desta aula


• Programar aplicando os métodos numéricos uma função, em
Python, para o cálculo de raízes de equações e seu passo a
passo simples e que produzam a solução numérica no grau de
precisão necessário de forma eficiente.
• Nesta aula veremos os seguintes métodos:
• Método iterativo Simples ou Ponto Fixo Simples...
• Método de Newton-Raphson
• Método da Bissecção
3
Raízes das Equações de ordem Superior

• As equações de ordem superior podem ser polinômios ou equações


contendo radicais e/ou funções transcendentais (trigonométricas e
logarítmicas). O exemplo mais simples de equações ordem superior é a
equação de segundo grau:

𝒂𝒙² + 𝒃𝒙 + 𝒄 = 𝟎
• Suas raízes podem ser facilmente obtidas pela equação de Bhaskara:

−𝒃 ± 𝒃² − 𝟒𝒂𝒄
𝒙=
𝟐𝒂

• Mas no caso de equações de graus superiores (potência) ou quando


existem termos de funções transcendentais, os métodos numéricos
tornam-se a única maneira de obter suas raízes.

4
Método Iterativo Simples

• Iterações de ponto fixo simples, também chamadas de iterações


lineares, iterações simples, aproximações sucessivas,
substituições sucessivas...
• É o método mais simples usado para encontrar raízes de
equações.

• Método Aberto!

5
Método Iterativo Simples

• Neste método, as equações são rearranjadas para ter a variável


no lado esquerdo da equação.
𝒇 𝒙 =𝟎

𝒙=𝒈 𝒙

• Um valor inicial da variável, conhecido como estimativa inicial, é


substituído no lado direito da equação e um novo valor para a
variável é calculada.
A vantagem de escrever a equação dessa forma é que podemos prever o valor de um
novo x a partir do valor de x antigo.

𝒙𝑖+1 = 𝒈 𝑥𝑖
6
Método Iterativo Simples

• Na segunda iteração (repetição) o novo valor é


substituído no lado direito da equação.
• Este ciclo continuará até que o valor antigo e o novo
valor resultante da variável se tornem, teoricamente,
iguais.
• Assim, esse valor será uma das raízes das equações.
Outra raiz pode ser encontrada da mesma maneira
apenas alterando a estimativa inicial.
7
Método Iterativo Simples
• Para o critério de Parada podemos utilizar :

É conveniente expressar os erros de acordo com o número de algarismos


significativos da aproximação. Segundo Scarborough (1966), se o critério abaixo ser
satisfeito, é possível ter certeza de que o resultado está correto até pelo menos para
os n algarismos significativos.

𝜀𝑠 = 0,5𝑥102−𝑛 %
8
Método Iterativo Simples

Grau de acurácia
➢ A satisfação da condição de igualdade entre os valores
numéricos é extremamente difícil se não impossível.

➢ A prática feita em métodos numéricos é a especificação do grau


de acurácia (tolerância) necessária para a solução.

➢ Representa a diferença absoluta máxima entre os valores da


variável da equação resultante de duas iterações sucessivas, em
outras palavras, a diferença entre o valor antigo e o novo.

9
Método Iterativo Simples
• Vamos escrever o passo-a-passo da solução no seguinte algoritmo:
• 1° Passo: Reorganize a equação para que a variável seja colocada no lado esquerdo.
➢ Por exemplo: x²-2x+8= 0 pode ser reescrita por x=0.5x²+4 ou 𝐱 = 𝟐𝒙 − 𝟖
• 2° Passo: Assuma um valor inicial da variável para iniciar a primeira iteração.
• 3° Passo: Substitua o valor da variável no lado direito da equação e calcule um novo valor para a
variável.
𝒙𝒏𝒆𝒘 = 𝟎. 𝟓𝒙² + 𝟒

• 4° Passo: Se o novo valor da variável não for igual ao valor anterior, considere o novo como o valor
da variável.
• 5° Passo: Repita os passos 3 e 4 até que o novo valor seja igual ao valor antigo da variável.
• 6° Passo: Caso o novo valor não se aproxime do valor antigo (a diferença aumenta a cada iteração)
pare o cálculo e tente outro valor inicial ou outro rearranjo da equação dada.
10
Método Iterativo Simples

• Exemplo 1: Ache as raízes da equação abaixo:

2𝒙² − 𝟓𝒙 + 𝟑 = 𝟎
• Solução Analítica: x=1 e x=1,5.
• Solução: O primeiro passo no algoritmo deve ser executado manualmente. Assim, a
equação pode ser rearranjada nas formas:

2𝑥² + 3
𝑥= (eq. 1)
5

• Ou:
5𝑥 − 3
𝑥= (eq. 2)
2

11
Método Iterativo Simples

• Implementando a primeira equação em Python, podemos fazer algumas considerações:


x=0 #chute inicial
for iteracao in range (1,101): #assume que 100 iterações é o
suficiente
print(iteracao,x) #escreve o numero de iterações e o x
xnew=(2*x**2+3)/5 #calcula o novo valor de xnew
if x==xnew: #condição de igualdade
break # quebra o laço for
x=xnew #atribui o valor de xnew a x
print(iteracao, xnew) #escreve o numero de iterações e o
xnew no final do loop

➢ Os valores do x e do xnew na 100° interação são:

x = 0.9999999999394882
Xnew= 0.9999999999515905

• Devemos definir o grau de acurácia do nosso cálculo! E a segunda raiz?


12
Método Iterativo Simples
• Definindo o grau de acurácia de 0.0000001, limitando a raiz a 5 casas decimais ,
temos 50 iterações com raiz 1.00000 para chute inicial de x=0.

x=0 #chute inicial


for iteracao in range (1,101): #assume que 100 iterações é o suficiente
xnew=(2*x**2+3)/5 #calcula o novo valor de xnew
print(iteracao,x) #escreve o numero de iterações e o x
if abs(xnew-x)<0.000001: #grau de acuracia
break # quebra o laço for
x=xnew #atribui o valor de xnew a x
print("o valor da raiz é %0.5f" % xnew) #escreve o valor da raiz com 5 casas
decimais (tipo float)
print("o numero de iterações: %d" % iteracao) #escreve o numero de iterações
(tipo inteiro)

• E para o chute x=2, para encontrar a segunda raiz?

13
Método Iterativo Simples

• Para o chute x=2, o programa fornece:

➢ Iterações 14
➢ Raiz: 6.144936887624888e+145

• O que há de errado? Aplicar Critério de convergência!

• Vamos tentar pela segunda equação:

5𝑥 − 3
𝑥=
2

14
Método Iterativo Simples
• Precisamos Importar a função raiz quadrada (sqrt) da biblioteca math
• temos para o chute inicial de x=1.6:
from math import sqrt
x= 1.6 #chute inicial
for iteracao in range (1,101): #assume que 100 iterações é o suficiente
xnew= sqrt((5*x-3)/2) #calcula o novo valor de xnew
if abs(xnew-x)<0.000001: #grau de acurácia
break # quebra o laço for
x=xnew #atribui o valor de xnew a x
print("o valor da raiz é %0.5f" % xnew) #escreve o valor da raiz com 5 casas
decimais (tipo float)
print("o numero de iterações é de %d" % iteracao) #escreve o numero de
iterações (tipo inteiro)
➢ o valor da raiz é 1.50001
➢ o número de iterações é de 53

15
Método Iterativo Simples
• Implementando agora a primeira equação pelo laço while, temos:

x= 4 #chute inicial
xnew=0
iteracao =0
while abs(xnew-x)>=0.000001: #grau de acuracia
iteracao = iteracao + 1
x = xnew # atribui o valor de xnew a x
xnew = (2*x**2+3)/5 #calcula o novo valor de xnew
print("o valor da raiz é %0.5f" % xnew) #escreve o valor da raiz com 5 casas decimais (tipo float)
print ("o numero da iteracao e %d" %iteracao) #escreve o numero da iteracao

➢ o valor da raiz é 1.00000


➢ o número da iteração é 50

16
Convergência e Divergência

• A solução obtida para a equação quadrática dada acima mostrou que os dois valores
da variável se aproximam a cada iteração e no número de iteração 50 , ambos os
valores são considerados iguais quando o grau de acurácia foi satisfeito.
• Esse comportamento é conhecido como convergência de valores para uma solução
específica.
• O gráfico a seguir mostra a convergência dos valores para 1.

17
Convergência e Divergência

• Ao contrário, a divergência ocorre quando a diferença entre os valores da variável


aumenta a cada iteração até que o valor final do loop de iterações seja alcançado.
• A divergência pode ser resultado de vários fatores de acordo com o tipo de equação, a
suposição inicial e/ou método de rearranjo.
• O gráfico a seguir mostra o comportamento das variáveis em caso de divergência para
a equação 𝑥 = cos 𝑥 − 1.

18
Convergência e Divergência

• Uma função de iteração deve satisfazer a


condição
𝒇 𝜺 =𝟎 ↔𝒈 𝜺 = 𝜺

• Dada uma equação f(x)=0 podemos definir


diversas funções de iteração.

-Nem todas elas são úteis


-Existem certas condições para garantir a convergência
com certa função de iteração.

19
Convergência e Divergência

Critérios de convergência Método Iterativo Simples

• Seja ε um zero real da função f, I um intervalo de separação de ε


centrado em ε e g uma função de iteração f(x)=0

• Se
1° g(x) e g’(x) forem continuas em I
2° 𝑔′(𝑥) ≤ 𝑘 < 1, ∀ 𝑥 ∈ 𝐼
3° 𝑥0 ∈ 𝐼

• Então a sequência {𝑥𝑖 } gerada por 𝑥𝑖+1 = 𝑔 𝑥𝑖 , 𝑖 = 0,1,2...


Converge para ε

20
Convergência e Divergência
Método Gráfico das Duas Curvas

Convergência ocorre quando:


𝑔′ 𝑥 <1

21
Método de Newton-Raphson

Isaac Newton
1671

Joseph Raphson
1690

22
Método de Newton-Raphson

• O método de Newton-Raphson tem o mesmo procedimento da


iteração simples com uma diferença principal na primeira etapa.
• É um dos métodos mais usados para localizar raízes.
• O método de Newton-Raphson é aberto
• Em vez de simples rearranjo da equação dada, uma nova equação
deve ser formulada usando a equação dada e sua primeira
derivada em relação à sua variável.
• Pode ser deduzido por interpretação geométrica.

23
Método de Newton-Raphson

• A fórmula a ser colocada no código é a seguinte:

𝑓 𝑥𝑖 −0
𝑓′(𝑥𝑖) = 𝑥𝑖 −𝑥𝑖+1

𝑓(𝑥𝑖 )
𝑥𝑖+1 = 𝑥𝑖 − 𝑓′(𝑥𝑖 )

24
Método de Newton-Raphson

• De acordo com a Equação abaixo, o erro é aproximadamente proporcional ao


quadrado do erro anterior. Isso significa que o número de casas decimais corretas
aproximadamente dobra a cada iteração. Tal comportamento é chamado de
convergência quadrática.

25
Método de Newton-Raphson

• Exemplo 2: 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 e então,
encontrar a sua primeira derivada.
• Então para a função:
f(x) =2𝑥² − 5𝑥 + 3 = 0
• Sua primeira derivada é:
f’(x) = 4𝑥 − 5 = 0
• Então a formula para ser inserida no código é:

2𝑥² − 5𝑥 + 3
𝑥𝑛𝑒𝑤 =𝑥 −
4𝑥 − 5
26
Método de Newton-Raphson

• Notamos que pelo método de Newton-Raphson o número de iterações foi de


5 para x=0.
• Se compararmos com o método iterativo simples, o método de Newton-
Raphson foi 10x mais veloz que o iterativo simples (50 iterações), gerando
menor custo computacional.
x=0
for iteracao in range(1,101):
xnew = x-(2*x**2-5*x+3)/(4*x-5) #Formula do método Newton-Raphson
if abs(xnew - x)< 0.00001:
break
x=xnew
print("a raiz da equação e %0.5f" %xnew)
print("o numero de iteracoes foi de %d" % iteracao)
27
Método de Newton-Raphson

• Notamos que pelo método de Newton-Raphson o número de iterações


foi de 4 para x=2.
• Outra vantagem é que somente a formulação da equação dada pode ser
usada no cálculo da(s) outra(s) raiz(es).
x=2
for iteracao in range(1,101):
xnew = x-(2*x**2-5*x+3)/(4*x-5) #Formula do método Newton-Raphson
if abs(xnew - x)< 0.00001:
break
x=xnew
print("a raiz da equação e %0.5f" %xnew)
print("o numero de iteracoes foi de %d" % iteracao)

28
Método de Newton-Raphson

• Exemplo 3: Ache as raízes da seguinte equação:


𝒙² − 𝒄𝒐𝒔𝟐 𝒙 − 𝟒𝒙 = 𝟎
• Solução: O primeiro passo é colocar a equação em uma forma de função e então,
encontrar a sua primeira derivada.
• Então para a função:
𝑓 𝑥 = 𝑥² + 𝑐𝑜𝑠 2 𝑥 − 4𝑥

• Sua primeira derivada é:


𝑓′ 𝑥 = 2𝑥 − 2𝑐𝑜𝑠𝑥𝑠𝑒𝑛𝑥 − 4
• Então a formula para ser inserida no código é:

𝑥² + 𝑐𝑜𝑠 2 𝑥 − 4𝑥
𝑥𝑛𝑒𝑤 =𝑥 −
2(𝑥 − 𝑐𝑜𝑠𝑥𝑠𝑒𝑛𝑥 − 2)

29
Método de Newton-Raphson

• Pelo método de Newton-Raphson o número de iterações foi de 6 e raiz de


3.85030 para x=2.
from math import * #importa todas as funções matemáticas da
biblioteca math
x=2 #chute inicial
for iteracao in range(1,101):
xnew = x-(x**2+ cos(x)*cos(x)-4*x)/(2*(x-cos(x)*sin(x)-2))
#Formula do método Newton-Raphson
if abs(xnew - x)< 0.00001: #grau de acurácia
break
x=xnew
print("a raiz da equação e %0.5f" %xnew)
print("o numero de iteracoes foi de %d" % iteracao)
30
Método de Newton-Raphson

• Pelo método de Newton-Raphson o número de iterações foi de 2 e raiz de


0.25032 para x=0.
from math import * #importa todas as funções matemáticas da
biblioteca math
x=2 #chute inicial
for iteracao in range(1,101):
xnew = x-(x**2+ cos(x)*cos(x)-4*x)/(2*(x-cos(x)*sin(x)-2))
#Formula do método Newton-Raphson
if abs(xnew - x)< 0.00001: #grau de acurácia
break
x=xnew
print("a raiz da equação e %0.5f" %xnew)
print("o numero de iteracoes foi de %d" % iteracao)
31
Método de Newton-Raphson

Critérios de convergência Método Newton-Raphson

• Caso 𝑥0 ∈ 𝐼, a sequência de {𝑥𝑘 } gerada pelo


processo iterativo da equação abaixo, converge
para a raiz 𝒇(𝒙 ) 𝒊
𝒙𝒊+𝟏 = 𝒙𝒊 − 𝒇′(𝒙𝒊 )

• Em geral, afirma-se que o método de Newton


converge desde que 𝑥0 seja escolhido
“suficientemente próximo” da raiz.

32
Método da Bissecção

Baseado no
Teorema de Bolzano
• Para f continua em [a, b]
• Para f(a) e f(b) com sinais contrários
• Então f terá uma raiz em (a, b)

Bernard Bolzano
1817

33
Método da Bissecção

• Não é um método aberto


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

𝑆𝑒 𝑦1∗ 𝑦2 < 1

𝑥1 + 𝑥2
𝑥ℎ =
2

...
𝑥ℎ2

34
Método da Bissecção

• Este método baseia-se no fato de que uma raiz de uma equação é o ponto
onde sua curva cruza o eixo x. Por exemplo, o gráfico da equação:
2𝑥² − 5𝑥 + 3 = 0

35
Método da Bissecção

• A curva cruza o eixo x em 1 e 1,5 (ou seja, quando y = 0), que são as raízes da
equação. Assim, podemos simplesmente imaginar o método da bissecção
como uma busca por esses pontos ao longo do eixo x.
• Na verdade, ele procura o ponto que é englobado por dois valores de x com
valores correspondentes de y de sinais diferentes. Então o intervalo entre os
valores de x é reduzido pela metade e a metade que contém a raiz é
reduzida pela metade novamente e assim por diante.
• Por sucessivas operações de bissecção, o intervalo torna-se cada vez menor
e x1 e x2 aproximam-se da raiz. Nesse ponto, y1 e y2 se aproximam de zero.
• Alterando os pontos de busca iniciais, as outras raízes podem ser
determinadas da mesma maneira.:
36
Método da Bissecção

O algoritmo do Método da Bissecção

1° Passo: Insira (Input) os valores de x que abrangem o intervalo onde a raiz é


esperada
2°Passo: Calcular os valores correspondentes para y
3°Passo: Verifique a diferença de sinal entre os valores de y
4°Passo: Se os sinais são iguais, pare!
5° Passo: Calcule o valor de x na metade do intervalo
6° Passo: Verifique a diferença de sinal entre os valores de y primeiro intervalo
7° Passo: Se os sinais são opostos, x1 e x2 são os limites da primeira metade do
intervalo
8° Passo: Senão os sinais são semelhantes , x1 e x2 são os limites do intervalo da
segunda metade
9°Passo: Se os valores de y se aproximarem de zero, imprima o valor de x e pare!
10° Passo: Senão repita os passos 5 a 10
37
Método da Bissecção

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


2𝒙² − 𝟓𝒙 + 𝟑 = 𝟎
• 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 e então,
encontrar o valor de f(x).

• Então para a função:

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

• Vamos considerar como chutes iniciais x1=0 e x2= 1.2


f(0) =3 f(1.2) = - 0.12
• Como f(0)*f(1.2) < 0 , então aplicar método.
38
Método da Bissecção

x1 = 0
x2 = 1.2
y1 = 2*x1**2-5*x1+3
y2 = 2*x2**2-5*x2+3

if y1*y2 > 0:
print('Não existe raízes neste intervalo')
exit

for i in range(1,101):
xh = (x1+x2)/2
yh = 2*xh**2-5*xh+3
y1 = 2*x1**2-5*x1+3
if abs(y1) < 1.0e-6:
break
elif y1*yh < 0:
x2 = xh
else:
x1 = xh
print('A raiz é: %.5f' % x1)
print('Numero de bisecções: %d' % i)

39
Método da Bissecção

Critérios de convergência Método Bissecção

• Se f(x) é continua no intervalo [a,b]

• Se f(a) x f(b)<0

40
Próximas Aulas

• Método da Falsa Posição


• Método da Secante
• Funções no SciPy
• Interpolação
• Ajuste de Curvas

41
FIM

42

Você também pode gostar