Különbség motor -Difference engine

A London Science Museum különbségi motorja, az első, amelyet valójában Babbage terve alapján építettek. A tervezés azonos pontosságú minden oszlopon, de a polinomok számításakor a pontosság a magasabb rendű oszlopokon kisebb lehet.

A különbségmotor egy automatikus mechanikus számológép , amelyet polinomiális függvények táblázatba foglalására terveztek . Az 1820-as években tervezték, és először Charles Babbage készítette . A név, a differenciamotor, az osztott differenciák módszeréből származik, amely a függvények interpolációja vagy táblázatosítása polinomiális együtthatók kis halmazának használatával . A mérnöki, természettudományos és navigációs területen leggyakrabban használt matematikai függvények némelyike ​​kiszámítható volt, és ma is számítható a differenciamotor logaritmikus és trigonometrikus függvények kiszámítására szolgáló képességének használatával , amelypolinomokkal közelítik , így egy különbségmotor sok hasznos számtáblázatot képes kiszámítani .

Történelem

Közelkép a Londoni Tudományos Múzeum különbségi motorjáról, amely néhány számkereket és a szektor fogaskerekeit mutatja az oszlopok között. A bal oldali szektorfogaskerekek nagyon jól mutatják a dupla magas fogakat. A középső-jobb oldali szektorfogaskerekek a motor hátsó oldala felé néznek, de az egymagas fogak jól láthatóak. Figyelje meg, hogyan tükröződnek a kerekek, balról jobbra felfelé vagy balról jobbra számolva lefelé. Vegye figyelembe a fém fület is a "6" és a "7" között. Ez a fül kioldja a hátul lévő hordozókart, amikor a hozzáadási lépések során (1. és 3. lépés) a „9” átmegy a „0”-ra az elején.

A matematikai függvények mechanikus számológépének fogalma a Kr.e. 2. századi Antikythera-mechanizmusra vezethető vissza , míg a kora újkori példákat Pascalnak és Leibniznek tulajdonítják a 17. században. 1784-ben JH Müller , a hesseni hadsereg mérnöke kidolgozott és megépített egy összeadógépet , és egy 1786-ban megjelent könyvben leírta a különbségi gép alapelveit (az első írásos utalás a különbséggépre 1784-ből származik), de nem tudott finanszírozást szerezni az ötlet megvalósításához.

Charles Babbage különbségi motorjai

Charles Babbage egy kis különbségű motort kezdett építeni Kr. e. 1819, és 1822-re fejezte be (Különbség Motor 0). Találmányát 1822. június 14-én jelentette be a Királyi Csillagászati ​​Társaságnak írt közleményében , melynek címe "Megjegyzés a gépek alkalmazásáról csillagászati ​​és matematikai táblázatok kiszámítására". Ez a gép decimális számrendszert használt, és egy fogantyú mozgatásával működött. A brit kormány érdeklődött, mivel az asztalok előállítása időigényes és költséges volt, és azt remélték, hogy a különbségmotor gazdaságosabbá teszi a feladatot.

1823-ban a brit kormány 1700 fontot adott Babbage-nek, hogy megkezdje a munkálatokat a projekten. Bár Babbage terve kivitelezhető volt, a kor fémmegmunkálási technikái nem tudtak gazdaságosan a szükséges pontossággal és mennyiségben elkészíteni az alkatrészeket. Így a megvalósítás jóval drágábbnak és kétségesnek bizonyult, mint a kormány eredeti becslése szerint. 1832-ben Babbage és Joseph Clement készített egy kis működő modellt (az 1. számú különbségi motor számítási szakaszának egyhetedét, amely 20 számjegyű számokkal és hatodrendű különbségekkel működött), amely 6 jegyű számokkal működött. és másodrendű különbségek. Lady Byron leírta, hogy 1833-ban látta a működő prototípust: "Mindketten elmentünk megnézni a gondolkodó gépet (vagy annak tűnik) múlt hétfőn. Több számot emelt a 2. és 3. hatványra, és kivette a másodfokú egyenlet gyökerét." A nagyobb motoron végzett munkát 1833-ban felfüggesztették.

