Hoe deed men heel moeilijke wiskundige berekeningen toen er nog geen computers of rekenmachines waren?

Tim, 30 jaar
3 mei 2019

En hoeveel tijd kon dat in beslag nemen?

Antwoord

Beste Tim,

Manueel! De maanlanding is een goed voorbeeld. Er waren bij NASA zalen met rekenaars die berekening uitvoerden, anderen hun berekening controleerden of delen van de berekening samenvoegden. Een goede film waarin dit geïllustreerd wordt, is "hidden figures". Noteer dat deze menselijke rekenaars voornamelijk vrouwen waren. 

Wat belangrijk is om te weten is dat het algoritmische denken veel ouder is dan de computers. Dit denken is al zo oud als de wiskunde zelf. Een wiskundige techniek wordt vaak verbeterd opdat die sneller, minder gevoelig is aan rekenfouten, gestructureerder of adaptiever zou worden. Als één of meerdere van die doelstellingen beoogd worden, dan bekom je snel een algoritme.

De Egyptenaren waren heel goed in algoritmisch denken. Egypte had een rijke wiskunde, hoewel minder abstract dan hoe de Grieken wiskunde bedreven. Egypte kende een soort van kookboek-wiskunde waar methoden beschreven op papyrusrollen verdeeld werden doorheen het land om bepaalde berekeningen uit te voeren. Een interessante is de wijze van vermenigvuldigen en delen (1700-2000 VC). Dit voerden zij uit door alleen te verdubbelen of halveren omdat dit snel ging. Bijvoorbeeld 7x19 voerden zij als volgt uit:

1x7=7

2x7=14

4x7=28

8x7=56

16x7=112

Dan tellen ze de oplossingen van 1x7, 2x7 en 16x7 bij elkaar op zodat 7x19=7+14+112=133. Merk op dat computers dit nog steeds op deze wijze doen met behulp van een binair getalstelsel.

Het algoritme van Euclides om de grootste gemene deler te vinden is een ander voorbeeld dat nu nog altijd gebruikt wordt. Algoritmisch denken is al lang aanwezig die de doelstelling had/heeft om een methode aan te reiken die zonder veel inzicht met een vast stappenpatroon gegarandeerd de oplossing oplevert. 

Mijn favoriete historische voorbeeld is dat van André-Louis Cholesky die als officier in de 1ste wereldoorlog als landmeter de doelstelling had om op basis van landmetingen uitgevoerd door verkenners zo nauwkeurig mogelijke militaire kaarten te produceren. Natuurlijk waren de verkenners hun rapporten onderhevig aan fouten en is het de bedoeling om die fouten te onderdrukken door verschillende data samen te brengen. Hij ontwierp een methode die snel en voldoende eenvoudig was zodat dit ruimschoots verspreid kon worden en uitgevoerd worden door een breder publiek. Deze Cholesky factorisatie heeft vandaag enorm veel toepassingen en uitbreidingen precies omdat het zo numeriek stabiel en alsdus weinig gevoelig is aan kleine rekenfouten.

Precies doordat het algoritmische denken zo oud is als de wiskunde zelf, is men relatief snel naar mechanische machines gegaan die de voorloper spelen van de computers. De Grieken maakten een mechanisch instrument dat de positie aan de hemel van de zon en andere hemellichamen kon berekenen met een tandwielensysteem precies op de wijze waarop astronomen deze berekenden (+/- 100 VC). 

De eerste echte rekenmachine die elementaire operaties zoals optellen, aftrekken kon uitvoeren was in 1642 door de wiskundige Blaise Pascal ontworpen, wat in 1672 werd uitgebreid tot delen en vermenigvuldigen. In 1822 bouwde men een mechanische computer die veeltermen kon berekenen. In 1886 werd een apparaat gebouwd dat een harmonische decompositie uitvoerde van golven door Fourieranalyse in een algoritme om te vormen. Dat is een straf voorbeeld, want dat is enorm rekenintensief. Fourieranalyse is pas in real-time kunnen worden uitgevoerd bij de invoering van de Fast Fourier Transform algoritme in 1965 door Cooley & Tuckey. 

Het verkleinen van de rekenmachines tot de grootte van een winkelkassa kwam op de markt rond 1911 onder de Marchant Calculating Machine. Deze mechanische computers bleven in gebruik tot de jaren 1960 voor sommige toepassingen.

