Fark motoru -Difference engine

Londra Bilim Müzesi'nin fark motoru, aslında Babbage'ın tasarımından yapılmış ilk motor. Tasarım tüm sütunlarda aynı kesinliğe sahiptir, ancak polinomları hesaplarken yüksek dereceli sütunlardaki kesinlik daha düşük olabilir.

Fark motoru , polinom fonksiyonları tablolamak için tasarlanmış otomatik bir mekanik hesap makinesidir . 1820'lerde tasarlandı ve ilk olarak Charles Babbage tarafından yaratıldı . Fark motoru adı, küçük bir polinom katsayıları seti kullanarak fonksiyonları enterpolasyon veya tablolaştırmanın bir yolu olan bölünmüş farklar yönteminden türetilmiştir . Mühendislik, bilim ve navigasyonda kullanılan en yaygın matematiksel fonksiyonlardan bazıları, fark motorunun logaritmik ve trigonometrik fonksiyonları hesaplama yeteneğinin kullanımıyla hesaplanabilirdi ve hala hesaplanabilir .polinomlarla yaklaşık olarak hesaplanır, böylece bir fark motoru birçok faydalı sayı tablosunu hesaplayabilir.

Tarih

Londra Bilim Müzesi'nin bazı sayı çarklarını ve sütunlar arasındaki sektör dişlilerini gösteren fark motorunun yakın çekimi. Soldaki sektör dişlileri çift yüksek dişleri çok net bir şekilde göstermektedir. Sağ ortadaki sektör dişlileri motorun arka tarafına bakıyor, ancak tek yüksek dişler açıkça görülüyor. Soldan sağa doğru sayarak veya soldan sağa doğru sayarak tekerleklerin nasıl yansıtıldığına dikkat edin. Ayrıca "6" ile "7" arasındaki metal tırnağa da dikkat edin. Ekleme adımları sırasında (Adım 1 ve Adım 3) "9" öndeki "0"a geçtiğinde, bu sekme arkadaki taşıma kolunu tetikler.

Matematiksel fonksiyonlar için mekanik bir hesap makinesi kavramı, MÖ 2. yüzyılın Antikythera mekanizmasına kadar izlenebilirken , erken modern örnekler 17. yüzyılda Pascal ve Leibniz'e atfedilir. 1784'te Hessen ordusunda bir mühendis olan JH Müller , bir toplama makinesi tasarladı ve inşa etti ve 1786'da yayınlanan bir kitapta bir fark makinesinin temel ilkelerini açıkladı (bir fark makinesine ilk yazılı referans 1784'e aittir), ancak o fikri ile ilerlemek için fon elde edemedi.

Charles Babbage'ın fark motorları

Charles Babbage , c'de küçük bir fark motoru oluşturmaya başladı. 1819 ve 1822'de tamamlamıştı (Fark Motoru 0). Buluşunu 14 Haziran 1822'de Royal Astronomical Society'ye sunduğu "Astronomik ve matematiksel tabloların hesaplanmasında makine uygulamasına ilişkin not" başlıklı bir makalede duyurdu. Bu makine, ondalık sayı sistemini kullandı ve bir kolu çevirerek çalıştırıldı. İngiliz hükümeti , tabloların üretilmesi zaman alıcı ve pahalı olduğu için ilgilendi ve fark motorunun görevi daha ekonomik hale getireceğini umdu.