Mire a kormány 1842-ben felhagyott a projekttel, Babbage több mint 17 000 fontot kapott és költött a fejlesztésre, ami még mindig elmaradt a működő motor eléréséhez. A kormány csak a gép teljesítményét (gazdaságosan előállított asztalok) értékelte, magának a gépnek a fejlesztését (kiszámíthatatlan költségek mellett) nem. Babbage nem ismerte fel, vagy nem volt hajlandó felismerni ezt a nehéz helyzetet. Eközben Babbage figyelme egy analitikai motor kifejlesztésére irányult , ami tovább aláásta a kormánynak a különbségmotor végső sikerébe vetett bizalmát. Azzal, hogy a koncepciót analitikai motorként fejlesztette, Babbage elavulttá tette a különbségmotor-koncepciót, és a megvalósítási projektet teljes kudarcnak tartotta a kormányzat szerint.

A hiányos Difference Engine No. 1-t az 1862-es nemzetközi kiállításon mutatták be a londoni South Kensingtonban .

Babbage megtervezte sokkal általánosabb elemző motorját, de később 1846 és 1849 között kifejlesztett egy továbbfejlesztett "Difference Engine No. 2" tervet (31 számjegyű számok és hetedrendű különbségek). Babbage ki tudta használni az ötleteket Az analitikai motorhoz fejlesztették ki, hogy az új különbségmotor gyorsabban számoljon, miközben kevesebb alkatrészt használ.

Scheutzi számítási motor

Per Georg Scheutz harmadik motorja

Per Georg Scheutz 1834-ben Babbage differenciálmotorja által ihletett több kísérleti modellt épített. 1837-ben fia, Edward javasolta egy működő fémmodell megszerkesztését, majd 1840-ben elkészült a számítási rész, amely képes volt 5-jegyű számokkal és elsőrendű különbségekkel számolni sorozatokat, amit később harmadrendűvé (1842) bővítettek. 1843-ban a nyomdai rész hozzáadása után elkészült a makett.

1851-ben a kormány finanszírozásával megkezdődött a nagyobb és továbbfejlesztett (15 számjegyű számok és negyedrendű különbségek) gép építése, amely 1853-ban fejeződött be. A gépet az 1855-ös párizsi világkiállításon mutatták be, majd 1856-ban adták el. a Dudley Obszervatóriumba , Albanyban, New Yorkban . 1857-ben szállították ki, és ez volt az első eladott nyomdai számológép. A brit kormány 1857-ben rendelte meg a következő Scheutz-féle differenciálgépet, amely 1859-ben készült. Alapfelépítése megegyezett az előzővel, súlya körülbelül 10  cw (1100  font ; 510  kg ).

Mások

Martin Wiberg továbbfejlesztette Scheutz konstrukcióját (1859 körül, gépe ugyanolyan kapacitású, mint Scheutzé – 15 számjegyű és negyedrendű), de készülékét csak nyomtatott táblázatok (1860-ban kamattáblázatok , 1875-ben logaritmikus táblázatok) előállítására és kiadására használta. .

A londoni Alfred Deacon c. Az 1862-ben kis különbségű motort produkált (20 számjegyű számok és harmadrendű különbségek).

Az amerikai George B. Grant 1869-ben kezdett el dolgozni a számológépén, nem tudott Babbage és Scheutz (Schentz) munkáiról. Egy évvel később (1870) megismerte a különböző motorokat, és maga kezdett megtervezni egyet, leírva az 1871-es felépítését. 1874-ben a Boston Thursday Club előfizetést gyűjtött össze egy nagyméretű modell megépítésére, amelyet 1876-ban készítettek. bővíthető a pontosság növelése érdekében, és körülbelül 2000 fontot (910 kg) nyomott.

Christel Hamann 1909-ben épített egy gépet (16 számjegyű számok és másodrendű különbségek) a " Bauschinger és Peters táblázatai" ("Logaritmikus-trigonometrikus táblázatok nyolc tizedesjegyekkel") számára, amelyet először 1910-ben adtak ki Lipcsében. körülbelül 40 kilogrammot nyomott (88 font).

A Burroughs Corporation 1912 körül épített egy gépet a Nautical Almanach Office számára, amelyet másodrendű különbségi motorként használtak. Később 1929-ben felváltotta egy Burroughs Class 11 (13 jegyű számok és másodrendű különbségek, vagy 11 jegyű számok és [legalább] ötödrendű különbségek).

Alexander John Thompson 1927 körül épített integráló és differenciáló gépet (13 jegyű számok és ötödrendű különbségek) a logaritmustáblázatához, a „Logarithmetica britannica”-hoz. Ez a gép négy módosított Triumphator számológépből állt.

