Você está na página 1de 9

O problema de raízes múltiplas

Claudomiro Aguiar da Cunha ∗ Erlon Araujo†


‡ §
Fabrício Garcia da Silva Alves Erivan Sampaio Carneiro

2021

Resumo

Neste artigo fizemos um breve apanhado do método de Newton para o caso de uma raiz
múltipla. Implementamos o método no algoritmo convencional e no algoritmo adaptado
a raiz múltipla e comparamos sua velocidade de convergência. Ao final aplicamos o
método ao exemplo prático das vigas.

Palavras-chaves: Método de Newton. Raízes Múltiplas. Convergência.

Introdução
É muito comum nos problemas de cálculo, não conseguirmos determinar soluções
exatas (analiticamente) de diversos problemas. Ao tratarmos de algumas equações, EDO’s,
EDP’s, integrais, podemos eventualmente precisar de métodos numéricos para otimizar os
cálculos de soluções aproximadas e que tenham considerável confiança em seus resultados.
O método de Newton talvez seja o método mais usado para encontrar raízes de
polinômios. Ele nada mais é do que um caso particular do método do Ponto Fixo, ou seja,
é uma forma especial de encontrar uma função de iteração φ(xk ) = xk+1 que foi publicada
por Newton em 1687. Newton pensou numa forma de garantir e acelerar a convergência
do método do Ponto Fixo através da escolha de uma φ(x) tal que φ0 (ξ) = 0, onde ξ é o
ponto fixo de φ. Esse método requer o conhecimento da forma analítica f 0 (x), mas sua
velocidade de convergência é surpreendente.
Precisamente, temos o seguinte teorema

<claudomiro.aguiar@discente.ufma.br>

<laurocesar@laurocesar.com>

<fabricio.alves@discente.ufma.br>
§
<erivan.sampaio@discente.ufma.br>

1
Dada uma função f de classe C 2 , num intervalo I que contenha uma raiz ξ tal que
f (ξ) = 0. Se supormos que f 0 (c) 6= 0, sempre existe um intervalo I ⊂ I, contendo a raiz c
de modo que se x0 ∈ I a sequência {xk } gerada pela fórmula recursiva

f (xk )
xk+1 = xk − (1)
f 0 (xk )

irá convergir para c. (Ver Figura 1)

Figura 1 – Convergência do método de Newton

Fonte: Autoria Própria

Se supomos que existe apenas uma raíz no intervalo I, então método de Newton
pode ser deduzido com base na forma geral das funções de iteração do Ponto Fixo.
Dada uma equação f (x) = 0 e partindo da forma geral para φ(x) deseja-se encontrar
A(x) de forma que φ0 (ξ) = 0.

φ(x) = x + A(x)f (x)


⇒ φ0 (x) = 1 + A0 (x)f (x) + A(x)f 0 (x) = 1 + A(x)f 0 (x) (poisf (x) = 0)
⇒ φ0 (ξ) = 1 + A(ξ)f 0 (ξ)

Assim, φ0 (ξ) = 0 ⇔ 1 + A(ξ)f 0 (ξ) = 0 ⇒ A(ξ) = −1f 0 (ξ), donde A(x) = −1f (x).
Portanto, dada f (x) = 0 a função de iteração de Newton será:

φ(x) = x − f (x)f 0 (x) (2)

No entanto, nesta fórmula está subentendido que a raiz possui multiplicidade


1. A verdade é que embora o método de Newton pareça muito eficiente quanto a sua
convergência, há casos nos quais ele possui um desempenho insatisfatório, especialmente
quando se trata de equações com múltiplas raízes. Por isso estamos interessado em estender
essa definição para o caso em que a raiz tem multiplicidade p para fazer as devidas
modificações. Comecemos observando que o método de Newton perde sua convergência
quadrática se f 0 (ξ) = 0. Este é um caso de raiz múltipla de f (x) = 0.
[Multiplicidade de uma raiz] Dizemos que ξ é uma raiz múltipla de f (x) = 0 com
multiplicidade p, quando f (ξ) = f 0 (ξ) = · · · = f (p−1) (ξ) = 0 e f p (ξ) 6= 0.

2
Por exemplo, Seja f (x) = ex − x − 1. Então f (x) tem um zero de multiplicidade 2
em x = 0. Com efeito, temos

f (x) = ex − x − 1, f 0 (x) = ex − 1, e f 00 (x) = ex

De modo que

f (0) = e0 − 0 − 1 = 0, f 0 (0) = e0 − 1 = 0, e f 00 (0) = e0 = 1

Logo, por definição, f tem uma raiz de multiplicidade 2 em x = 0. Desse modo, ao


implementarmos o método de Newton no Matlab (Algoritmo 1), percebemos que serão
necessárias k = 16 iterações para conseguirmos uma aproximação da raiz com erro = 10−6 .

Algoritmo 1 - Implementação do método de Newton no MATLAB

syms x
fa(x)= exp^{x}-x-1
df(x)= diff(fa(x))

erro=10^(-6)
x1=1
n=0
while abs(fa(x1)) > erro
n=n+1
x2 = double(x1-fa(x1)/df(x1))
x1= x2