1823'te İngiliz hükümeti, proje üzerinde çalışmaya başlaması için Babbage'a 1700 £ verdi. Babbage'ın tasarımı uygulanabilir olmasına rağmen, çağın metal işleme teknikleri ekonomik olarak parçaları gereken hassasiyet ve miktarda üretemiyordu. Böylece uygulamanın, hükümetin ilk tahmininden çok daha pahalı olduğu ve başarısı şüpheli olduğu ortaya çıktı. 1832'de Babbage ve Joseph Clement , 6 basamaklı sayılar üzerinde çalışan küçük bir çalışma modeli (20 basamaklı sayılar ve altıncı dereceden farklar üzerinde çalışması amaçlanan 1 Numaralı Fark Motoru'nun hesaplama bölümünün yedide biri) üretti. ve ikinci dereceden farklar. Lady Byron , 1833'te çalışan prototipi gördüğünü şöyle anlattı: "Geçen Pazartesi ikimiz de düşünen makineyi görmeye gittik (ya da öyle görünüyor). 2. ve 3. güçlere birkaç numara yükseltti ve bir Kuadratik denklemin kökünü çıkardı." Daha büyük motor üzerindeki çalışmalar 1833'te askıya alındı.

Hükümet 1842'de projeden vazgeçtiğinde, Babbage geliştirme için 17.000 sterlinin üzerinde para almış ve harcamıştı, ancak bu hala çalışan bir motor elde edemeyecek durumdaydı. Hükümet, makinenin kendisinin geliştirilmesine (öngörülemeyen bir maliyetle) değil, yalnızca makinenin çıktısına (ekonomik olarak üretilen tablolar) değer verdi. Babbage bu açmazı anlamadı ya da kabul etmek istemiyordu. Bu arada, Babbage'ın dikkati analitik bir motor geliştirmeye kaymış ve hükümetin fark motorunun nihai başarısına olan güvenini daha da sarsmıştı. Babbage, konsepti analitik bir motor olarak geliştirerek, fark motoru konseptini modası geçmiş ve bunu uygulama projesini hükümetin gözünde tam bir başarısızlık haline getirmişti.

Tamamlanmamış Fark Motoru No. 1 , Londra , South Kensington'daki 1862 Uluslararası Sergisinde halka sergilendi .

Babbage çok daha genel analitik motorunu tasarlamaya devam etti, ancak daha sonra 1846 ve 1849 yılları arasında geliştirilmiş bir "Fark Motoru No. 2" tasarımı (31 basamaklı sayılar ve yedinci dereceden farklılıklar) üretti. Babbage fikirlerden yararlanmayı başardı. Yeni fark motorunun daha az parça kullanarak daha hızlı hesaplama yapması için analitik motor için geliştirildi.

Scheutzian hesaplama motoru

Per Georg Scheutz'un üçüncü fark motoru

1834'te Babbage'ın fark motorundan esinlenen Per Georg Scheutz birkaç deneysel model yaptı. 1837'de oğlu Edward, metalden bir çalışma modeli oluşturmayı önerdi ve 1840'ta, daha sonra üçüncü mertebeye (1842) genişletilecek olan, 5 basamaklı sayılar ve birinci mertebeden farklarla serileri hesaplayabilen hesaplama bölümünü bitirdi. 1843 yılında baskı kısmı da eklendikten sonra maket tamamlanmıştır.

1851'de, hükümet tarafından finanse edilen, daha büyük ve geliştirilmiş (15 basamaklı sayılar ve dördüncü dereceden farklılıklar) makinenin yapımına başlandı ve 1853'te tamamlandı. Makine , 1855'te Paris'teki Dünya Fuarı'nda gösterildi ve ardından 1856'da satıldı. New York , Albany'deki Dudley Gözlemevi'ne . 1857'de teslim edilen, satılan ilk matbaa hesap makinesiydi. 1857'de İngiliz hükümeti, 1859'da inşa edilen bir sonraki Scheutz'un fark makinesini sipariş etti. Bir öncekiyle aynı temel yapıya sahipti ve yaklaşık 10  cwt (1,100  lb ; 510  kg ) ağırlığındaydı.

Diğerleri

Martin Wiberg , Scheutz'un yapısını geliştirdi (c. 1859, makinesi Scheutz'unkiyle aynı kapasiteye sahip - 15 haneli ve dördüncü dereceden) ancak cihazını yalnızca basılı tablolar üretmek ve yayınlamak için kullandı (1860'ta faiz tabloları ve 1875'te logaritmik tablolar) .

