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 151: Linha 151:
Que para ser calculada envolve fazer apenas 5 multiplicações e 5 somas.
Que para ser calculada envolve fazer apenas 5 multiplicações e 5 somas.


[[Ficheiro:Horner.png||x300px|commoldura|direita|Aplicação do Método de Horner no Scilab]]
[[Ficheiro:Horner.png||x100px|commoldura|direita|Aplicação do Método de Horner no Scilab]]


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''.
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''.


=== Deflação ===
=== Deflação ===

Revisão das 04h45min 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:

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.

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

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.

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-X_0) 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-x_n) até encontrar fatorar por completo P(x).

Esse método é interessante se estivermos considerando o caso de começarmos com uma aproximação

Eficiência

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.