end
xa=x2
na=n
double(f(xa))

Os primeiros dezesseis termos gerados pelo método de Newton aplicado a f com


x0 = 1 são

x0 = 1
f (x0 ) e−2
x1 = x0 − 00
=1− ≈ 0, 58198
f (x0 ) e−1
f (x1 ) 0, 20760
x2 = x1 − 00 = 0, 58198 − ≈ 0, 31906
f (x1 ) 0, 78957
x3 = 0.16800
x4 = 0.08635
x5 = 0.04380
x6 = 0.02206
x7 = 0.01107
x8 = 005545
x9 = 2, 7750 × 10−3

3
x10 = 1, 3881 × 10−3
x11 = 6, 9411 × 10−4
x12 = 3, 4703 × 10−4
x13 = 1, 7416 × 10−4
x14 = 8, 8041 × 10−5
x15 = 4, 2610 × 10−5
x16 = 1, 9142 × 10−6

O método de Newton para raízes múltiplas é deduzido da seguinte maneira: Seja


f (x) uma função tal que ξ seja raiz de f (x) = 0 com multiplicidade p. A fórmula de Taylor
para f (x) numa vizinhança de ξ até o termo de ordem (p − 1) é dada por:

f (p−1) (ξ)(x − ξ)p−1


f (x) = f (ξ) + f 0 (ξ)(x − ξ) + · · · + + Rp (ξx )
(p − 1)!

f (p) (ξp )(x−ξ)p


onde Rp (ξx ) = p! com ξp ∈ (x, ξ). Como ξ tem multiplicidade p por
hipótese então
f (p) (ξp )(x − ξ)p
f (x) =
p!
A dedução do método de Newton é baseada no modelo em que a função f (x) é tal que
f (p) (x) é constante, para x próximo de ξ. Suponha que f (p) (x) = α. Temos que

α(x − ξ)p
f (x) = = β(x − ξ)p
p!
α
onde β = p! . Assim, derivando f ficamos com

f 0 (x) = βp(x − ξ)p−1


f (x) β(x−ξ)p x−ξ
Portanto, f 0 (x) = βp(x−ξ)p−1
= p , donde

f (x)
ξ =x−p (3)
f 0 (x)

Desse modo, demonstramos que a raiz ξ com multiplicidade p nada mais é do que
o método de Newton tradicional à menos do número p multiplicando a parcela ff0(x)
(x) em
cada etapa.
Vamos usar o exemplo para ilustrar como a modificação do método de Newton
dada pela equação 3 melhora a velocidade de convergência. Para calcular a sequência de
iterados nesse caso usaremos o algoritmo a seguir.

Algoritmo 2 - Método de Newton - Melhorado no MATLAB

syms x
fa(x)= exp^{x}-x-1

4
df(x)= diff(fa(x))

erro=10^(-6)
x1=6
n=0
while abs(fa(x1)) > erro
n=n+1
x2 = double(x1-2*fa(x1)/df(x1))
x1= x2

end
xa=x2
na=n
double(f(xa))

Com o método aperfeiçoado precisaremos apenas dos quatro primeiros termos da


sequência de iterados para alcançarmos o erro desejado, os quais são

x0 = 1
f (x0 ) e−2
x1 = x0 − p · 00
=1−2 ≈ 0, 16395
f (x0 ) e−1
f (x1 )
x2 = x1 − p · 00 ≈ 4, 4781 × 10−3
f (x1 )
x3 ≈ 3, 3423 × 10−6
x4 ≈ 3, 2005 × 10−9

Esta velocidade está consideravelmente mais rápida do que a do método de Newton


simples usada no exemplo . Os resultados foram obtidos usando um sistema com 6 algarismos
significativos
O próximo passo é formalizar o conceito de convergência para esta forma.

1 Convergência do método de Newton para raízes múltiplas


Se ξ é uma raíz de f (x) = 0 com multiplicidade p, dados uma aproximação inicial
x0 para ξ e ε1 , ε2 precisões estabelecidas então, para k = 1, 2, . . . faça:

f (x0 )
x1 = x0 − p ·
f 0 (x0 )

Se |f (x1 )| < ε1 ou se |x1 − x0 | < ε2 então faça x = x1 . Caso contrário recomece o


processo.
De uma forma análoga, podemos introduzir um fator p no método da secante para
trabalhar com raízes múltiplas. Assim, dado x0 obtemos que

f (xk )(xk − xk−1 )


xk+1 = xk − p ·
f (xk ) − f (xk+1 )

5
para k = 0, 1, . . .. Temos também o problema de conseguir aproximar computacionalmente
uma raiz múltipla e também o de saber qual é essa multiplicidade p. No entanto estes
problemas não serão tratados neste trabalho.
Sejam f ∈ C 2 como no Teorema e ξ uma raiz de multiplicidade p de f (x) = 0.
Então a sequência gerada pelo método de Newton converge quadraticamente.
Pela equação temos que

