Algoritmus pro výpočet polynomických koeficientů
V matematice , dělená rozdíly je algoritmus , historicky používá pro výpočet tabulky logaritmů a goniometrických funkcí . Charles Babbage ‚s rozdílem motoru , časný mechanický kalkulátor , byl navržen tak, aby použít tento algoritmus ve svém provozu.
Rozdělené rozdíly jsou rekurzivní dělící proces. Metodu lze použít k výpočtu koeficientů v interpolačním polynomu v Newtonově formě .
Definice
Dáno k + 1 datových bodů

V přední dělená Rozdíly jsou definovány takto:
![[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 \ v \ {0, \ ldots, kj \}, \ j \ in \ {1, \ ldots, k \}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a3fbf429b65bad77486a9d90314d4af6e5edf0c1)
V dozadu dělená Rozdíly jsou definovány takto:
![[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)
Zápis
Pokud jsou datové body uvedeny jako funkce ƒ ,

člověk někdy píše
![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 \ v \ {0, \ ldots, kj \}, \ j \ in \ {1, \ ldots, k \}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/424ee9e0456399b61b1ed8c66e90ca761fa7dc3e)
Používá se několik zápisů děleného rozdílu funkce ƒ na uzlech x 0 , ..., x n :
![[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)
atd.
Příklad
Rozdělené rozdíly pro a prvních několik hodnot :


![{\ begin {aligned} {\ 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 {aligned}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c7c5a021041c0405a351383f2e34f0de88e4e58b)
Aby byl rekurzivní proces jasnější, lze rozdělené rozdíly vložit do tabulky:
![{\ 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}] &&& \\\ end {matrix}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d60ef92b00038923edcedaecccbadd25373b07c1)
Vlastnosti
![(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)
- Rozdělené rozdíly jsou symetrické: Pokud jde o permutaci, pak

![{\ 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)
-
kde je v otevřeném intervalu určeno nejmenším a největším z 's.

Maticová forma
Rozdělené diferenční schéma lze vložit do horní trojúhelníkové matice . Nech .
![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)
Pak to drží


- Vyplývá to z Leibnizova pravidla. To znamená, že násobení takových matic je komutativní . Shrnuto, matice rozdělených rozdílových schémat s ohledem na stejnou sadu uzlů tvoří komutativní prstenec .
- Protože je to trojúhelníková matice, její vlastní čísla jsou zjevně .


- Nechť je funkce podobná deltě Kroneckera


- Je tedy zřejmé , že jde o vlastní funkci bodového násobení funkcí. To je jakýmsi „ eigenmatrix “ z : . Nicméně, všechny sloupce jsou násobky každého jiný, matice rank ze je 1. Takže si můžete sestavit matici všech vektorů z tý sloupec každého . Označte matici vlastních vektorů pomocí . Příklad











- Diagonalizace of lze zapsat jako

-
.
Alternativní definice
Rozšířená forma
Pomocí polynomické funkce s tímto lze zapsat jako


![f [x_ {0}, \ tečky, x_ {n}] = \ součet _ {{j = 0}}^{{n}} {\ frac {f (x_ {j})} {q '(x_ { j})}}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d70d0adea806c0745ea62425edf7d02bc19b4215)
Alternativně můžeme povolit počítání zpět od začátku sekvence definováním kdykoli nebo . Tato definice umožňuje být interpretována jako , interpretována jako , interpretována jako atd. Rozšířená forma děleného rozdílu se tak stává









Ještě další charakterizace využívá limity:
Částečné zlomky
Částečné zlomky můžete reprezentovat pomocí rozšířené formy dělených rozdílů. (Tento nezjednodušuje výpočty, ale je zajímavé, sám o sobě.) Je-li a jsou polynomiální funkce , kde a je uveden v podmínkách lineárních faktorů tím , pak vyplývá z částečného rozkladu frakce této





![{\ frac {p (\ xi)} {q (\ xi)}} = \ left (t \ to {\ frac {p (t)} {\ xi -t}} \ right) [x_ {1}, \ tečky, x_ {n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/4c501f97857416ab97cd46a2c7f4ee82c02095e4)
Pokud jsou přijaty limity dělených rozdílů, pak toto spojení také platí, pokud se některé shodují.

Pokud je polynom funkce s libovolným stupněm, a to se rozloží pomocí polynomu dělení a tím , potom




![{\ frac {p (\ xi)} {q (\ xi)}} = \ left (t \ to {\ frac {f (t)} {\ xi -t}} \ right) [x_ {1}, \ tečky, x_ {n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/39b3eb5698ac665c2256ae18c6f25ae8c798e4d5)
Peano forma
Rozdělené rozdíly lze vyjádřit jako
![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)
kde je B -spline stupně pro datové body a je -tá derivace funkce .






Toto se nazývá Peano forma rozdělených rozdílů a nazývá se Peano jádro pro rozdělené rozdíly, oba pojmenované po Giuseppe Peano .

Taylorova forma
První objednávka
Pokud jsou uzly kumulovány, pak je numerický výpočet dělených rozdílů nepřesný, protože rozdělíte téměř dvě nuly, z nichž každá má vysokou relativní chybu v důsledku rozdílů podobných hodnot . Nicméně víme, že rozdíl kvocienty aproximovat derivát a naopak:
-
pro
Tuto aproximaci lze převést na identitu, kdykoli platí Taylorova věta .


Zvláštní síly můžete eliminovat rozšířením řady Taylor uprostřed mezi a :



-
, to je



Vyšší řád
K aproximaci dělených rozdílů lze v zásadě použít Taylorovu řadu nebo jakoukoli jinou reprezentaci s funkčními řadami . Taylorovy řady jsou nekonečné sumy mocenských funkcí . Mapování z funkce na dělený rozdíl je lineární funkce . Tuto funkci můžeme také použít na součty funkcí.

![f [x_ {0}, \ tečky, x_ {n}]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/683c749df05d7cf790d0a90a9b90a8e4006d8b5d)
Zápis expresní síly s běžnou funkcí:
Pravidelná řada Taylor je váženým součtem výkonových funkcí:
Taylorova řada pro rozdělené rozdíly:
Víme, že první členy zmizí, protože máme vyšší rozdílové pořadí než polynomické, a v následujícím výrazu je dělený rozdíl jeden:

![{\ 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)
Z toho vyplývá, že Taylorova řada pro dělený rozdíl v podstatě začíná, což je také jednoduchá aproximace děleného rozdílu podle věty o střední hodnotě dělených rozdílů .

Pokud bychom museli vypočítat dělené rozdíly pro výkonové funkce obvyklým způsobem, narazili bychom na stejné numerické problémy, jaké jsme měli při výpočtu děleného rozdílu . Je hezké, že existuje jednodušší způsob. Drží to

![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}, \ tečky, x_ {n}] \ cdot t+p_ {2} [x_ {0}, \ tečky, x_ {n}] \ cdot t^{2 }+\ tečky).](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c28497f7cc37231c42f6e0766dac9ac1aa777a90)
V důsledku toho můžeme vypočítat rozdělené rozdíly mezi tím, o rozdělení o formální mocninné řady . Podívejte se, jak se to snižuje na postupný výpočet sil, když počítáme pro několik .

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

Pokud potřebujete vypočítat celé schéma děleného rozdílu s ohledem na Taylorovu řadu, přečtěte si část o rozdělených rozdílech výkonových řad .
Polynomy a mocninové řady
Zvláště zajímavé jsou dělené rozdíly polynomů, protože mohou těžit z Leibnizova pravidla. Matice s


obsahuje schéma děleného rozdílu pro funkci identity vzhledem k uzlům , obsahuje tedy rozdělené rozdíly pro mocninu s exponentem . V důsledku toho můžete získat dělené rozdíly pro polynomiální funkci
vzhledem k polynomu
aplikací (přesněji: její odpovídající maticové polynomické funkce ) na matici .






-
![= {\ 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)
Toto je známé jako Opitzův vzorec .
Nyní zvažte zvýšení stupně na nekonečno, tj. Přeměňte Taylorův polynom na Taylorovu řadu . Nechť je funkce, která odpovídá výkonové řadě . Schéma děleného rozdílu můžete vypočítat výpočtem podle příslušné maticové řady . Pokud jsou všechny uzly stejné, pak je Jordanův blok a výpočet se scvrkává na zobecnění skalární funkce na maticovou funkci pomocí Jordanova rozkladu .





Dopředu rozdíly
Když jsou datové body rozloženy ve stejné vzdálenosti, dostaneme speciální případ, který se nazývá forwardové rozdíly . Vypočítávají se snáze než obecnější dělené rozdíly.
Všimněte si, že „rozdělená část“ z přední dělené rozdílu musí být stále počítán, obnovit vpřed rozdělený rozdíl od předního rozdílu .
Definice
Je dáno n datových bodů

s

dělené rozdíly lze vypočítat pomocí forwardových rozdílů definovaných jako


Vztah mezi rozdělenými rozdíly a dopřednými rozdíly je
![{\ 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)
Příklad

Viz také
Reference
-
Louis Melville Milne-Thomson (2000) [1933]. Kalkul konečných rozdílů . American Mathematical Soc. Kapitola 1: Rozdělené rozdíly. ISBN 978-0-8218-2107-7.
-
Myron B. Allen; Eli L. Isaacson (1998). Numerická analýza pro aplikovanou vědu . John Wiley & Sons. Příloha A. ISBN 978-1-118-03027-1.
-
Ron Goldman (2002). Pyramidové algoritmy: Dynamický programovací přístup ke křivkám a povrchům pro geometrické modelování . Morgan Kaufmann. Kapitola 4: Newtonova interpolace a diferenční trojúhelníky. ISBN 978-0-08-051547-2.
externí odkazy