Londra Alfred Deacon c. 1862 küçük bir fark motoru üretti (20 basamaklı sayılar ve üçüncü dereceden farklar).

Amerikalı George B. Grant , 1869'da Babbage ve Scheutz'un (Schentz) çalışmalarından habersiz bir hesap makinesi üzerinde çalışmaya başladı. Bir yıl sonra (1870) fark motorları hakkında bilgi edindi ve 1871'deki yapısını anlatarak kendisi bir tane tasarlamaya başladı. 1874'te Boston Perşembe Kulübü, 1876'da inşa edilen büyük ölçekli bir modelin yapımı için bir abonelik oluşturdu. hassasiyeti artırmak için genişletilebilir ve yaklaşık 2.000 pound (910 kg) ağırlığındaydı.

Christel Hamann , ilk kez 1910'da Leipzig'de yayınlanan " Bauschinger ve Peters Tabloları" ("Sekiz ondalık basamaklı Logaritmik-Trigonometrik Tablolar") için 1909'da bir makine (16 basamaklı sayılar ve ikinci dereceden farklılıklar) yaptı . yaklaşık 40 kilogram (88 lb) ağırlığındaydı.

Yaklaşık 1912'de Burroughs Corporation , Deniz Almanak Ofisi için ikinci dereceden bir fark motoru olarak kullanılan bir makine yaptı. Daha sonra 1929'da Burroughs Sınıf 11 (13 basamaklı sayılar ve ikinci dereceden farklar veya 11 basamaklı sayılar ve [en azından beşinci dereceden] farklar) ile değiştirildi.

Alexander John Thompson , yaklaşık 1927'de logaritma tablosu "Logarithmetica britannica" için bütünleştirme ve fark alma makinesi (13 basamaklı sayılar ve beşinci dereceden farklılıklar) yaptı. Bu makine, modifiye edilmiş dört Triumphator hesap makinesinden oluşuyordu.

1928'de Leslie Comrie , Brunsviga -Dupla hesaplama makinesinin ikinci dereceden (15 basamaklı sayılar) bir fark motoru olarak nasıl kullanılacağını açıkladı. Ayrıca 1931'de National Accounting Machine Class 3000'in altıncı dereceden bir fark motoru olarak kullanılabileceğini belirtti.

İki adet çalışan 2 No'lu fark motorunun yapımı

1980'lerde, Avustralya Sidney Üniversitesi'nde doçent olan Allan G. Bromley , Londra'daki Bilim Müzesi kütüphanesinde Babbage'nin Fark ve Analitik Motorlar için orijinal çizimlerini inceledi . Bu çalışma, Bilim Müzesi'ni , o zamanlar Bilgisayar Küratörü olan Doron Swade'in yönetiminde, 1985'ten 1991'e kadar 2 No'lu fark motorunun çalışan bir hesaplama bölümünü oluşturmaya yönlendirdi. Bu, Babbage'ın 1991'deki doğumunun 200. yıldönümünü kutlamak içindi. 2002'de, Babbage'ın fark motoru için orijinal olarak tasarladığı yazıcı da tamamlandı. Orijinal tasarım çizimlerinin mühendislik üreticilerinin kullanımına uygun çizimlere dönüştürülmesi, Babbage'ın tasarımında (muhtemelen planların çalınması durumunda bir koruma olarak sunulmuş) düzeltilmesi gereken bazı küçük hataları ortaya çıkardı. Tamamlandığında, hem motor hem de yazıcısı kusursuz çalıştı ve hala çalışıyor. Fark motoru ve yazıcı, 19. yüzyıl teknolojisiyle elde edilebilecek toleranslara göre inşa edildi ve Babbage'ın tasarımının işe yarayıp yaramayacağına dair uzun süredir devam eden bir tartışmayı çözdü. (Babbage'ın motorlarının tamamlanamaması için daha önce öne sürülen nedenlerden biri, geç Gürcü döneminde mühendislik yöntemlerinin yeterince gelişmemiş olmasıydı.)