f (xk )
xk+1 = xk −
f 0 (xk )
f (xk )
⇒ xk+1 − ξ = xk − 0 −ξ
f (xk )
f (xk )
⇒ (xk+1 − ξ)p = (xk − ξ)p − p · 0
f (xk )
f (xk )
⇒ ek+1 = ek − p · 0
f (xk )
ek
onde ek = (xk − ξ)p, isto é, xk − ξ = p .
Por outro lado, a fórmula de Taylor de ordem p = 1 de f (x) = 0 em torno de xk é
dada por:
f 00 (ck )(x − xk )2
f (x) = f (xk ) + f 0 (xk )(x − xk ) +
2
com ck entre x e xk . Assim, analisando a fórmula em x = ξ temos que

f 00 (ck )(ξ − xk )2
0 = f (ξ) = f (xk ) − f 0 (xk )(ξ − xk ) +
2
f 00 (c )(ξ − x )2
k k
⇒ f (x) = f 0 (xk )(ξ − xk ) −
2
f (x) f 00 (ck )(ξ − xk )2
⇒ = (ξ − xk ) −
f 0 (xk ) 2f 0 (xk )
f 00 (ck )(ξ − xk )2 f (x)
⇒ = (ξ − xk ) − 0
2f 0 (xk ) f (xk )
p f 00 (ck )(ξ − xk )2 f (x)
⇒ · = p · (ξ − xk ) − p · 0
2 f 0 (xk ) f (xk )
p f 00 (ck ) e2k f (x)
⇒ · 0 · = ek − p · 0 = ek+1
2 f (xk ) p2 f (xk )
1 f 00 (ck ) ek+1
⇒ =
2p f 0 (xk ) e2k
ek+1 1 f 00 (ck ) 1 f 00 (limk→∞ ck ) 1 f 00 (ξ)
lim = lim 0 = = =C
k→∞ e2 k 2p k→∞ f (xk ) 0
2p f (limk→∞ xk ) 2p f 0 (ξ)

onde C é uma constante e ck → ξ, ∀ck ∈ (x, xk ). Assim, a sequência (xk ) gerada


pelo método de Newton tem ordem 2. Portanto, se f satisfizer as condições de continuidades
exigidas a iteração de f terá convergência quadrática. Teoricamente a única desvantagem
desse método é o procedimento mais trabalhoso de cálculo das iterações.
A seguir vamos tratar o problema proposto por Ruggiero (p. 103, (??)).

6
1.1 O problema das Vigas
Sejam duas vigas de madeira de 20 e 30 metros respectivamente se apoiam nas
paredes de um galpão como mostra a Figura 2. Se o ponto em que se cruzam está a 8
metros do solo, qual a largura do galpão?

Figura 2 – O problema das vigas

Fonte: Autoria Própria

Nesta situação, observe que o triângulo BAD é semelhante ao triângulo BF E.


Assim, temos as seguintes relações:

y 30 y · EA
= ⇒ x= (4)
x EA 30

Por outro lado, segue do Teorema de Pitágoras que


p
EA = 64 + x2 (5)

Substituindo 5 em 4 obtemos

y 64 + x2
x= ⇒ 900x2 − x2 y 2 = 64y 2
30
8y
⇒ x= p (6)
900 − y 2

Substituindo a equação 6 em 5 temos

v !2
u
u 8y 240
EA = t64 + p =p (7)
900 − y 2 900 − y 2

Analogamente, pelo Teorema de Pitágoras,

v !2
u
q
2
u 8y
BE = 64 + (y − x) = t64 + y−p (8)
900 − y 2

7
Como os triângulos ABC e AF E são semelhantes temos que

y 20
= ⇒ y · BE + 20x − 20y = 0
y−x BE
!
yEA
⇒ yBE + 20 −y =0
30
2
 
⇒ y BE + (EA − 30) = 0 (9)
3

Assim, substituindo as equações 7 e 8 em 9 temos que


v 
u !2 !
u 8y 2 240
y t64 + y−p + − 30  = 0 (10)

p
900 − y 2 3 900 − y 2

Como y > 0 então 0 não é raiz desta equação. Assim, para que a igualdade seja é
verdadeira é necessário que
v !2 !
u
u 8y 2 240
t64 + y−p + p − 30 =0 (11)
900 − y 2 3 900 − y 2

Queremos enfim, resolver a equação 11, pois esta nos dará a largura do galpão.
Aplicando o método de Newton com x0 = 11 e erro ε = 10−6 obtemos, após n = 5 iterações,
a raíz ξ = 17, 98, a qual é a solução do nosso problema. Segue o algoritmo do MATLAB
usado no calculo das iterações

Algoritmo 3 - O problemas das vigas pelo método de Newton no MATLAB

syms x
fa(x)= sqrt(64+(x-(8*x)/(sqrt(64+x^2)))^2)+(2/3)*(240/(sqrt(900-x^2))-30)
pretty(fa(x))
df(x)= diff(fa(x))

erro=10^(-6)
x1=11
n=0
while abs(fa(x1)) > erro
n=n+1
x2 = double(x1-fa(x1)/df(x1))
x1= x2

end
xa=x2
na=n
double(f(xa))

8
Considerações finais

Referências

Você também pode gostar