Esquema de Horner: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Mvsosorio (discussão | contribs)
Mvsosorio (discussão | contribs)
Linha 201: Linha 201:
<math>R(x) =(x-1993,1)*(x-(5,95+13,179814i))*(x-(5,95+13,179814i))</math>
<math>R(x) =(x-1993,1)*(x-(5,95+13,179814i))*(x-(5,95+13,179814i))</math>


O que não é uma boa aproximação. Percebe-se que as raízes envolvem a unidade imaginária e não estão próximos de 1 e 11. Logo, nesse caso tivemos uma grande propagação de erros.
O que não é uma boa aproximação. Percebe-se que as raízes envolvem a unidade imaginária e não estão próximos de 1 e 11. Logo, nesse caso tivemos uma grande propagação de erros. Esse também é um método bastante ágil de encontrar raízes de um polinômio, pois a cada raiz descoberta, o polinômio necessário para encontrar as demais é reduzido.
[[Ficheiro:[[Ficheiro:Exemplo.png|thumb|Horner com Newton]]|thumb|]]


== Referências ==
== Referências ==

Revisão das 05h37min de 27 de maio de 2013

O Método de Horner (também chamado de algoritmo de Horner ou esquema de Horner) é um algoritmo que permite:

  • Calcular o quociente e o resto de uma divisão entre dois polinômios quaisquer;
  • Calcular a série de Taylor de um polinômio em torno de um ponto;
  • Deflação de um polinômio.


Historia

O algoritmo possui esse nome devido ao trabalho "A new method of solving numerical equations of all orders" do matemático inglês William George Horner publicado em 1819 na "Philosophical Transactions of the Royal Society". Porém, a utilização do método é muito mais antigas. Fontes históricas indicam que ele já era conhecido por:

Demonstração

O método de Horner consiste em reescrever um polinômio de forma a obter uma aproximação para um certo ponto ()

em que são os coeficientes do polinômio e números reais.Podemos estar interessados em calcular seu valor para .Primeiramente observe que ele pode ser escrito na forma de parênteses encaixados(ou concatenados):

Segundo o método deve-se definir da seguinte forma:

Então é o valor de .


Assim, substituindo iterativamente na expressão,


Por exemplo, para um polinômio completo de quarto grau. Queremos encontrar seu valor para Temos:

Com do tipo:

Substituindo:








Aplicações

Divisão de polinômios

