מנוע הפרשים

מנוע הֶפְרֵשים הוא מחשבון מכני ספרתי בעל יעוד מיוחד. הוא מתוכנן לערוך בלוחות, ערכים של פולינום ידוע בסדרת נקודות בהפרש ("צעד") קבוע. מאחר שניתן לבצע קירוב של פונקציות לוגריתמיות וטריגונומטריות על ידי פולינומים, למשל בעזרת טור טיילור, היכולת לחשב ערכי פולינומים בנקודות רבות מאפשר בניית לוחות מתמטיים שונים, ובפרט לוחות לוגריתמים וחזקות (מכונים לפעמים לוחות "אנטילוגריתמים"), ולוחות טריגונומטריים. בהיעדר מחשבים ומחשבונים, לוחות כאלו חיוניים לביצוע חישובים מסוגים שונים, ובפרט חישובים הדרושים כדי לנווט (טריאנגולציה, וחישב המיקום בעזרת מדידת מיקום גרמי השמיים, ואמצעים נוספים כמו שעון אסטרונומי). בהנדסה ובניווט יש צורך בעריכת חישובים מדויקים, שחלקם נסמכים על ערכים של פונקציות טריגונומטריות שונות. כדי לעזור בעריכת חישובים אלו, משתמשים בלוחות מתמטיים, בעיקר לוחות לוגריתמים, הן עבור בסיס טבעי והן עבור בסיס 10, וכן לוחות טריגונומטריים. הלוחות המתמטיים שהיו זמינים לפני ובתחילת המאה ה-19 חושבו באמצעים ידניים, והכילו שגיאות לא מעטות, הן בגלל טעויות חישוב, והן בשל טעויות דפוס: גם כשהערך חושב נכון, הכנת לוחות הסדר לדפוס הייתה תהליך ידני, ובתהליך זה נפלו שגיאות נוספות. כדי להתגבר על השגיאות, נוצרו מספר אסטרטגיות: למשל פעולת החישוב בוצעה על ידי שני "מחשבים" אנושיים נפרדים (מקצועם של האנשים שמחשבים חישובים נקרא באנגלית "computer", מילה ששינתה משמעותה אחרי הופעת המחשבים הראשונים), התוצאות הושוו, ואם לא היו זהות, בוצע החישוב מחדש. הלוחות המודפסים הוגהו בקפדנות, ועם כל זאת. עדיין נותרו בלוחות המודפסים שגיאות. עבור שגיאות שנשארו במהדורה המודפסת, ונתגלו לאחר מכן, נוספו ללוחות "דפי תיקון" (errata), שהכילו רשימת ערכים בהם נפלה שגיאה, והערך המתוקן, דבר שהקשה על השימוש - לא די למצוא את הערך המבוקש בלוח, צריך לבדוק כל פעם האם הערך המבוקש מופיע בדפי התיקון. בריטניה הייתה במאה ה-19 מעצמה ימית ומרכזה של אימפריה חובקת עולם, שבנוסף ל"מהודו ועד כוש", עם מושבות באפריקה ושליטה בתת-היבשת ההודית וחלקים מהודו-סין, אחזה ביבשת שלימה, אוסטרליה, ושלטה במסחר בסין. האימפריה והכלכלה הבריטית נשענה על צי מלחמה וצי סוחר שהקיפו את כדור הארץ ללא הרף. מחיר הטעויות בלוחות המתמטיים היה טעויות ניווט יקרות ומסוכנות, והצורך בלוחות אמינים ומדויקים היה רב. המהפכה התעשייתית הייתה בעיצומה, ויותר ויותר מלאכות שנעשו בעבר באופן ידני, מוכנו. בין השאר, מכונות חישוב מכניות החלו להופיע, ונעשו ניסיונות למצוא דרכים למכן את חישוב והדפסת הלוחות, מתוך שאיפה להימנע משגיאות באופן מוחלט. אחת הדרכים לחישוב הערכים בלוחות מתמטיים, היא קירוב באמצעות פולינומים. פונקציות אנליטיות (ולמרבה המזל, הלוחות המתמטיים הנחוצים לניווט והנדסה הם של פונקציות אנליטיות), ניתנות לחישוב בעזרת טורי חזקות, דוגמת טור טיילור ואחרים, הטורים הללו מתכנסים, ומשמעות הדבר היא, שניתן לחשב קירוב טוב כרצוננו של הפונקציה, בעזרת חישוב מספר סופי של איברי הטור. מספר סופי של אברי טור חזקות הוא לא פחות ולא יותר מאשר פולינום, ולכן ניתן לצמצם את הבעיה של חישוב לוחות מתמטיים בדיוק נתון, לחישוב הערכים של פולינום ידוע, בסדרת נקודות ידועה. מנוע ההפרשים הוא למעשה מכונה לחישוב פולינומים. המנוע מנצל תכונה מעניינת של פולינומים: אם ידוע ערכו של פולינום ממעלה N {\displaystyle N} בנקודה X 0 {\displaystyle X_{0}} , אפשר לחשב את ערך הפולינום בנקודה X 0 + δ {\displaystyle X_{0}+\delta } בעזרת חישוב פולינום שני, ממעלה N − 1 {\displaystyle N-1} , באותה נקודה, וחיבור התוצאה לערך הפולינום הראשון בנקודה. מקדמי הפולינום השני תלויים בפולינום המקורי, ובגודל הצעד. על ידי חזרה על הפעולה (כלומר חישוב הפולינום השני בעזרת פולינום שלישי, ממעלה N − 2 {\displaystyle N-2} וביצוע פעולת חיבור, השלישי בעזרת רביעי, וכך הלאה, עד לפולינום ממעלה 1, שהוא למעשה מספר קבוע), ניתן למעשה, לחשב את ערך הפולינום המקורי בעוד ועוד נקודות, בעזרת חזרה על סדרת פעולות חיבור בלבד, תוך שמירת תוצאות הביניים של כל פעולה, כך שישמשו בפעולות הבאות. הנושא מוסבר חלקית בהפרש חזקות, וביתר פירוט בסעיפים הבאים. כתוצאה מהאמור לעיל, ניתן, על ידי חישוב ידני של מספר "תנאי התחלה" והזנתם למנוע ההפרשים, לחשב את הערכים של הפולינום בנקודות הבאות, בעזרת פעולות חיבור בלבד. מתקנים מכניים שיכולים לבצע חיבור ידועים מראשית המאה ה-17, ואולי קודם לכן, ומכונות חישוב שמבצעות חיבור באופן מכני בצורה אמינה היו קיימות מאז ה"פסקלין" של בלייז פסקל. מנוע הפרשים הוא מכונה שמנצלת עובדה זו, כדי לחשב ערכים של פולינום ממעלה N בסדרת נקודות בהפרשים קבועים ביניהם, בעזרת פעולות חיבור בלבד. כדי לעשות זאת יש להחליט בתחילה על הנקודה הראשונה בה רוצים להתחיל לחשב, ואת גודל הצעד של הלוח: בעזרת הפולינום הראשון וגודל הצעד, ניתן לחשב את מקדמי הפולינום השני (ממעלה נמוכה ב-1 ממעלת הפולינום המקורי), בעזרת השני וגודל הצעד מחשבים את מקדמי הפולינום השלישי, וכן הלאה, עד לפולינום ממעלה 1, כלומר קבוע. כעת, מחשבים את ערכי כל הפולינומים הללו בנקודת ההתחלה, ומתחילים "להצעיד" את המנוע, כשבכל צעד מחושבים ערכי כל הפולינומים בנקודה הבאה, חוץ, כמובן, מהפולינום הראשון, ממעלה 0, שערכו הוא קבוע (ערך זה תלוי במקדמי הפולינום המקורי ובגודל הצעד שנבחר). ערכו של כל פולינום בנקודה X 0 + δ {\displaystyle X_{0}+\delta } שווה לסכום של ערכו בנקודה X 0 {\displaystyle X_{0}} , עם ערך הפולינום הנמוך ממנו באותה נקודה. שגיאת חישוב לשגיאת החישוב שני מקורות: המקור הראשון הוא העובדה שהפולינום הסופי הוא רק קירוב של הפונקציה המבוקשת. דרגת הקירוב תלויה בבחירת פולינום טוב לקירוב הפונקציה בסביבה נתונה. ככל שמשתמשים בדרגה גבוהה יותר של הפולינום, אפשר למצוא פולינום שמקרב את הפונקציה בצורה טובה יותר. ניתן לחשב חסם עליון לשגיאה הזו בקטע נתון. מקור נוסף לשגיאת החישוב, היא העובדה שלרוב המספרים אין ייצוג עשרוני סופי, אבל החישוב מתבצע במספר סופי של ספרות. תוך כדי חישוב הסדרה, שגיאת החישוב הולכת ומצטברת, וכדי להתגבר על הצטברות השגיאה, המנוע מבצע את החישובים בדרגת דיוק גדולה יותר מהתוצאה המודפסת: למשל, אם המספרים במנוע מיוצגים בדיוק של 30 ספרות, והמספרים המודפסים הם בדיוק של 10 ספרות, ניתן לחשב הרבה מאוד ערכים עד שהשגיאה המצטברת תגיע לספרה העשירית ותתבטא בטבלה המודפסת. ניתן לחשב חסמים עליונים לשגיאה, באופן שהטבלה מדויקת לחלוטין, במגבלת מספר הספרות המופיעות בה, ולחשב אחרי כמה מחזורי חישוב תגיע השגיאה המצטברת לדיוק הטבלה. בנקודה זו אפשר לחשב מחדש, ידנית, את הערכים המדויקים, להזינם למנוע, ושוב להריצו עד שהשגיאה המצטברת תגיע לסף. מכל האמור לעיל, נובע שכאשר נחוץ לוח מתמטי בדיוק נתון (למשל 6 ספרות), אפשר לבחור פולינום, ומספר ספרות נחוצות במכונה, כך שיספקו דרגת דיוק זו במלואה, כלומר השגיאה המרבית קטנה מההפרש המזערי בין שני ערכים אפשריים - בדוגמה שלנו, השגיאה המרבית היא בספרה מעבר לספרה השישית, ולכן לא תתבטא בטבלה. ההתקן הראשון נהגה לראשונה בשנת 1786 על ידי ג'י. איץ'. מולר אולם לא נבנה מעולם. ב-1822, הציע צ'ארלס בבג', מדען בריטי ידוע, חבר החברה המלכותית, לממשלת בריטניה בניית מנוע הפרשים, המכונה המוצעת של בבג' פתרה הן את בעיה שגיאות החישוב האנושיות, והן את בעיית טעויות הדפוס, משום שהתהליך היה ממוכן עד להכנת לוחות הבלט לדפוס. הממשלה הסכימה לממן את הפרויקט, ללא לוחות זמנים מחייבים, בתקציב גבוה, של כ-20,000 לירות שטרלינג. בבג' שכר את אחד המכונאים הנחשבים ביותר, אדם בשם ג'וזף קלמנט, לביצוע הפרויקט. קלמנט ייצר חלק מהמכונה כאבטיפוס, אותו נהג בבג' להציג, אבל הבנייה עצמה ארכה, וב-1831 חילוקי דעות בין בבג' וקלמנט הביאו למעשה לסיום הפרויקט. המכונה כולה, לו נבנתה, הייתה אמורה להכיל מעל 25,000 חלקים, ולשקול מעל 13 טון. תוך כדי ביצוע הפרויקט, בבג' המשיך לשכלל את רעיונותיו ולהמציא חדשים, ואחרי שהפרויקט הסתיים בלי תוצאה ממשית, בין 1847 ל-1855 בבג' תכנן ושרטט גרסה חדשה - "מנוע הפרשים מספר 2", מכונה שבזכות שכלולים שונים נזקקה לפחות חלקים, והייתה קטנה ופשוטה יותר לייצור, אם כי עדיין שקלה מספר טונות. בשלב זה הממשלה הבריטית סירבה לממן פרויקט נוסף, ומנוע ההפרשים מספר 2 נותר על הנייר, עד שנת 1989: מוזאון המדע בלונדון, כהכנה לציון 200 שנים להולדת בבג' ב-1991, החליט לנסות לבנות את מנוע הפרשים מספר 2. טקסטים היסטוריים רבים מכילים את הטענה שמנוע ההפרשים לא היה ניתן למימוש בטכנולוגיות ובחומרים שהיו זמינים לבבג', ועד לפרויקט הזה, זו הייתה הדעה המקובלת. ואחת ממטרות הפרויקט הייתה לבדוק, ואם אפשר להפריך, את הטענה הזו, ולכן המבצעים הגבילו עצמם לשימוש בחומרים ובאפיצויות (כלומר מידת הדיוק של החלקים המיוצרים) שהיו זמינים ב-1850. הפרויקט הסתיים בהצלחה ב-1991, ובכך הדגים שטכנית, ניתן היה לייצר את המנוע כבר במחצית המאה ה-19. הדגם שבנייתו הסתיימה ב-1991, בשינויים קלים בלבד, עדיין חסר את המדפסת. בשנת 2000 הסתיימה בניית המדפסת, ודגם מנוע ההפרשים מספר 2, מוצג ופעולתו מודגמת במוזאון (דגם שני נבנה עבור אספן פרטי, שבתמורה מימן את בניית המדפסת). יש לשים לב ולא לבלבל בין מנוע הפרשים, המהווה מכונת חישוב ייעודית מורכבת, ובין המנוע האנליטי של בבג' (שהתקיים על הנייר בלבד), ונועד לבצע תוכנית המוזנת אליו, ובדרך כלל נחשב לתכנון הראשון של מחשב. היזם והממציא השוודי, פר גאורג שוץ, בהשראת עבודתו של בבג', תכנן ובנה סדרת מנועי הפרשים. המנוע הראשון נבנה בין 1837 ל-1843 בעזרת בנו, אדוורד שוץ. מנוע נוסף נבנה ב-1853, והוצג בתערוכה העולמית של פריז ב-1855. שוץ המשיך לשכלל וליצור דגמים נוספים. אחד מהם, שנבנה ב-1859, נמכר שנה מאוחר יותר לממשלת בריטניה. לעומת מנוע ההפרשים של בבג', שהיה בגודל של קטר קטן, מכונתו של שוץ תוארה כ"בגודל דומה לפסנתר". המנועים של שוץ לא היו מושלמים, ולא יכלו לייצר טבלאות שלמות. שוודי נוסף, בשם מרטין ויברג, תכנן את המכונה מחדש באופן שפתר את הבעיות, וב-1875 מנוע ההפרשים של ויברג היה מסוגל ליצור לוחות מתמטיים (למעשה, סדרת ערכים של פולינומים ידועים בנקודות ידועות, אך מבחינה מעשית היו אלו לוחות מתמטיים לכל דבר). מכונתו של ויברג הייתה קטנה יותר ממכונותיו של שוץ, וגודלה דומה לגודלה של מכונת תפירה. ויברג לא מצא קונה למכונתו, וגם לא הצליח למכור את הלוחות שהמכונה ייצרה, בגלל פגמים גרפיים. המכונה מוצגת היום במוזאון השוודי הלאומי למדע וטכנולוגיה בסטוקהולם. Swade, Doron (2002). The Difference Engine: Charles Babbage and the Quest to Build the First Computer. Penguin (reprint). ISBN 0-14-200144-9. מדיה וקבצים בנושא מנוע הפרשים בוויקישיתוף מנוע ההפרשים מספר 1 במוזיאון_המדע_(לונדון) מנוע ההפרשים במוזיאון_היסטוריית_המחשב מנוע ההפרשים של מקנו #1 מנוע ההפרשים של מקנו #2 מנוע הפרשים בלגו science/Difference-Engine-No-2 מנוע הפרשים, באתר אנציקלופדיה בריטניקה (באנגלית) Golding Bird, Charles Brooke, The Elements of Natural Philosophy; Or, An Introduction to the Study of the Physical Sciences, J. Churchilll and Sons, 1867. (באנגלית) Räknemaskin, digitaltmuseum.se (בשוודית)