Leslie Comrie 1928-ban leírta, hogyan kell a Brunsviga -Dupla számológépet másodrendű (15 számjegyű számok) különbségmotorként használni. 1931-ben azt is megjegyezte, hogy a National Accounting Machine Class 3000 hatodrendű különbségi motorként használható.

Két működő No. 2 differenciálmotor építése

Az 1980-as években Allan G. Bromley , a Sydney - i Egyetem docense ( Ausztrália ) tanulmányozta Babbage eredeti rajzait a Difference and Analytical Engines számára a londoni Science Museum könyvtárában. Ez a munka késztette a Tudományos Múzeumot arra, hogy Doron Swade , a számítástechnika akkori kurátora alatt 1985 és 1991 között megépítse a 2. számú különbségi motor működő számítási részét . Ezzel ünnepelték Babbage 1991-es születésének 200. évfordulóját. 2002-ben elkészült az a nyomtató is, amelyet a Babbage eredetileg a differenciálmotorhoz tervezett. Az eredeti tervrajzok mérnöki felhasználásra alkalmas rajzokká alakítása során a Babbage tervezésében (esetleg a tervek ellopása esetére védelemként bevezetett) apróbb hibákat tártak fel, amelyeket ki kellett javítani. Miután elkészült, a motor és a nyomtatója is hibátlanul működött, és még mindig működik. A különbségi motort és a nyomtatót a 19. századi technológiával elérhető tűréshatárokra építették, megoldva a régóta fennálló vitát arról, hogy a Babbage terve működött volna-e. (Az egyik oka annak, hogy a Babbage motorjai nem készültek el, az volt, hogy a mérnöki módszereket nem fejlesztették kellőképpen a késő grúz korszakban.)

A nyomtató elsődleges célja sztereotíp lemezek előállítása nyomdákban való használatra, amit úgy hajt végre, hogy a szöveget puha gipszbe préseli, így röpítményt hoz létre . Babbage szándéka az volt, hogy az Engine eredményeit közvetlenül a tömegnyomtatásba továbbítsák, miután felismerte, hogy a korábbi táblázatokban szereplő sok hiba nem emberi számítási hibák eredménye, hanem a kézi szedési folyamat hibája. A nyomtató papírkimenete elsősorban a motor teljesítményének ellenőrzésére szolgál.

A Tudományos Múzeum differenciálmotorja kimeneti mechanizmusának finanszírozása mellett Nathan Myhrvold megbízást adott egy második, teljes, 2. számú Difference Engine megépítésére, amely 2008. május 10-től a kaliforniai Mountain View-ban található Computer History Museumban volt kiállítva. 2016. január 31-ig. Azóta átkerült a seattle -i Intellectual Ventures -hez, ahol a fő előcsarnokon kívül látható.

Művelet

A Mountain View gép működés közben

A különbségmotor számos oszlopból áll, amelyek 1 -től N -ig vannak számozva . A gép minden oszlopban egy tizedes számot képes tárolni. A gép csak az n  + 1 oszlop értékét tudja hozzáadni az n oszlophoz , hogy előállítsa n új értékét . Az N oszlop csak konstanst tud tárolni , az 1. oszlop megjeleníti (és esetleg kiírja ) a számítás értékét az aktuális iterációban .

A motor programozása az oszlopok kezdeti értékeinek beállításával történik. Az 1. oszlop a polinom értékére van állítva a számítás elején. A 2. oszlop a polinom első és magasabb deriváltjaiból származtatott értékre van állítva ugyanazon X érték mellett . A 3-tól N -ig tartó oszlopok mindegyike a polinom első és magasabb deriváltjaiból származó értékre van beállítva .

Időzítés

A Babbage tervezésben egy iteráció (azaz egy teljes összeadási és szállítási művelet) történik a főtengely minden egyes fordulatánál. A páratlan és páros oszlopok felváltva hajtanak végre egy összeadást egy ciklusban. Az oszlop műveleti sorrendje a következő:

  1. Számlálás, érték fogadása az oszlopból (összeadás lépése)
  2. Hajtson végre átviteli terjedést a megszámlált értékkel
  3. Visszaszámlálás nulláig, hozzáadás az oszlophoz
  4. Állítsa vissza a visszaszámlált értéket az eredeti értékre

Az 1, 2, 3, 4 lépések minden páratlan oszlopra, míg a 3, 4, 1, 2 lépések minden páros oszlopra vonatkoznak.

