Differenciálgép

Charles Babbage differenciálgépének részlete, amit halála után a fia állított össze a Babbage laboratóriumában talált részekből

A differenciálgép (difference engine) olyan mechanikus számológép, amely képes polinomfüggvények táblázatait kiszámolni. Mivel számos bonyolultabb függvény, többek között a logaritmus és a trigonometrikus függvények is közelíthetőek hatványsorral, egy ilyen gép sokoldalú számításokra képes.

Története

Babbage gépének a Science Museum által készített másolata.

Az első ilyen tervet Johann Müller készítette 1786-ban, de nem építette meg a gépet. Az ötlet feledésbe merült, és Charles Babbage fedezte fel újra 1822-ben, a Royal Astronomical Society-hez írt „Note on the application of machinery to the computation of very big mathematical tables.” („a nagyon nagy matematikai táblázatok gép általi kiszámításáról”) című cikkében. A gép tízes számrendszert használt, és egy kar tekerésével lehetett működtetni. Babbage az angol kormány anyagi támogatásával elkezdte építeni a gépet, de hamarosan áttért egy sokkal általánosabb analitikus gép tervezésére. Később, 1847–49 között elkészítette egy fejlettebbb differenciálgép, a „Difference Engine No. 2” terveit. Ezekre alapozva 1855 után Per Georg Scheutz, majd Martin Wiberg épített differenciálgépet.

1991-re, Babbage születésének kétszázadik évfordulójára a londoni Science Museum Babbage tervei alapján elkészítette a Difference Engine No. 2 korhű mását, korabeli gyártási technológia felhasználásával. 2000-ben rekonstruálták a Babbage által a géphez tervezett nyomtatót is. Néhány apróbb hibát ki kellett javítaniuk Babbage terveiben, de ezután a gépek tökéletesen működtek, és működnek ma is. Ezzel eldőlt a hosszú ideje tartó vita, hogy lehetséges lett volna-e Babbage tervei alapján működőképes gépet készíteni a korabeli technológiával elérhető pontosság mellett.

Működése

Közelkép a Science Museum-beli gép oszlopairól

A differenciálgép egy sor oszlopból áll, minden oszlop egy tízes számrendszerbeli számot tud tárolni. A gép egyetlen műveletre képes, egy oszlop értékének az előző oszlopéhoz való hozzáadására. Az utolsó oszlop csak egy konstanst tud tárolni, az első oszlop jelzi (vagy nyomtatja) ki az eredményt.

A gép programozása az egyes oszlopok kezdeti értékeinek beállításából áll. Az első oszlopba a polinom egy adott helyen felvett értéket kellett állítani, a továbbiakban a deriváltak értékeit. Ezután a gépet meghajtva az oszlopok forogni kezdenek, és az oszlopok értéke négy fázisban (egy a páratlan, egy a páros oszlopoknak, azon belül pedig egy az összeadásnak, egy az átvitelnek) hozzáadódnak az előttük lévőhöz.

Matematikai háttér

Mivel a gép nem tud szorozni, nem képes kiszámolni egy polinom értékét. Ha azonban egy adott érték (a deriváltakkal együtt) már rendelkezésre áll, a Newton-módszer alkalmazásával közelítően ki tudja számolni a függvény értékét más helyeken: ha a táblázatot h {\displaystyle h} beosztással kell elkészíteni, legyen

Δ h f ( a ) = f ( a + h ) f ( a ) {\displaystyle \Delta _{h}f(a)=f(a+h)-f(a)\,} ,

ekkor

f ( a + h ) = f ( a ) + Δ h f ( a ) {\displaystyle f(a+h)=f(a)+\Delta _{h}f(a)\,} .

Δ h f {\displaystyle \Delta _{h}f\,} -re is alkalmazhatjuk ugyanezt az eljárást:

Δ h 2 f ( a ) = Δ h f ( a + h ) Δ h f ( a ) = [ f ( a + 2 h ) f ( a + h ) ] [ f ( a + h ) f ( a ) ] {\displaystyle \Delta _{h}^{2}f(a)=\Delta _{h}f(a+h)-\Delta _{h}f(a)=[f(a+2h)-f(a+h)]-[f(a+h)-f(a)]} ,