Yazıcının birincil amacı, bir flong oluşturmak için türü yumuşak sıvaya bastırarak yaptığı matbaalarda kullanılmak üzere stereotip plakalar üretmektir . Babbage, önceki tablolardaki birçok hatanın insan hesaplama hatalarından değil, manuel dizgi sürecindeki hatadan kaynaklandığını kabul ederek, Motorun sonuçlarının doğrudan toplu baskıya aktarılmasını amaçladı . Yazıcının kağıt çıktısı, esas olarak motorun performansını kontrol etmenin bir yoludur.

Nathan Myhrvold , Bilim Müzesi'nin fark motoru için çıkış mekanizmasının yapımını finanse etmenin yanı sıra, 10 Mayıs 2008'den itibaren Mountain View, California'daki Bilgisayar Tarihi Müzesi'nde sergilenen ikinci bir tam Fark Motoru No. 2'nin yapımını da görevlendirdi. 31 Ocak 2016'ya kadar. O zamandan beri Seattle'daki Intellectual Ventures'a transfer edildi ve burada ana lobinin hemen dışında sergileniyor.

Operasyon

Mountain View makinesi iş başında

Fark motoru, 1'den N'ye kadar numaralandırılmış bir dizi sütundan oluşur . Makine, her sütunda bir ondalık sayı saklayabilir. Makine, n'nin yeni değerini üretmek için yalnızca n + 1  sütununun değerini n sütununa ekleyebilir . Sütun N yalnızca bir sabit depolayabilir, sütun 1 geçerli yinelemedeki hesaplamanın değerini görüntüler (ve muhtemelen yazdırır ) .

Motor, sütunlara başlangıç ​​değerleri ayarlanarak programlanır. Sütun 1, hesaplamanın başlangıcında polinomun değerine ayarlanır. Sütun 2, aynı X değerinde polinomun birinci ve daha yüksek türevlerinden türetilen bir değere ayarlanır . 3'ten N'ye kadar olan sütunların her biri , polinomun birinci ve daha yüksek türevlerinden türetilen bir değere ayarlanır .

Zamanlama

Babbage tasarımında, ana milin her dönüşü için bir yineleme (yani bir tam toplama ve taşıma işlemi seti) gerçekleşir. Tek ve çift sütunlar dönüşümlü olarak bir döngüde bir ekleme gerçekleştirir. Sütun için işlem sırası şu şekildedir:

  1. Sayım, sütundan değer alma (İlave adımı)
  2. Sayılan değer üzerinde taşıma yayılımı gerçekleştirin
  3. Sıfıra kadar sayın, sütuna ekleyin
  4. Geri sayım değerini orijinal değerine sıfırlayın

1,2,3,4 adımları her tek sütun için, 3,4,1,2 adımları ise her çift sütun için gerçekleşir.

Babbage'ın orijinal tasarımı krankı doğrudan ana mile yerleştirirken, daha sonra, makineyi kranklamak için gereken kuvvetin bir insanın rahatça taşıyamayacağı kadar büyük olduğu anlaşıldı. Bu nedenle, üretilen iki modelde krankta 4:1 redüksiyon dişlisi bulunur ve bir tam çevrim gerçekleştirmek için krankın dört dönüşü gerekir.

adımlar

