Algoritmo para calcular coeficientes polinomiais
Em matemática , diferenças divididas é um algoritmo , historicamente usado para calcular tabelas de logaritmos e funções trigonométricas . O mecanismo de diferença de Charles Babbage , uma das primeiras calculadoras mecânicas , foi projetado para usar esse algoritmo em sua operação.
Diferenças divididas é um processo de divisão recursivo . O método pode ser usado para calcular os coeficientes no polinômio de interpolação na forma de Newton .
Definição
Dados k + 1 pontos de dados

As diferenças divididas para a frente são definidas como:
![[y _ {\ nu}]: = y _ {\ nu}, \ qquad \ nu \ in \ {0, \ ldots, k \}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f0b559f584afa31efe09d04b4be0e091807e66c6)
![[y _ {\ nu}, \ ldots, y _ {{\ nu + j}}]: = {\ frac {[y _ {{\ nu +1}}, \ ldots, y _ {{\ nu + j}}] - [y _ {{\ nu}}, \ ldots, y _ {{\ nu + j-1}}]} {x _ {{\ nu + j}} - x _ {\ nu}}}, \ qquad \ nu \ em \ {0, \ ldots, kj \}, \ j \ in \ {1, \ ldots, k \}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a3fbf429b65bad77486a9d90314d4af6e5edf0c1)
As diferenças divididas para trás são definidas como:
![[y _ {\ nu}]: = y _ {{\ nu}}, \ qquad \ nu \ in \ {0, \ ldots, k \}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f0b559f584afa31efe09d04b4be0e091807e66c6)
![[y _ {\ nu}, \ ldots, y _ {{\ nu -j}}]: = {\ frac {[y _ {\ nu}, \ ldots, y _ {{\ nu -j + 1}}] - [ y _ {{\ nu -1}}, \ ldots, y _ {{\ nu -j}}]} {x _ {\ nu} -x _ {{\ nu -j}}}}, \ qquad \ nu \ in \ {j, \ ldots, k \}, \ j \ in \ {1, \ ldots, k \}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a9ca4b8abdebfbfaf509c340f8aa07f1508e8c8b)
Notação
Se os pontos de dados são fornecidos como uma função ƒ ,

um às vezes escreve
![f [x _ {\ nu}]: = f (x _ {{\ nu}}), \ qquad \ nu \ in \ {0, \ ldots, k \}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/7d88b6aba15e3cd2f79af1376a2d5e9b1df1c416)
![f [x _ {\ nu}, \ ldots, x _ {{\ nu + j}}]: = {\ frac {f [x _ {{\ nu +1}}, \ ldots, x _ {{\ nu + j} }] - f [x _ {\ nu}, \ ldots, x _ {{\ nu + j-1}}]} {x _ {{\ nu + j}} - x _ {\ nu}}}, \ qquad \ nu \ in \ {0, \ ldots, kj \}, \ j \ in \ {1, \ ldots, k \}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/424ee9e0456399b61b1ed8c66e90ca761fa7dc3e)
Várias notações para a diferença dividida da função ƒ nos nós x 0 , ..., x n são usadas:
![[x_ {0}, \ ldots, x_ {n}] f,](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/52676412ab23500b8def307e74643ea7146220fe)
![[x_ {0}, \ ldots, x_ {n}; f],](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/8a0edff404a8cd6ec5f52354e4988a9dfe8badce)
![D [x_ {0}, \ ldots, x_ {n}] f](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/025c36fb7047d8abf731cb19957cca1f7bd2b23a)
etc.
Exemplo
Diferenças divididas para e os primeiros valores de :


