Een grafische rekenmachine waarvan zowel de hardware als de software onder een vrije licentie beschikbaar is. De NumWorks biedt het allemaal, en is vanaf 2022 toegestaan op Nederlandse eindexamens.
Koen Vervloesem
NumWorks is een Frans bedrijf dat een grafische rekenmachine maakt. Het speciale hieraan is dat zowel het hardwareontwerp als de software beschikbaar is onder een Creative Commons-licentie. De 3d-modellen van de behuizing, de broncode van de firmware, elektronische schema’s van de printplaat, je vindt het allemaal. Op de webpagina Engineering vind je meer uitleg. In principe kun je dus je eigen rekenmachine 3d-printen en in elkaar steken.
De werking van de NumWorks-rekenmachine is volledig open.
Wij schaften het nieuwste model aan, dat officieel N0110 heet maar ook gewoon NumWorks wordt genoemd. Het heeft een 2,8″ IPS-kleurenscherm van 320 bij 240 pixels met 140 ppi, een STM32F730V8T6 Cortex-M ARMv7-processor met een klokfrequentie van 216 MHz, 8 MB flash ROM, 256 KB statisch RAM en een lithium-polymeerbatterij met een capaciteit van 1450 mAh. De NumWorks kost € 89,99 en is daarmee vergeleken met concurrerende grafische rekenmachines zeker niet duur. Wil je het toestel op voorhand eens uitproberen, dan kan dat met de online emulator. Iets wat we graag bij heel wat andere apparaten zouden zien!
NumWorks richt zich met de rekenmachine vooral op het voortgezet onderwijs. De rekenmachine is goedgekeurd door het College voor Toetsen en Examens (CvTE) in Nederland en is per 2022 toegestaan voor gebruik op centrale examens door havo- en vwo-leerlingen. Er is zelfs een speciale examenstand voorzien.
De eerste keer dat je de NumWorks inschakelt (met het zwarte powerknopje), krijg je de vraag om een taal te kiezen. Dat doe je met de pijltjestoetsen. Er staat geen Nederlands bij, maar dat is niet erg: na een update krijg je die keuze wel. Daarna krijg je de vraag om het besturingssysteem te updaten. Sluit je NumWorks via de meegeleverde gele USB-kabel op je computer aan en bezoek dan in je webbrowser www.numworks.com/update. Je dient eerst een account aan te maken en in te loggen. Klik daar op de pagina Mijn apparaten op Update mijn rekenmachine.
De website van NumWorks maakt hiervoor gebruik van WebUSB, en dat werkt voorlopig alleen in Chrome (en Chromium). Volg de instructies. Je dient eerst een configuratiebestand te downloaden en in /etc/udev/rules.d te zetten zodat Chrome verbinding kan maken met je rekenmachine via WebUSB:
sudo cp Downloads/50-numworks-calculator.rules /etc/udev/rules.d/ udevadm control --reload-rules
Haal de USB-kabel even uit je computer en sluit hem weer aan. Als je je rekenmachine opstart, moet je THE CALCULATOR IS CONNECTED zien. Klik dan in Chromium op de knop Detecteer. Als alles goed gaat, zie je NumWorks Calculator in de lijst staan. Indien niet, kijk dan even in de Experttips in dit nummer van Linux Magazine hoe je het probleem oplost.
Selecteer de rekenmachine in de lijst met apparaten die Chromium toont en klik op Verbinding maken. De website detecteert nu je rekenmachine. Klik op Installeer de update. Na minder dan een minuutje is de software op je rekenmachine up-to-date en kun je op Afsluiten klikken. Daarna kregen we ook de mogelijkheid om Nederlands als taal te kiezen.
Op het hoofdscherm vind je allerlei icoontjes van verschillende onderdelen, die door NumWorks ‘apps’ worden genoemd. Selecteer met de pijltjestoetsen een onderdeel en druk op de toets OK om het te openen. Op elk moment kun je naar het hoofdscherm terugkeren met de gele thuisknop of naar het vorige scherm met het pijltje terug naast de knop OK.
Het belangrijkste wat je van een rekenmachine verwacht, is uiteraard dat je ermee kunt rekenen. Dat vind je in het onderdeel Calculatie. Je berekening invoeren gaat heel intuïtief (voor breuken kun je bijvoorbeeld gewoon de pijltjestoetsen gebruiken om boven of onder de breukstreep te gaan of verder te gaan na de breuk), en met de knop EXE voert NumWorks de gevraagde berekening uit.
NumWorks rekent zoveel mogelijk exact, bijvoorbeeld met breuken en symbolische waardes. Het exacte resultaat wordt dan in het zwart weergegeven, met een numerieke benadering in het grijs ernaast. Extra functies vind je overigens in de toolbox, die je opent met het knopje van de koffer (tussen var en het backspace-knopje). En ook matrices voer je intuïtief in: begin met een rechte haak [ te openen.
De opeenvolgende berekeningen komen in de geschiedenis terecht, en met het pijltje naar boven kun je deze nadien nog overlopen. Met een druk op OK kopieer je het resultaat naar de bewerkingsbalk onderaan, of met het pijltje naar links en dan OK kopieer je de invoer. Je kunt ook het laatste resultaat rechtstreeks in je berekening gebruiken met de toets Ans.
Bij de meeste resultaten in de geschiedenis staan ook drie puntjes rechts van de berekening. Selecteer je die en druk je dan op OK, dan krijg je nog extra informatie. Bij een geheel getal is dat bijvoorbeeld de hexadecimale en binaire voorstelling en priemfactoren, terwijl je bij een complex getal onder andere de absolute waarde en de voorstelling in het complexe vlak krijgt.
Ook het onderdeel Functies is stevig uitgewerkt. Voeg een functie toe, geef de formule in en kies onderaan voor Grafiek plotten om de grafiek te tonen. Met de pijltjestoetsen kun je de punten op de grafiek overlopen, terwijl je de coördinaten onderaan ziet. In het tabblad Tabel kun je ook een tabel opvragen van de functiewaarden. Als je in het tabblad Grafiek na het plotten van je functie op OK drukt, kun je enkele eigenschappen van de functie berekenen, waaronder het minimum, maximum, nulpunten, tangens en integraal.
Een derde, intrigerend onderdeel in het hoofdscherm van NumWorks is Python. Nee, het is geen volwaardige Python zoals je op je ontwikkelmachine draait, maar het gaat om MicroPython 1.12, compatibel met Python 3.4. Zodra je het onderdeel opent, staan er al enkele voorbeeldscripts klaar. Je opent een script eenvoudig door het te selecteren en op OK te drukken.
Een script uitvoeren doe je door de drie puntjes naast de scriptnaam te selecteren, OK te drukken en dan Script uitvoeren te kiezen. Het wordt dan geïmporteerd, waarna je in de Python-shell functies van het script kunt uitvoeren. Voer zo bijvoorbeeld het script mandelbrot.py maar eens uit en roep de functie mandelbrot(100) aan om de Mandelbrot-fractal op het scherm te tonen.
Fractals op je rekenmachine programmeren in Python? Met de NumWorks kan het!
Je kunt ook je eigen scripts toevoegen met Script toevoegen onderaan in de lijst. Letters intypen op het toetsenbord (met de toets alpha en dan de lettertoets) is wel omslachtig, ook al biedt het besturingssysteem wat ondersteuning met standaardconstructies die je in de Toolbox oproept en automatisch aanvullen van keywords in de scriptbewerker. De webinterface komt hier weeral ter hulp: op deze site kun je Python-scripts met het comfort van het toetsenbord van je pc intypen en dan naar je rekenmachine uploaden.
Onderaan het hoofdvenster van Python kun je ook gewoon een shell openen als je Python shell kiest. Standaard worden alle scripts die je hebt gedefinieerd geïmporteerd. Wil je dat niet, ga dan bij elk script naar de drie puntjes en schakel Automatisch importeren in shell uit. Als je de uitvoer van een script overigens ooit wilt onderbreken, doe je dat met de toets met het pijltje terug naast OK.
In het onderdeel Statistiek voer je in een tabel waarden en hun frequenties in. In de volgende tabbladen krijg je dan het histogram te zien, een boxplot, en allerlei statistische variabelen zoals het gemiddelde, de mediaan, de standaardafwijking enzovoort. Het onderdeel Kansrekenen biedt dan weer toegang tot allerlei kansverdelingen. Kies een kansverdeling uit de lijst, vul de parameters in, kies een type begrenzing (bijvoorbeeld of de kansvariabele <= is dan een getal of tussen twee grensgetallen ligt), en met een druk op OK krijg je de uitkomst. Voor regressie-analyse kun je terecht in het onderdeel Regressie. In de eerste kolom van de gegevens vul je de waarden van je eerste variabele van je dataset in en in de tweede kolom van je tweede variabele. Daarna vind je in het tabblad Grafiek de regressielijn y = ax + b en zie je onderaan de coëfficiënten a en b. Je kunt uiteraard ook andere dan lineaire regressies kiezen, en in het tabblad Stats vind je statistische variabelen zoals de standaardafwijking, covariantie en het aantal datapunten.
Een ander interessant onderdeel is Vergelijkingen, waarmee je (ook niet-lineaire) vergelijkingen of stelsels van (alleen lineaire, en maximaal zes) vergelijkingen oplost. Je voert een of meerdere vergelijkingen in en selecteert dan Vergelijking oplossen.
In het onderdeel Rijen kun je rijen getallen plotten en in tabelvorm weergeven. Dat kan als expliciete uitdrukking, maar ook als recursieve rijen van de eerste en tweede orde. Denk bij die laatste bijvoorbeeld aan de reeks van Fibonacci: kies als type rij voor Recursief tweede orde, vul un+2 = un+1 + un, u0 = 1 en u1 = 1 in en kies Grafiek plotten of Waarden weergeven. Bij het invoeren van de formules kun je overigens van de Toolbox gebruikmaken.
Het besturingssysteem dat op de NumWorks draait, heet Epsilon en de broncode is gewoon op GitHub te vinden, in een repository met heel wat activiteit. Er is ook een pagina met een high-level overzicht van de architectuur, evenals een pagina met instructies om de code te compileren en naar je rekenmachine te flashen. Wil je zelf bijdragen aan de code, dan zul je C++ moeten leren.
En omdat de code opensource is, zijn er uiteraard ook al forks ontstaan. Zo is er Omega, dat onder andere symbolische berekeningen toevoegt, fysische en chemische constanten en het periodiek systeem van de elementen. Voor wie wat extraatjes wil, is Omega de moeite waard om eens te proberen (ook deze website heeft een emulator). En bevalt het je niet, dan flash je daarna gewoon weer de officiële firmware van NumWorks.