Míg Babbage eredeti kialakítása a hajtókart közvetlenül a főtengelyre helyezte, később rájöttek, hogy a gép forgatásához szükséges erő túl nagy lett volna ahhoz, hogy az ember kényelmesen kezelje. Ezért a két megépített modellben 4:1 arányú redukciós sebességfokozat található a hajtókarnál, és a hajtókar négy fordulata szükséges egy teljes ciklus végrehajtásához.

Lépések

Minden iteráció új eredményt hoz létre, és az alábbi kép jobb szélén látható fogantyú négy teljes fordulatának megfelelő négy lépésben hajtja végre. A négy lépés a következő:

  • 1. lépés: Minden páros számú oszlop (2,4,6,8) egyidejűleg hozzáadódik az összes páratlan számú oszlophoz (1,3,5,7). Egy belső seprőkar minden páros oszlopot elfordít, hogy az egyes kerekeken lévő számokat nullára számolja vissza. Ahogy egy kerék nullára fordul, átadja értékét a páratlan/páros oszlopok között elhelyezkedő szektorfogaskerekeknek. Ezek az értékek átkerülnek a páratlan oszlopba, aminek következtében felfelé számolnak. Bármilyen páratlan oszlopérték, amely "9"-ről "0"-ra vált, aktiválja a hordozókart .
  • 2. lépés : A hordás továbbterjedése a hátul lévő spirálkarok készletével valósul meg, amelyek spirálisan húzzák meg a hordozókarokat, így a hordás bármilyen szinten eggyel növelheti a kereket. Ez hordozást hozhat létre, ezért a karok spirálban mozognak. Ezzel egyidejűleg a szektorfogaskerekek visszaállnak eredeti helyzetükbe, aminek következtében a páros oszlop kerekeit vissza kell emelni eredeti értékükre. A szektorfogaskerekek az egyik oldalon duplán magasak, így felemelhetőek, hogy lekapcsolódjanak a páratlan oszlop kerekeiről, miközben továbbra is érintkeznek a páros oszlop kerekeivel.
  • 3. lépés. Ez hasonló az 1. lépéshez, azzal a különbséggel, hogy páratlan oszlopokat (3,5,7) adunk a páros oszlopokhoz (2,4,6), és az első oszlop értékeit egy szektorfogaskerék továbbítja a nyomtatási mechanizmushoz a motor bal vége. Bármely páros oszlopérték, amely "9"-ről "0"-ra lép át, aktiválja a hordozókart. Az 1. oszlop értéke, a polinom eredménye, elküldésre kerül a csatolt nyomtatómechanizmusnak.
  • 4. lépés. Ez olyan, mint a 2. lépés, de a végrehajtás során a páros oszlopokat folytatja, és a páratlan oszlopokat visszaállítja eredeti értékükre.

Kivonás

A motor a negatív számokat tíz komplementereként ábrázolja . A kivonás egy negatív szám összeadását jelenti. Ez ugyanúgy működik, mint a modern számítógépek kivonást hajtanak végre, amelyet kettős komplementerként ismernek .

A különbségek módszere

Teljesen működőképes különbségi motor a kaliforniai Mountain View-i Computer History Museumban

A különbségmotor elve Newton módszere a különbségek felosztására . Ha egy polinom (és véges különbségeinek ) kezdeti értékét valamilyen módon kiszámítjuk X valamely értékére, a különbségmotor tetszőleges számú közeli értéket tud kiszámítani a véges különbségek módszereként ismert módszerrel . Vegyük például a másodfokú polinomot

azzal a céllal, hogy táblázatba foglaljuk a p (0), p (1), p (2), p (3), p (4) és így tovább értékeket. Az alábbi táblázat a következőképpen épül fel: a második oszlop a polinom értékeit, a harmadik oszlop a második oszlopban lévő két bal szomszéd különbségeit tartalmazza, a negyedik oszlop pedig a harmadik oszlopban lévő két szomszéd különbségeit tartalmazza:

x p ( x ) = 2 x 2 − 3 x + 2 diff1( x ) = (  p ( x  +1) − p( x )) diff2( x ) = (diff1( x  + 1) − diff1( x ))
0 2 −1 4
1 1 3 4
2 4 7 4
3 11 11
4 22

A harmadik értékek oszlopban lévő számok állandóak. Valójában bármely n fokú polinomból kiindulva az n + 1 oszlopszám  mindig állandó lesz. Ez a döntő tény a módszer sikere mögött.