Bekijk eens het volgende artikel in het Engels over de werking van de NASA destijds: https://www.nasa.gov/feature/jpl/when-computers-were-human. Uiteraard had de Apollo shuttle een boordcomputer - de zogenaamde AGC of Apollo Guidance computer. Die werkte destijds met ongeveer 64 kB ram en een kloksnelheid van 43 kB. Deze kloksnelheid kan ongeveer 43 000 berekening doen per seconde. Dat klinkt veel maar dat is in lineaire tijd. Het volgende is wat technisch maar je moet weten dat de wiskundige algoritmes niet altijd in lineaire tijd werken - naargelang hoe complex de methode wordt. Wat betekent dat: Een algoritme is van complexiteit 3 indien voor n-gegevens te verwerken, je n x n x n berekening moet doen. Mijn historisch voorbeeld van de Cholesky factorisatie is een kubisch algoritme wat dus van complexiteit 3 is. Kubische complexiteit is ook een typische orde van de algoritmes die destijds voor de maanlanding nodig waren, dit betekent dat met de kloksnelheid van 43 kB, je per seconde maar 35 gegevens kan verwerken. Je ziet dat je dus met een dergelijke snelheid niet ver komt. Men loste dit op door op voorhand veel uit te rekenen en met zogenaamde "look-up-tables" te werken. Veel scenario's werden reeds uitgerekend zodat je het juiste scenario kon kiezen om correct te navigeren. De hoeveelheid manuele arbeid nodig was dus aanzienlijk.  

Wiskunde blijft een drijvende kracht achter de softwareinnovaties want onze smartphones zijn mini-computers die een enorme rekenkracht bezitten. Wiskunde werkt altijd achter de schermen zodat de meeste mensen dit niet appreciëren omdat men het zich niet realiseert. Real time analyse vormt nog altijd een grote uitdaging van de wiskunde. In mijn eigen vakdomein de medische instrumentatie vraagt electrochirurgie de verwerking van 400 000 000 datapunten per seconde - indien je dit in real-time zou willen - wat nog niet mogelijk is. Een kubisch algoritme moet dus bijgevolg 400 000 000 x 400 000 000 x 400 000 000 of  64 x 10^24 berekening per seconde uitvoeren. Je huiscomputer kan ongeveer 10^12 berekening per seconde uitvoeren. We lopen dus op de limieten van wat mogelijk is. Hoe lossen we dat op? We herschrijven de wiskunde zodat we deze versnellen en toelaten dat er rekenfouten komen door benaderingen.

De wiskundige theorie van preconditionering bepaalt dat je niet het origineel probleem oplost maar een "naburig" eenvoudiger probleem. Dat naburig probleem kan je veel sneller oplossen en/of nauwkeuriger. Natuurlijk maak je een fout omdat de oplossing niet die van het origineel probleem is maar als het naburige probleem voldoende dicht is, is de fout die je maakt misschien toelaatbaar of verwaarloosbaar klein. Een andere methode is het numeriek extrapoleren wat in een notedop betekent dat de berekeningen op microschaal correct zijn maar als je ze in een groter geheel uitvoert op eenzelfde wijze niet langer correct zijn, doch kan je dat sneller doen en blijft de fout die gemaakt wordt onder controle. Dit hele vakdomein binnen de wiskunde noemt men "scientific computing" of "wetenschappelijk rekenen".

Ter conclusie, de algoritmes worden zo ontworpen dat de rekenfouten begrensd blijven binnen afgesproken tolleranties. Bovendien maken we gebruik van parallel computing, of cloud computing zodat een netwerk van computers samen de berekening uitvoeren. Eigenlijk zijn we terug bij NASA waar zalen van "menselijke" rekenaars de berekeningen uitvoerden vervangen worden door de cloud met een netwerk van verschillende "kunstmatige" rekenaars. 

Vriendelijke groeten,

Kurt.

Reacties op dit antwoord

Er zijn nog geen reacties op deze vraag.

Enkel de vraagsteller en de wetenschapper kunnen reageren op een antwoord.

Beantwoord door

Prof. Dr. Kurt BarbĂ©

Wiskunde, statistiek, kansrekening, wetenschappelijk rekenen

Vrije Universiteit Brussel
Pleinlaan 2 1050 Elsene
http://www.vub.ac.be/

Zoek andere vragen

© 2008-2019
Ik heb een vraag wordt gecoördineerd door het
Koninklijk Belgisch Instituut voor Natuurwetenschappen