Her yineleme yeni bir sonuç oluşturur ve aşağıdaki resimde en sağda gösterilen tutamağın dört tam dönüşüne karşılık gelen dört adımda gerçekleştirilir. Dört adım şunlardır:

  • Adım 1. Tüm çift numaralı sütunlar (2,4,6,8) aynı anda tüm tek numaralı sütunlara (1,3,5,7) eklenir. Bir iç süpürme kolu her bir çift sütunu döndürür ve her tekerlekteki sayı ne olursa olsun sıfıra geri saymasını sağlar. Bir çark sıfıra döndüğünde değerini tek/çift sütunları arasında bulunan sektör dişlisine aktarır. Bu değerler, saymalarına neden olan tek sütuna aktarılır. "9"dan "0"a geçen herhangi bir tek sütun değeri, bir taşıma kolunu etkinleştirir.
  • Adım 2. Taşıma yayılımı , herhangi bir seviyedeki bir taşıma, tekerleği birer birer artırabilmesi için, taşıma kollarını sarmal bir şekilde yoklayan arkadaki bir dizi spiral kol ile gerçekleştirilir. Bu bir taşıma oluşturabilir, bu yüzden kollar spiral şeklinde hareket eder. Aynı zamanda, sektör dişlileri orijinal konumlarına döndürülür, bu da çift sütun tekerleklerini orijinal değerlerine geri döndürmelerine neden olur. Sektör dişlileri bir tarafta çift yüksektir, böylece çift kolonlu tekerleklerle hala temas halindeyken tek sütunlu tekerleklerden ayrılmak için kaldırılabilirler.
  • Adım 3. Bu, tek sütunların (3,5,7) çift sütunlara (2,4,6) eklenmesi ve birinci sütunun değerlerinin bir sektör dişlisi tarafından yazıcıdaki baskı mekanizmasına aktarılması dışında Adım 1 gibidir. motorun sol ucu. "9"dan "0"a geçen herhangi bir çift sütun değeri, bir taşıma kolunu etkinleştirir. Polinomun sonucu olan sütun 1 değeri, ekli yazıcı mekanizmasına gönderilir.
  • Adım 4. Bu, Adım 2'ye benzer, ancak çift sütunlarda devam etmek ve tek sütunları orijinal değerlerine döndürmek için.

Çıkarma

Motor, on'un tümleyenleri olarak negatif sayıları temsil eder . Çıkarma, negatif bir sayının eklenmesi anlamına gelir. Bu, modern bilgisayarların ikinin tamamlayıcısı olarak bilinen çıkarma işlemini gerçekleştirmesiyle aynı şekilde çalışır .

farklılıklar yöntemi

Mountain View , California'daki Bilgisayar Tarihi Müzesi'nde tam operasyonel fark motoru

Fark motorunun ilkesi, Newton'un bölünmüş farklar yöntemidir . Bir polinomun (ve onun sonlu farklarının ) başlangıç ​​değeri, X'in bir değeri için bir şekilde hesaplanırsa, fark motoru, genellikle sonlu farklar yöntemi olarak bilinen yöntemi kullanarak, herhangi bir sayıda yakın değeri hesaplayabilir . Örneğin, ikinci dereceden polinomu düşünün

p (0), p (1), p (2), p (3), p (4) ve benzeri değerleri tablolamak amacıyla . Aşağıdaki tablo şu şekilde oluşturulmuştur: ikinci sütun polinomun değerlerini, üçüncü sütun ikinci sütundaki iki sol komşunun farklarını ve dördüncü sütun üçüncü sütundaki iki komşunun farklarını içerir:

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

Üçüncü değerler sütunundaki sayılar sabittir. Aslında, n dereceli herhangi bir polinomla başlayarak, n + 1 sütun numarası  her zaman sabit olacaktır. Bu, yöntemin başarısının ardındaki en önemli gerçektir.

Bu tablo soldan sağa doğru oluşturulmuştur, ancak daha fazla değer hesaplamak için sağdan sola doğru bir köşegen oluşturmaya devam etmek mümkündür. p (5)'i hesaplamak için en düşük köşegenden gelen değerleri kullanın. Dördüncü sütun sabit değeri olan 4 ile başlayın ve bunu sütuna kopyalayın. Ardından, 15 elde etmek için 4'e 11 ekleyerek üçüncü sütuna devam edin. Ardından, önceki değeri olan 22'yi alarak ve üçüncü sütundan 15'i ekleyerek ikinci sütuna devam edin. Böylece p (5) 22 + 15 = 37'dir. p (6)' yı hesaplamak için aynı algoritmayı p (5) değerleri üzerinde yineleriz: dördüncü sütundan 4 alın, bunu üçüncü sütunun değerine 15 ekleyin. 19'u alın, ardından bunu ikinci sütunun 37 değerine ekleyerek 56'yı elde edin, bu da p (6)'dır. Bu süreç sonsuza kadar devam ettirilebilir . Polinomun değerleri hiç çarpılmadan üretilir. Bir fark motorunun yalnızca ekleyebilmesi gerekir. Bir döngüden diğerine 2 sayı kaydetmesi gerekir—bu örnekte (birinci ve ikinci sütunlardaki son öğeler). n dereceli polinomları tablo haline getirmek için, n sayıyı tutmak için yeterli depolamaya ihtiyaç vardır.