A utilização do Método de Horner para a divisão de polinômios é uma extensão do [[Algoritmo de Briot-Ruffini|dispositivo de Briot-Ruffini] pois ele permite efetuar a divisão de um polinômio P(x) de grau n por outro polinômio D(x) de grau i. Sendo n e i dois números inteiros quaisquer. Para aplicar o método é necessário construir uma tabela desse modo:

  │  Nesta espaço colocaremos os coeficientes do polinômio dividendo em ordem crescente.
──┼─────────────────── Na primeira coluna, que está separada das demais, colocamos os coeficientes
  │                          do polinômio divisor. Com o termo de maior grau no espaço superior e os 
  │                          demais no meio com os sinais trocados.
──┼───────────────────  
  │

Por exemplo, vamos calcular Inicialmente temos:


 3│ 12 -1 0 3 0 5        Note que os termos x³ e x¹ tem os coeficientes "0" que devem ser colocados
──┼───────────────────   na tabela.
-2│
 0│     
 1│     
──┼───────────────────
  │

Em seguida, conta-se quantos coeficientes ficaram na primeira coluna do meio, neste exemplo, três. Logo, o resto terá três coeficientes também. Para separar o resto do quociente usa-se uma linha vertical contando três posições a partir do último coeficiente do polinômio dividendo. O resultado fica assim:

 3│ 12 -1 0 │ 3 0 5             
──┼─────────┼─────────   Podemos então finalmente dar inicio ao método. Ele consiste em pegar os 
-2│         │            coeficientes do dividendo um a um e dividir pelo termo de maior grau do divisor  
 0│         │            (no caso o 3) e descê-lo até a última linha. Em seguida ele é multiplicado pelo 
 1│         │            segundo termo do divisor e colocado na segunda linha e terceira coluna.Repete-se
──┼─────────┼─────────   essa operação para o próximo divisor, dispondo os resultados na segunda linha.
  │         │
O mesmo processo passo-a-passo(clique para abrir)

O resultado obtido deve ser:

 3│ 12 -1 0 │ 3 0 5        
──┼─────────┼─────────   12/3=4
-2│    -8 0 │ 4          4*(-2)= -8         
 0│         │            4*0 = 0
 1│         │            4*1 = 4
──┼─────────┼─────────   
  │ 4       │

Em seguida soma-se todos os valores da terceira coluna e então divide-se pelo coeficiente do termo de maior grau (repetindo o processo). Isso é feito até que a última linha seja preenchida. Ao final teremos:

 3│ 12 -1 0 │ 3 0 5             
──┼─────────┼─────────   Agora a aplicação do método está quase terminada.O quociente tem os coeficientes
-2│    -8 0 │ 4          da última linha (4;-3;2)e os expoentes de cada termo crescem da direita para   
 0│       6 │ 0-3        a esquerda.
 1│         │-4 0 2      Assim: Quociente = 4x²-3x+2.
──┼─────────┼─────────   Para sabermos o resto somamos os valores da 5ª,6ª e 7ª colunas.  Obtendo: 
  │ 4  -3 2 │            Obtendo: (3;-3;7).Os expoentes são determinados do mesmo modo.
                         Logo: Resto = 3x²-3x+7

Expansão de Taylor

A maneira mais eficaz de calcular o valor de um polinômio de grau em é utilizando o método de Horner. Ao reescrevê-lo na forma concatenada torna-se necessario utilizar apenas adições e multiplicações. Enquanto que utilizando o polinômio na sua forma canônica utiliza-se mais adições e multiplicações o que leva mais tempo para ser computado.

Por exemplo, considere o polinômio:

Para calcular seu valor em diretamente, utiliza-se a expressão:

Aplicação do Método de Horner no Scilab

Que envolve realizar 15 multiplicações e 5 somas.

Enquanto que utilizando o método de Horner temos a forma fatorada:

Que para ser calculada envolve fazer apenas 5 multiplicações e 5 somas.

De fato, este é o método utilizado pelo software de computação numérica Scilab. Para utilizar esse algoritmo no programa usa-se o comando horner (P, x) onde P é uma matriz de polinômios ou de razões de polinômios e x é um número real ou uma matriz para o qual se deseja obter o valor de P.

Pode-se também calcular a expansão de Taylor em torno de um ponto x_0. Nesse caso o polinômio é dividido sucessivamente por x_0 utilizando o dispositivo de Briot-Rufini. Exemplo: Calcular a expansão de Taylor em torno de 3 para o polinômio x^4-4x^3+7x^2-5x-2. Temos:

   │ x4  x³    x²    x¹    x⁰
 3 │ 1   4    7     -5   −2         
   │     3   -3     12   21
   ┼────────────────────────
 3 │ 1  -1    4     7    19
   │     3    6    30   
   ┼──────────────────────── 
 3 │ 1   2   10    37
   │     3   15
   ┼──────────────────────── 
 3 │1    5   25
   │     3
   ┼──────────────────────── 
   │1    8

Logo a expansão de Taylor em torno de 3 é:

Note que através do Método de Horner encontrar a expansão da série é mais simples e rápido, além de não envolver o cálculo de derivada.

Deflação

É a operação de removermos um fator linear de um polinômio. Para realizarmos uma deflação precisamos saber o valor (ou uma aproximação) de uma raiz X0 do polinômio.E então fazer:

Sendo que Q(x) tem a propriedade que ao ser multiplicado por (X-X0) resulta em P(x) e pode ser calculado usando o Método de Horner para divisão.E dizemos que Q(x) é o polinômio deflacionado. Podemos repetir o processo encontrando os zeros de Q(x), e dividindo-o por (x-xn) até encontrar fatorar por completo P(x).

Esse método é interessante se estivermos considerando o caso de começarmos com uma aproximação de uma raiz e quisermos entender como os erros são propagados. Por exemplo, considere:

Um polinômio com raízes: X0=11;X1=1;X2=1993.

Se tivermos a aproximação X0=1,1 e fizermos a deflação, encontramos:

As raízes encontradas são boas aproximações para as raízes exatas, apesar do erro inicial.Porém se tomarmos a aproximação inicial como X2=1993,1. Temos:

O que não é uma boa aproximação. Percebe-se que as raízes envolvem a unidade imaginária e não estão próximos de 1 e 11. Logo, nesse caso tivemos uma grande propagação de erros. Esse também é um método bastante ágil de encontrar raízes de um polinômio, pois a cada raiz descoberta, o polinômio necessário para encontrar as demais é reduzido.

[[Ficheiro:

Horner com Newton

|thumb|]]

Referências

Donald Knuth. The Art of Computer Programming, Volumen 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89684-2. Páginas 486–488 en la sección 4.6.4.

William George Horner. A new method of solving numerical equations of all orders, by continuous approximation. En Philosophical Transactions of the Royal Society of London, pp. 308–335, julio de 1819.