Numero de Raizes Reais
Teorema de Bolzano
Seja P(x) = 0 uma equação algébrica com coeficientesreais x (a,b).
Se P(a) × P(b) < 0, então existe um número ímpar de raízes reais no intervalo (a,b).
Se P(a) × P(b) > 0, então existe um número par de raízes reais, ou não existem raízes reais no intervalo (a,b).
Regra de Sinais de Descartes
O número de raizes reais positivas n+de uma equação
algébrica é igual ao número de variações de sinais na sequencia dos coeficientes, ou menor que este número por um inteiro par, considerando-se a multiplicidade m de cada raiz e não contando os coeficientes iguais a zero.
Corolário: Se os coeficientes de uma equação algébrica são diferentes de zero, então o número de raízes reais
2
Relações de Girard
Relações entre raizes e coeficientes
Considere-se as raízes i, i=1,2,...n, e P(x) na forma fatorada:
)
(
)
)(
)(
(
)
(
x
a
nx
1x
2x
3x
nP
Desenvolvendo-se a multiplicação, tem-se:
0 ) ( ) 1 ( ) ( ) ( ) ( ) ( 3 2 1 3 1 2 4 3 1 2 1 3 2 1 2 1 3 2 1 3 1 2 1 1 3 2 1 n n n n n n n n n n n n n n n n n n n a x a x a x a x a x P 0 ) ( ) 1 ( ) ( ) ( ) ( ) ( 3 2 1 3 1 2 4 3 1 2 1 3 2 1 2 1 3 2 1 3 1 2 1 1 3 2 1 n n n n n n n n n n n n n n n n n n n a x a x a x a x a x P
0
)
(
1 0 2 2 1 1
x
a
x
a
x
a
a
x
a
x
P
n n n n n n
Comparando-se os termos de P(x) na forma de potencias:
Com os termos obtidos na multiplicação:
Pode-se escrever: 1 3 2 1 1 1 ( ) n n n n n x a x a n n n a a 1 3 2 1 Obtendo-se n n n n n n n n n n n n n n n n n
a
a
a
a
a
a
a
a
/
)
1
(
/
/
/
0 3 2 1 3 1 2 4 3 1 2 1 3 2 1 2 1 3 2 1 3 1 2 1 1 3 2 1
Comparando de forma análoga os demais termos, obtém-se as relações entre as raizes e o coeficientes da função algébrica, conhecidas como relações de Girard
Exemplo
Seja a equação:0
10
16
7
)
(
3
2
x
x
x
x
P
Cujas raizes são:
1
3
;
3
2 3 1
i
i
e
Então: 1 / ) 10 ( 10 1 ) 3 ( ) 3 ( 1 / 16 16 1 ) 3 ( 1 ) 3 ( ) 3 ( ) 3 ( 1 / ) 7 ( 7 1 ) 3 ( ) 3 ( i i i i i i i iMétodo da Bisseção
x0 x1 x2 x3Método da Bisseção
4
Critério de Parada
Se uma raiz já estiver isolada em um intervalo [a, b], então
a próxima etapa consiste na aplicação de um método para
gerar uma sequência {x0, x1, x2,...,} [a, b] que convirja para
a raiz exata f(x)=0.
Para interromper a geração da sequência acima com um próximo do valor exato, dentro da precisão desejada, um dos seguintes critérios pode ser usado:
) ( 1 1 x f ou x x x ou x x k k k k k Algoritmo Bisseção{Objetivo: Calcular a raiz de uma equação pelo método da bisseção } parâmetros de entrada: a, b, Toler, IterMax
parâmetros de saída: Raiz, Iter, Fa←f(a) { Avalia a função em a }
Fb←f(b) { Avalia a função em b }
se Fa * Fb > 0
então escreva“A função tem zero ou um numero par de raízes no intervalo” abandonar
fim se Iter← 0 repita
x ← (a + b) / 2 { encontrar o ponto do meio do intervalo}
Fx← f(x) { avaliar a função em x }
se (abs(Fx) ≤ Toler ou Iter ≥ IterMax então interrompa fim se se Fa * Fx > 0
entãoa ← x { escolhe o intervalo [x,b] }
Fa← Fx
senãob ← x { escolhe o intervalo [a,x] }
fim-se Iter← Iter + 1 fim repita Raiz ← x se abs(Fx) > Toler
então escreva“ A precisão não foi obtida “ fim se
fim algoritmo
Exemplo
Isolar todas as raizes da equação:
0
30
20
2
)
(
3
2
x
x
x
x
f
Numero de Raízes Reais
0
30
20
2
)
(
)
(
x
P
x
x
3
x
2
x
f
N+= 2 ou 0 (numero de mudanças de sinal)
N-= 1 ( número de permanencias)
Limite da raizes reais
0
30
20
2
)
(
x
x
3
x
2
x
P
n=3 P(x) P1(x) P2(x) P3(x) a0 30 1 -30 -1 a1 -20 -2 -20 -2 a2 -2 -20 2 20 a3 1 30 1 30 k 2 2 1 1 n-k 1 1 2 2 B 20 20 30 2 Li 21 1,67 6,48 1,26 L 21 0,60 -6,48 -0,79 O,60 ≤ + ≤ 21 -6,48 ≤ -≤ -0,79Observar que os coeficientes de P2(x) foram multiplicado por -1 para tornar a3> 0
6
Exercício
Encontrar a raiz positiva no intervalo [4,6] com
0
30
20
2
)
(
x
x
3
x
2
x
f
Dado a função:Iteração a b x f(x) f(a) f(b) Atingiu precisão < ou = a 1.00E-04 0 4.00 6.00 5.000000 5.000000 -18.000000 54.000000 não, continua 1 4.00 5.00 4.500000 -9.375000 -18.000000 5.000000 não, continua 2 4.50 5.00 4.750000 -2.953125 -9.375000 5.000000 não, continua 3 4.75 5.00 4.875000 0.826172 -2.953125 5.000000 não, continua 4 4.75 4.88 4.812500 -1.112061 -2.953125 0.826172 não, continua 5 4.81 4.88 4.843750 -0.155182 -1.112061 0.826172 não, continua 6 4.84 4.88 4.859375 0.332424 -0.155182 0.826172 não, continua 7 4.84 4.86 4.851563 0.087855 -0.155182 0.332424 não, continua 8 4.84 4.85 4.847656 -0.033855 -0.155182 0.087855 não, continua 9 4.85 4.85 4.849609 0.026952 -0.033855 0.087855 não, continua 10 4.85 4.85 4.848633 -0.003463 -0.033855 0.026952 não, continua 11 4.85 4.85 4.849121 0.011741 -0.003463 0.026952 não, continua 12 4.85 4.85 4.848877 0.004138 -0.003463 0.011741 não, continua 13 4.85 4.85 4.848755 0.000337 -0.003463 0.004138 não, continua 14 4.85 4.85 4.848694 -0.001563 -0.003463 0.000337 não, continua 15 4.85 4.85 4.848724 -0.000613 -0.001563 0.000337 não, continua 16 4.85 4.85 4.848740 -0.000138 -0.000613 0.000337 não, continua 17 4.85 4.85 4.848747 0.000100 -0.000138 0.000337 sim, pare //Algoritmo Bisseção
//{Objetivo: Calcular a raiz de uma equação pelo método da bisseção }
function y=f(x) y=x^3-2*x^2-20*x+30 endfunction
//parâmetros de entrada: a, b, Toler, IterMax
a=input( "limite inferior do intervalo:“); b=input( "limite superior do intervalo:“); IterMax=input( "Numero máximo de iterações“) Toler = input( "Precisão desejada: “)
//parâmetros de saída: Raiz, Iter,
FA=f(a) //{ Avaliar a espressão em a }
FB=f(b) //{ Avaliar a espressão em b }
if FA * FB > 0 then disp( “A função tem zero ou um numero par de raízes no intervalo”); exit;
end
// iterações
Iter = 0; while %t //inicio repita
x = (a + b) / 2; // { encontrar o ponto do meio do intervalo}
Fx =f(x); // { avaliar a função em x }
if Iter >= IterMax | abs(f(x)) < Toler then break end
if FA * Fx > 0 then a = x //{ escolhe o intevalo [x,b] }
FA = Fx
else b = x //{ escolhe o intevalo [a,x] }
end Iter = Iter + 1 end // fim repita
Raiz = x;
// resultados
printf( "Iterações: %d \n“,Iter); printf( "Raiz : %f \n“, Raiz); printf( "Precisão: %f \n“,abs(f(x)));
if abs(f(x)) < Toler then printf( " Resultado obtido com precisão desejada“) else printf( " Resultado não obtido com precisão desejada“); end