Babbage'ın nihayet 1991'de inşa edilen 2 No'lu fark motoru, her biri 31 ondalık basamaktan oluşan 8 sayı tutabilir ve böylece 7. derece polinomları bu hassasiyete göre tablolayabilir. Scheutz'un en iyi makineleri, her biri 15 haneli 4 sayı saklayabilir.

Başlangıç ​​değerleri

Sütunların başlangıç ​​değerleri, önce fonksiyonun N ardışık değerini manuel olarak hesaplayarak ve geriye doğru izlenerek , yani gerekli farkları hesaplayarak hesaplanabilir.

Col , hesaplamanın başlangıcında işlevin değerini alır . Col , ve arasındaki farktır ...

Hesaplanacak fonksiyon bir polinom fonksiyonu ise, şu şekilde ifade edilir:

başlangıç ​​değerleri, herhangi bir veri noktası hesaplanmadan a 0 , a 1 , a 2 , ..., a n sabit katsayılarından doğrudan hesaplanabilir. Başlangıç ​​değerleri şu şekildedir:

  • Sütun = 0 _
  • Sütun = a 1 + a 2 + a 3 + a 4 + ... + bir n
  • Sütun = 2 a 2 + 6 a 3 + 14 a 4 + 30 a 5 + ...
  • Sütun = 6 a 3 + 36 a 4 + 150 a 5 + ...
  • Sütun = 24 a 4 + 240 a 5 + ...
  • Sütun = 120 ve 5 + ...

türevlerin kullanımı

Yaygın olarak kullanılan birçok fonksiyon, örneğin bir Taylor serisi gibi, kuvvet serileri olarak ifade edilebilen analitik fonksiyonlardır . Başlangıç ​​değerleri herhangi bir doğruluk derecesinde hesaplanabilir; doğru yapılırsa motor ilk N adım için kesin sonuçlar verecektir. Bundan sonra, motor sadece işlevin yaklaşık bir değerini verecektir .

Taylor serisi, fonksiyonu bir noktada türevlerinden elde edilen bir toplam olarak ifade eder . Birçok fonksiyon için daha yüksek türevleri elde etmek önemsizdir; örneğin, 0'daki sinüs fonksiyonu, 0 veya tüm türevler için değerlere sahiptir. 0'ı hesaplamanın başlangıcı olarak ayarlayarak basitleştirilmiş Maclaurin serisini elde ederiz.

Katsayılardan ilk değerleri hesaplamanın aynı yöntemi, polinom fonksiyonları için olduğu gibi kullanılabilir. Polinom sabit katsayıları şimdi değere sahip olacak

Eğri uydurma

Yukarıda açıklanan yöntemlerle ilgili sorun, hataların birikmesi ve serinin gerçek fonksiyondan uzaklaşma eğiliminde olmasıdır. Sabit bir maksimum hatayı garanti eden bir çözüm eğri uydurma kullanmaktır . İstenen hesaplamaların aralığı boyunca eşit aralıklarla minimum N değeri hesaplanır. Gauss indirgemesi gibi bir eğri uydurma tekniği kullanılarak fonksiyonun N -1. derece polinom interpolasyonu bulunur. Optimize edilmiş polinom ile başlangıç ​​değerleri yukarıdaki gibi hesaplanabilir.

Ayrıca bakınız

Referanslar

daha fazla okuma

Dış bağlantılar