![{\ begin {align} {\ mathopen [} y_ {0}] & = y_ {0} \\ {\ mathopen [} y_ {0}, y_ {1}] & = {\ frac {y_ {1} - y_ {0}} {x_ {1} -x_ {0}}} \\ {\ mathopen [} y_ {0}, y_ {1}, y_ {2}] & = {\ frac {{\ mathopen [} y_ {1}, y_ {2}] - {\ mathopen [} y_ {0}, y_ {1}]} {x_ {2} -x_ {0}}} = {\ frac {{\ frac {y_ { 2} -y_ {1}} {x_ {2} -x_ {1}}} - {\ frac {y_ {1} -y_ {0}} {x_ {1} -x_ {0}}}} {x_ {2} -x_ {0}}} = {\ frac {y_ {2} -y_ {1}} {(x_ {2} -x_ {1}) (x_ {2} -x_ {0})}} - {\ frac {y_ {1} -y_ {0}} {(x_ {1} -x_ {0}) (x_ {2} -x_ {0})}} \\ {\ mathopen [} y_ {0 }, y_ {1}, y_ {2}, y_ {3}] & = {\ frac {{\ mathopen [} y_ {1}, y_ {2}, y_ {3}] - {\ mathopen [} y_ {0}, y_ {1}, y_ {2}]} {x_ {3} -x_ {0}}} \ end {alinhado}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c7c5a021041c0405a351383f2e34f0de88e4e58b)
Para tornar o processo recursivo mais claro, as diferenças divididas podem ser colocadas em uma forma tabular:
![{\ begin {matrix} x_ {0} & y_ {0} = [y_ {0}] &&& \\ && [y_ {0}, y_ {1}] && \\ x_ {1} & y_ {1} = [y_ {1}] && [y_ {0}, y_ {1}, y_ {2}] & \\ && [y_ {1}, y_ {2}] && [y_ {0}, y_ {1}, y_ { 2}, y_ {3}] \\ x_ {2} & y_ {2} = [y_ {2}] && [y_ {1}, y_ {2}, y_ {3}] & \\ && [y_ {2 }, y_ {3}] && \\ x_ {3} & y_ {3} = [y_ {3}] &&& \\\ fim {matriz}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d60ef92b00038923edcedaecccbadd25373b07c1)
Propriedades
![(f + g) [x_ {0}, \ dots, x_ {n}] = f [x_ {0}, \ dots, x_ {n}] + g [x_ {0}, \ dots, x_ {n} ]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f9f98450062d604d6056db6fed7a9294708084a8)
![(\ lambda \ cdot f) [x_ {0}, \ dots, x_ {n}] = \ lambda \ cdot f [x_ {0}, \ dots, x_ {n}]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/5285d5f07af1a864344dc27d700002afb4e4e82e)
![{\ displaystyle (f \ cdot g) [x_ {0}, \ dots, x_ {n}] = f [x_ {0}] \ cdot g [x_ {0}, \ dots, x_ {n}] + f [x_ {0}, x_ {1}] \ cdot g [x_ {1}, \ dots, x_ {n}] + \ dots + f [x_ {0}, \ dots, x_ {n}] \ cdot g [x_ {n}] = \ sum _ {r = 0} ^ {n} f [x_ {0}, \ ldots, x_ {r}] \ cdot g [x_ {r}, \ ldots, x_ {n} ]}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/7eb7cdd2db0caf752548b0e82bc8cd744a30cb18)
- As diferenças divididas são simétricas: Se for uma permutação, então

![{\ displaystyle f [x_ {0}, \ dots, x_ {n}] = f [x _ {\ sigma (0)}, \ dots, x _ {\ sigma (n)}]}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/02ce355ce667f1d9c4825733b42075bb74702610)
-
onde está no intervalo aberto determinado pelo menor e maior dos 's.

Forma de matriz
O esquema de diferença dividido pode ser colocado em uma matriz triangular superior . Deixe .
![T_ {f} (x_ {0}, \ dots, x_ {n}) = {\ begin {pmatrix} f [x_ {0}] & f [x_ {0}, x_ {1}] & f [x_ {0} , x_ {1}, x_ {2}] & \ ldots & f [x_ {0}, \ dots, x_ {n}] \\ 0 & f [x_ {1}] & f [x_ {1}, x_ {2}] & \ ldots & f [x_ {1}, \ dots, x_ {n}] \\\ vdots & \ vdots & \ vdots & \ ddots & \ vdots \\ 0 & 0 & 0 & \ ldots & f [x_ {n}] \ end {pmatrix }}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/eeb0275a0992c3ac7b1a7d1e99efeb617d13e65b)
Então segura


- Isso segue a regra de Leibniz. Isso significa que a multiplicação de tais matrizes é comutativa . Resumindo, as matrizes de esquemas de diferenças divididas com respeito ao mesmo conjunto de nós formam um anel comutativo .
- Como é uma matriz triangular, seus autovalores são obviamente .


- Seja uma função do tipo delta de Kronecker , que é


- Obviamente , portanto, é uma autofunção da multiplicação de função pontual. Que é de alguma forma é um " eigenmatrix " de : . No entanto, todas as colunas de são múltiplos entre si, a classificação da matriz de é 1. Portanto, você pode compor a matriz de todos os autovetores da -ésima coluna de cada um . Denote a matriz de vetores próprios com . Exemplo











- A diagonalização de pode ser escrita como

-
.
Definições alternativas
Forma expandida
Com a ajuda de uma função polinomial com isso pode ser escrito como


![f [x_ {0}, \ dots, x_ {n}] = \ sum _ {{j = 0}} ^ {{n}} {\ frac {f (x_ {j})} {q '(x_ { j})}}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d70d0adea806c0745ea62425edf7d02bc19b4215)
Como alternativa, podemos permitir a contagem regressiva desde o início da sequência, definindo sempre ou . Esta definição permite ser interpretada como , interpretada como , interpretada como , etc. A forma expandida da diferença dividida torna-se assim









Ainda outra caracterização utiliza limites:
Frações Parciais
Você pode representar frações parciais usando a forma expandida de diferenças divididas. (Isso não simplifica o cálculo, mas é interessante por si só.) Se e são funções polinomiais , onde e é dado em termos de fatores lineares por , então segue da decomposição da fração parcial que





![{\ frac {p (\ xi)} {q (\ xi)}} = \ left (t \ to {\ frac {p (t)} {\ xi -t}} \ right) [x_ {1}, \ dots, x_ {n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/4c501f97857416ab97cd46a2c7f4ee82c02095e4)
Se os limites das diferenças divididas forem aceitos, essa conexão também será válida, se algumas das diferenças coincidirem.

Se é uma função polinomial com grau arbitrário e é decomposta usando a divisão polinomial de por , então




![{\ frac {p (\ xi)} {q (\ xi)}} = \ left (t \ to {\ frac {f (t)} {\ xi -t}} \ right) [x_ {1}, \ dots, x_ {n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/39b3eb5698ac665c2256ae18c6f25ae8c798e4d5)
Forma peano
As diferenças divididas podem ser expressas como
![f [x_ {0}, \ ldots, x_ {n}] = {\ frac {1} {n!}} \ int _ {{x_ {0}}} ^ {{x_ {n}}} f ^ { {(n)}} (t) B _ {{n-1}} (t) \, dt](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/4ae40d8692899cbc0fdcb156a32205e51c00250b)
onde é um B-spline de grau para os pontos de dados e é a -ésima derivada da função .






Isso é chamado de forma de Peano das diferenças divididas e é chamado de kernel de Peano para as diferenças divididas, ambas em homenagem a Giuseppe Peano .

Forma de Taylor
Primeira ordem
Se os nós são acumulados, o cálculo numérico das diferenças divididas é impreciso, porque você divide quase dois zeros, cada um dos quais com um erro relativo alto devido a diferenças de valores semelhantes . No entanto, sabemos que os quocientes de diferença se aproximam da derivada e vice-versa:
-
para
Essa aproximação pode ser transformada em uma identidade sempre que o teorema de Taylor se aplicar.


Você pode eliminar os estranhos poderes de expandindo a série Taylor no centro entre e :



-
, isso é



Ordem superior
A série de Taylor ou qualquer outra representação com série de funções pode, em princípio, ser usada para aproximar diferenças divididas. As séries de Taylor são somas infinitas de funções de potência . O mapeamento de uma função para uma diferença dividida é um funcional linear . Também podemos aplicar este funcional aos summands da função.

![f [x_ {0}, \ pontos, x_ {n}]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/683c749df05d7cf790d0a90a9b90a8e4006d8b5d)
Notação de potência expressa com uma função comum:
A série regular de Taylor é uma soma ponderada de funções de potência:
Série de Taylor para diferenças divididas:
Sabemos que os primeiros termos desaparecem, porque temos uma ordem de diferença maior do que a ordem polinomial, e no termo seguinte a diferença dividida é uma:

![{\ begin {array} {llcl} \ forall j <n & p_ {j} [x_ {0}, \ dots, x_ {n}] & = & 0 \\ & p_ {n} [x_ {0}, \ dots, x_ {n}] & = & 1 \\ & p _ {{n + 1}} [x_ {0}, \ dots, x_ {n}] & = & x_ {0} + \ dots + x_ {n} \\ & p _ {{ n + m}} [x_ {0}, \ dots, x_ {n}] & = & \ sum _ {{a \ in \ {0, \ dots, n \} ^ {m} {\ text {with} } a_ {1} \ leq a_ {2} \ leq \ dots \ leq a_ {m}}} \ prod _ {{j \ in a}} x_ {j}. \\\ end {array}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/5744582c2f328c1801bd971953ad4f418e94dd9a)
Segue-se que a série de Taylor para a diferença dividida começa essencialmente com a qual também é uma aproximação simples da diferença dividida, de acordo com o teorema do valor médio para diferenças divididas .

Se tivéssemos que calcular as diferenças divididas para as funções de potência da maneira usual, encontraríamos os mesmos problemas numéricos que tivemos ao calcular a diferença dividida de . O bom é que existe uma maneira mais simples. Detém

![t ^ {n} = (1-x_ {0} \ cdot t) \ dots \ cdot (1-x_ {n} \ cdot t) \ cdot (p_ {0} [x_ {0}, \ dots, x_ { n}] + p_ {1} [x_ {0}, \ dots, x_ {n}] \ cdot t + p_ {2} [x_ {0}, \ dots, x_ {n}] \ cdot t ^ {2 } + \ dots).](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c28497f7cc37231c42f6e0766dac9ac1aa777a90)
Consequentemente, podemos calcular as diferenças divididas de por uma divisão de séries de potências formais . Veja como isso se reduz ao cálculo sucessivo de potências quando calculamos para vários .

![p_ {n} [h]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a5b14665a90a4b859361d12d54272917d4c20ba5)

Se você precisar calcular todo um esquema de diferenças divididas em relação a uma série de Taylor, consulte a seção sobre diferenças divididas de séries de potências .
Polinômios e séries de potências
As diferenças divididas de polinômios são particularmente interessantes, porque podem se beneficiar da regra de Leibniz. A matriz com


contém o esquema de diferenças divididas para a função de identidade em relação aos nós , portanto, contém as diferenças divididas para a função de potência com expoente . Consequentemente, você pode obter as diferenças divididas para uma função polinomial
em relação ao polinômio
aplicando (mais precisamente: sua função polinomial de matriz correspondente ) à matriz .






-
![= {\ begin {pmatrix} \ varphi (p) [x_ {0}] & \ varphi (p) [x_ {0}, x_ {1}] & \ varphi (p) [x_ {0}, x_ {1 }, x_ {2}] & \ ldots & \ varphi (p) [x_ {0}, \ dots, x_ {n}] \\ 0 & \ varphi (p) [x_ {1}] & \ varphi (p) [x_ {1}, x_ {2}] & \ ldots & \ varphi (p) [x_ {1}, \ dots, x_ {n}] \\\ vdots & \ ddots & \ ddots & \ ddots & \ vdots \\ 0 & \ ldots & 0 & 0 & \ varphi (p) [x_ {n}] \ end {pmatrix}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/e2d023602c65ea4569c811cb08cf09805ba12e81)
Isso é conhecido como fórmula de Opitz .
Agora considere aumentar o grau de para infinito, ou seja, transforme o polinômio de Taylor em uma série de Taylor . Let Ser uma função que corresponde a uma série de potências . Você pode calcular um esquema de diferença dividido calculando a série de matrizes de acordo aplicada . Se os nós são todos iguais, então é um bloco de Jordan e a computação se resume a generalizar uma função escalar para uma função de matriz usando a decomposição de Jordan .





Diferenças para a frente
Quando os pontos de dados são distribuídos equidistantemente, obtemos o caso especial denominado diferenças progressivas . Eles são mais fáceis de calcular do que as diferenças divididas mais gerais.
Note que a "porção dividida" de diferença para a frente dividida ainda deve ser calculado, para recuperar a diferença para a frente dividida a partir da diferença para a frente .
Definição
Dados n pontos de dados

com

as diferenças divididas podem ser calculadas por meio de diferenças futuras definidas como


A relação entre diferenças divididas e diferenças futuras é
![{\ displaystyle f [x_ {0}, x_ {1}, \ ldots, x_ {k}] = {\ frac {1} {k! h ^ {k}}} \ Delta ^ {(k)} f ( x_ {0}).}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/2877faf8afce76e86dfec5b133eb20230f37c155)
Exemplo

Veja também
Referências
-
Louis Melville Milne-Thomson (2000) [1933]. O cálculo das diferenças finitas . American Mathematical Soc. Capítulo 1: Diferenças divididas. ISBN 978-0-8218-2107-7.
-
Myron B. Allen; Eli L. Isaacson (1998). Análise Numérica para Ciências Aplicadas . John Wiley & Sons. Apêndice A. ISBN 978-1-118-03027-1.
-
Ron Goldman (2002). Algoritmos de pirâmide: uma abordagem de programação dinâmica para curvas e superfícies para modelagem geométrica . Morgan Kaufmann. Capítulo 4: Interpolação de Newton e triângulos de diferença. ISBN 978-0-08-051547-2.
links externos