Ez a táblázat balról jobbra épült, de lehetséges, hogy jobbról balra építsük tovább egy átlósan lefelé, hogy több értéket számoljunk ki. A p (5) kiszámításához használja a legalacsonyabb átló értékeit. Kezdje a negyedik oszlop 4-es állandó értékével, és másolja le az oszlopban. Ezután folytassa a harmadik oszlop hozzáadásával 4-et 11-hez, hogy megkapja a 15-öt. Ezután folytassa a második oszlopot úgy, hogy felveszi az előző 22-es értékét, és hozzáadja a 15-öt a harmadik oszlopból. Így p (5) 22 + 15 = 37. A p (6) kiszámításához ugyanazt az algoritmust iteráljuk a p (5) értékeken: vegyünk 4-et a negyedik oszlopból, adjuk hozzá a harmadik oszlop értékéhez 15-öt kap 19-et, majd adja ezt a második oszlop 37-es értékéhez, hogy 56-ot kapjon, ami p (6). Ez a folyamat a végtelenségig folytatható . A polinom értékei úgy jönnek létre, hogy nem kell szorozni. A különbségmotort csak hozzá kell tudni adni. Az egyik ciklustól a másikig 2 számot kell tárolnia – ebben a példában (az első és a második oszlop utolsó elemei). Az n fokú polinomok táblázatba foglalásához elegendő tárhelyre van szükség n szám tárolására.

A Babbage 2. számú differenciálmotorja, amelyet végül 1991-ben gyártottak, 8, egyenként 31 tizedesjegyből álló számot képes tárolni, és így a 7. fokú polinomokat ilyen pontossággal tudja táblázatba foglalni. A Scheutz legjobb gépei 4, egyenként 15 számjegyű számot tudtak tárolni.

Kezdeti értékek

Az oszlopok kezdeti értékeit úgy lehet kiszámítani, hogy először manuálisan kiszámoljuk a függvény N egymást követő értékét, majd visszafelé , azaz kiszámoljuk a szükséges különbségeket.

Col a függvény értékét a számítás elején kapja meg . Col a különbség és ...

Ha a kiszámítandó függvény egy polinomiális függvény , akkor kifejezve

a kezdeti értékek közvetlenül számíthatók az a 0 , a 1 , a 2 , ..., a n állandó együtthatókból adatpontok számítása nélkül. A kezdeti értékek tehát a következők:

  • Col = a 0
  • Col = a 1 + a 2 + a 3 + a 4 + ... + a n
  • Col = 2 a 2 + 6 a 3 + 14 a 4 + 30 a 5 + ...
  • Col = 6 a 3 + 36 a 4 + 150 a 5 + ...
  • Col = 24 a 4 + 240 a 5 + ...
  • Col = 120 a 5 + ...

Származékok használata

Sok gyakran használt függvény analitikus függvény , amely hatványsorként , például Taylor -sorként fejezhető ki . A kezdeti értékek bármilyen pontossággal kiszámíthatók; helyesen végrehajtva a motor pontos eredményeket ad az első N lépésben. Ezt követően a motor csak közelítő képet ad a funkcióról.

A Taylor-sor a függvényt a deriváltjaiból egy pontban kapott összegként fejezi ki . Sok függvény esetében a magasabb származékokat triviális megszerezni; például a 0-nál lévő szinuszfüggvény értéke 0 vagy az összes derivált esetében. Ha a számítás kezdeteként 0-t állítunk be, az egyszerűsített Maclaurin sorozatot kapjuk

A kezdeti értékek együtthatókból történő kiszámítására ugyanaz a módszer használható, mint a polinomiális függvényeknél. A polinomiális állandó együtthatók értéke most lesz

Görbe illesztés

A fent leírt módszerekkel az a probléma, hogy a hibák felhalmozódnak, és a sorozatok hajlamosak eltérni a valódi függvénytől. Egy megoldás, amely garantálja az állandó maximális hibát, a görbeillesztés alkalmazása . Minimum N értéket egyenletesen elosztva számítanak ki a kívánt számítási tartomány mentén. Görbeillesztési technikával, például Gauss-redukcióval a függvény N -1 fokú polinomiális interpolációját találjuk. Az optimalizált polinommal a kezdeti értékek a fentiek szerint számíthatók ki.

Lásd még

Hivatkozások

További irodalom

Külső linkek