Cálculo Numérico / Métodos Numéricos Solução de equações polinomiais Briot-Ruffini-Horner
Equações Polinomiais p = x + + a ( x) ao + a1 n x n Com a i R, i = 0,1,, n e a n 0 para garantir que o polinômio é do grau n Os seguintes resultados são validos para p(x) a) p(x) possui, pelo menos, uma raiz; b) p(x) possui, exatamente, n raízes, desde que uma raiz de multiplicidade k seja considerada k vezes; c) se os valores numéricos de dois polinômios de grau n coincidem para mais do que n valores distintos de x, os polinômios são idênticos; d) se x 1, x2, L, xn são raízes de p(x), então p(x) pode ser expresso da forma fatorada: p x) = a ( x x )( x x ) L ( x x ) ( n 1 2 n
Regras de Sinal de Descartes a) Raízes Reais Positivas: O número de zeros reais positivos (pos) de um p (x), com coeficientes reais, não excede o número (v) de variações de sinal dos coeficientes e (v-pos) é inteiro, par e não negativo Exemplo: p ( x) = 2x 3x 4x + x + 1 + - - + + 5 4 3 v = 2 se se v v pos = 0 pos = 2 pos = 2 pos = 0 5 3 2 Exemplo: p ( x) = 4x x + 4x x 1 + - + - - v = 3 se se v v pos = 0 pos = 2 pos = 3 pos = 1 Exemplo: p ( x) = x 7 + 1 + + v=0 e p: (v-p 0 ) p=0
Regras de Sinal de Descartes a) Raízes Reais Negativas: Toma-se ) ( x p e utiliza-se a regra para raízes positivas Exemplo: 1 4 3 2 ) ( 1 4 3 2 ) ( 3 4 5 3 4 5 + + = + + = x x x x x p x x x x x p = = = = = 1 2 3 0 3 neg neg v se neg neg v se v
Teorema Se p (x) é um polinômio de grau n, então para qualquer α, existe um único polinômio q (x) com grau (n-1), tal que: p ( x) = ( x α) q( x) + p( α) Observe pela expressão que a expressão resulta da divisão do polinômio por ( x α), resultando q (x) como quociente e p (α ) como resto 3 2 p ( x) = x + 2x + x + 1 e α = 1 3 2 2 + x + x + x 1 x 1 3 2 x + x x + 3x + 4 3x 2 + x +1 3x 2 + 3x 4 x + 1 4 x + 4 5 2
Métodos iterativos Há vários métodos iterativos para resolver f(x) = 0 (1) Bissecção Posição Falsa Iterativo linear (ponto fixo) Newton Obviamente, todos podem ser usado para resolver equações polinomiais: P(x) = a n x n + a n-1 x n-1 + + a 1 x + a 0
Equações polinomiais O que vamos aprender é que para equações polinomiais, existem métodos mais eficientes (para avaliar os polinômios): P(x) = a n x n + a n-1 x n-1 + + a 1 x + a 0 Em um primeiro momento, calculemos quanto gastamos computacionalmente para calcular P(x) para um dado x Neste caso, quantas operações precisamos?
Equações polinomiais P(x) = a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0 + + + + a 4 x 4 = a 4 xxxx (4 multiplicações) a 3 x 3 = a 3 xxx (3 multiplicações) a 2 x 2 = a 2 xx (2 multiplicações) a 1 x = a 1 x (1 multiplicação) a 0 (4 somas) Total=10 multiplicações e 4 somas Para um polinômio de grau n P(x) = a n x n + a n-1 x n-1 + + a 1 x + a 0 n adições n ( n + 1) 2 multiplica ções
Equações polinomiais P(x) = a 4 x 4 + a 3 x 3 + a 2 x 2 + a 1 x + a 0 reescrevendo P(x) = (((a 4 x+a 3 )x+a 2 )x+a 1 )x +a 0 4 multiplicações e 4 somas
Equações polinomiais no caso geral: P(x) = (((a n x + a n-1 )x + a n-2 )x + + a 1 )x + a 0 n multiplicações n adições
Algoritmo de Briot-Ruffini P(x) = (((a 4 x+a 3 )x+a 2 )x+a 1 )x +a 0 b 4 b 3 b 2 b 1 De maneira geral: b 0 =P(x) b n = a n b n-k = b n-k+1 x + a n-k
Algoritmo de Briot-Ruffini (exemplo) P(x) = 3x 4 + 2x 3 - x 2 + x + 5 P(x) = (((3x+2)x-1)x+1)x +5 Quanto vale P(3)? b 4 = a 4 = 3 b 3 = b 4 x + a 3 = 33 + 2 = 11 b 2 = b 3 x + a 2 = 113-1 = 32 b 1 = b 2 x + a 1 = 323 + 1 = 97 b 0 = b 1 x + a 0 = 973 + 5 = 296 = P(3)
Esquema prático Calcular P(x) = a 4 x 4 + a 3 x 3 + a 2 x 2 +a 1 x + a 0 em x = z: b 4 = a 4 b 3 = b 4 z + a 3 b 2 = b 3 z + a 2 b 1 = b 2 z + a 1 b 0 = b 1 z + a 0 P(z) a 4 a 3 a 2 a 1 a 0 + + + + z zb 4 zb 3 zb 2 zb 1 z b i b 4 b 3 b 2 b 1 b 0 P(z)
Esquema prático aplicado ao exemplo Calcular P(x) = 3x 4 + 2x 3 + -1x 2 + x + 5 em x = 3: 3 2-1 1 5 + + + + 3 9 33 96 291 z b i 3 11 32 97 296 P(z)
No caso geral z a n a n-1 a n-2 a 2 a 1 a 0 + + + + + zb n zb n-1 zb 3 zb 2 zb 1 z b i b n b n-1 b n-2 b 2 b 1 b 0 P(z) ponto onde queremos calcular P(x) e P'(x)
Calcule: P(x) = 2x 5 + 3x 3-2x 2 + x - 10 em x=2 P(2) = 72 P(x) = x 6-3x 5-2x 2 - x + 50 em x=3 P(3) = 29
Obtendo a derivada Uma vez que sabemos calcular a derivada de um polinômio de maneira bem automatizada, podemos tentar analisar alguma forma de obtê-la também com alguma economia computacional De fato: P(x) = a 4 x 4 + a 3 x 3 + a 3 x 2 + a 1 x + a 0 P'(x) = 4a 4 x 3 + 3a 3 x 2 + 2a 2 x + a 1 Lembremos que para um dado x = c: b 4 = a 4 b 3 = b 4 c + a 3 b 2 = b 3 c + a 2 b 1 = b 2 c + a 1 b 0 = b 1 c + a 0 a 4 = b 4 a 3 = b 3 -b 4 c a 2 = b 2 -b 3 c a 1 = b 1 -b 2 c a 0 = b 0 -b 1 c
IDÉIA (para eficiência computacional) No método de Newton, a cada iteração, precisamos calcular P(x) e P'(x) em um dado ponto x k (vamos chamá-lo de c) Suponha que já calculamos P(c) Para calcularmos P'(c) precisamos: Substituindo P'(c) = 4a 4 c 3 + 3a 3 c 2 + 2a 2 c+ a 1 a 4 = b 4 ; a 3 = b 3 -b 4 c; a 2 = b 2 -b 3 c; a 1 = b 1 -b 2 c; P'(c) = 4b 4 c 3 + 3(b 3 -b 4 c)c 2 + 2(b 2 -b 3 c)c+ (b 1 -b 2 c) P'(c) = b 4 c 3 + b 3 c 2 + b 2 c + b 1 Como calcular P'(c) da maneira mais eficiente que conhecemos?
IDÉIA (para eficiência computacional) P'(c) = b 4 c 3 + b 3 c 2 + b 2 c + b 1 Como calcular P'(c) da maneira mais eficiente que conhecemos? Usamos a mesma estratégia: c 4 = b 4 c 3 = b 4 c + b 3 c 2 = b 3 c + b 2 c 1 = b 2 c + b 1 P'(c)
Caso geral De maneira geral: c n = b n c 1 = P'(c) c n-k = c n-k+1 x + b n-k k=1 n-1
Esquema prático z a n a n-1 a n-2 a 2 a 1 a 0 + + + + + zb n zb n-1 zb 3 zb 2 zb 1 z b i b n b n-1 b n-2 b 2 b 1 b 0 z + + + + zc n zc n-1 zc 3 zc 2 P(z) c i c n c n-1 c n-2 c 2 c 1 P'(z) ponto onde queremos calcular P(x) e P'(x)
Algoritmo de Newton δ x = x 0 Para k=1 it max Quais são os critérios de parada nesse caso? b = a n c = b Para i=(n-1)1 b = a i +bx c = b + cx se b < ε 1 FIM δ x = b/c x = x - δ x Se δ x < ε 2 FIM - a função está suficientemente próxima de zero Não houve convergência no n de iterações fixado (FIM) ou - o passo é suficientemente pequeno
Exemplo (1/4) Calcular a raiz de P(x) = x 3 + 2x 2-085x-17 na proximidade de x=09, com erro relativo menor que 10-2 1 2-085 -17 09 + + + 09 261 1584 b i 1 29 176-0116 P(09) c i 09 + + 09 342 1 38 518 P'(09) podemos calcular x 1
Exemplo (2/4) x 1 = x 0 - P(x 0 )/P'(x 0 ) = 09 - (-0116)/1584 = 09224 Erro relativo: x 1 -x 0 / x 1 002 > 10-2 Continuamos!
Exemplo (3/4) x 1 = 09224 1 2-085 -17 09224 + + + 09224 26956 17024 b i 1 29224 18456 00024 P(09224) c i 09224 + + 09224 35464 1 38448 5392 P'(09224) podemos calcular x 2
Exemplo (4/4) x 2 = x 1 - P(x 1 )/P'(x 1 ) = 09224 - (00024)/5392 = 09220 Erro relativo: x 2 -x 1 / x 2 00004 < 10-2 FIM!
Obtendo outras raízes Note que: Q(x) = b n x n-1 + b n-1 x n-2 + + b 2 x + b 1 = P(x)/(x-z) De fato: (b n x n-1 + b n-1 x n-2 + + b 2 x + b 1 ) (x-z) = b n x n + (b n-1 -zb n )x n-1 + + (b 1 -zb 2 )x + (b 0 - zb 1 ) = a n x n + a n-1 x n-1 + + a 1 x + a 0 O que isso significa? Podemos pegar a linha dos b n 's na tabela e recomeçar o procedimento para conseguir mais uma raiz
Voltando ao exemplo Tabela para a raiz: 09220 1 2-085 -17 + + 09220 26941 09220 b i 1 29220 1844 b b 3 2 b 1 Q(x) = x 2 + 29220x + 1844 Novo polinômio As raizes de Q(x) são as raízes ainda não calculadas de P(x)