és

Δ h f ( a + h ) = Δ h f ( a ) + Δ h 2 f ( a ) {\displaystyle \Delta _{h}f(a+h)=\Delta _{h}f(a)+\Delta _{h}^{2}f(a)} ,

amiből

f ( a + 2 h ) = f ( a ) + Δ h f ( a ) + Δ h f ( a + h ) = f ( a ) + Δ h f ( a ) + ( Δ h f ( a ) + Δ h 2 f ( a ) ) {\displaystyle f(a+2h)=f(a)+\Delta _{h}f(a)+\Delta _{h}f(a+h)=f(a)+\Delta _{h}f(a)+(\Delta _{h}f(a)+\Delta _{h}^{2}f(a))} .

A különbségeket f {\displaystyle f} -nek n {\displaystyle n} különböző értéke alapján n {\displaystyle n} szintig kiszámolva Δ h n {\displaystyle \Delta _{h}^{n}} -t vehetjük a-tól független konstansnak, és így közelíthetjük f ( a + k h ) {\displaystyle f(a+kh)} értékét tetszőleges k {\displaystyle k} -ra; a differenciálgép éppen ezt teszi, az i {\displaystyle i} -edik tengelyt Δ h i {\displaystyle \Delta _{h}^{i}} -nek megfeleltetve. (Mai fogalmakkal azt mondhatjuk, hogy a gép Taylor-sorának első n {\displaystyle n} tagjával közelíti a függvényt.)

Példa

Vegyük a p ( x ) = 2 x 2 3 x + 2 {\displaystyle p(x)=2x^{2}-3x+2} másodfokú polinomot. A p ( 0 ) {\displaystyle p(0)} , p ( 1 ) {\displaystyle p(1)} , p ( 2 ) {\displaystyle p(2)} értékeket kézzel kiszámítva, majd ezekből a differenciákat és azokból a további függvényértékeket kifejezve az alábbi eredményt kapjuk:

p ( 0 ) = 2.0 {\displaystyle p(0)=2.0} *
Δ p ( 0 ) = 1.72 2.0 = 0.28 {\displaystyle \Delta p(0)=1.72-2.0=-0.28} **
p ( 0.1 ) = 1.72 {\displaystyle p(0.1)=1.72} * Δ 2 p ( 0 ) = 0.24 0.28 = 0.04 {\displaystyle \Delta ^{2}p(0)=0.24-0.28=0.04} **
Δ p ( 0.1 ) = 1.48 1.72 = 0.24 {\displaystyle \Delta p(0.1)=1.48-1.72=-0.24} **
p ( 0.2 ) = 1.48 {\displaystyle p(0.2)=1.48} * 0.04 {\displaystyle 0.04} ***
0.24 + 0.04 = 0.20 {\displaystyle -0.24+0.04=-0.20} ****
p ( 0.3 ) = 1.48 0.20 = 1.28 {\displaystyle p(0.3)=1.48-0.20=1.28} **** 0.04 {\displaystyle 0.04} ***
0.20 + 0.04 = 0.16 {\displaystyle -0.20+0.04=-0.16} ****
p ( 0.4 ) = 1.28 0.16 = 1.12 {\displaystyle p(0.4)=1.28-0.16=1.12} ****

* Kézzel kiszámított érték
** A két balra fent és a balra lent található elem különbsége
*** A fölötte levő elemmel azonos
**** A fölötte és a tőle jobbra fel található elem összege

Mivel a másodfokú függvény második deriváltja konstans, itt nem keletkezett közelítési hiba azzal, hogy Δ 2 p {\displaystyle \Delta ^{2}p} -t állandónak vettük.

Lásd még

  • A gépezet (Bruce Sterling és William Gibson regénye Babbage gépéről)

További információk

  • Részletes ismertető a gép működéséről
  • A Science Museum oldala a gépről
  • Differenciálgép legóból
  • Informatika Informatikai portál • összefoglaló, színes tartalomajánló lap