KAlgebra: Softwarebasierter Ersatz für einen Grafikrechner

Aus LinuxUser 04/2025

KAlgebra: Softwarebasierter Ersatz für einen Grafikrechner

© blackzheep / 123rf.com

Taschenrechner

Ein teurer Profi-Grafikrechner von Texas Instruments kann Diagramme darstellen und passt locker in die Hosentasche. Das softwarebasierte Pendant KAlgebra braucht zwar einen PC, kostet dafür aber nichts.

Die Auswahl an Software für mathematische Anwendungen unter Linux ist klein. In den Repositories etlicher Distributionen findet sich zwar GeoGebra [1], jedoch nicht immer in der neuesten Desktop-Version 6.0.x. Bis vor Kurzem gab es GeoGebra als Erweiterung für den Chrome-Browser, allerdings unterstützt das Projekt diese Erweiterung nicht mehr offiziell. Was bleibt, ist lediglich die ressourcenhungrige cloudbasierte Spielart von GeoGebra.

Die Alternative KAlgebra [2] dagegen liegt in aktuellen Versionen in den Repositories der gängigen Distributionen. Darüber hinaus eignet sich die Software nicht nur für PCs, sondern auch für Einplatinenrechner wie den Raspberry Pi, da sie nur wenig Ressourcen beansprucht. Am einfachsten installieren Sie KAlgebra über den Paketmanager der von Ihnen verwendeten Distribution. Unter Ubuntu richten Sie die Mathematikanwendung beispielsweise mit dem Befehl sudo apt-get install kalgebra ein.

Überblick

Die für mathematische Anwendungen konzipierte Software ist zwar schlicht gehalten, verfügt jedoch nichtsdestoweniger über etliche Features. Im Zentrum der Anwendung steht die Reiterleiste, die den Zugang zu den Funktionen per Mausklick ermöglicht. Im Tab Rechner finden Sie einen Taschenrechner zum Auswerten mathematischer Funktionen sowie eine Möglichkeit zum Laden, Speichern und Ausführen von Skripten. Für das Plotten von Funktionen gibt es die beiden Reiter 2D-Graph und 3D-Graph. Das Dictionary im Tab Funktionen enthält eine Liste vordefinierter Funktionen, zudem können Sie eigene definieren. Darüber hinaus nehmen Sie hier Ableitungen vor und rechnen mit Vektoren und Matrizen.

Durch den Aufruf von Sitzung | Neu starten Sie eine Sitzung. Dabei verfügt jedes der Hauptfeatures über ein Eingabefeld oder Auswahlmenü sowie über ein Ausgabefeld für die Ergebnisse oder Grafiken. Bringen Sie keine Kenntnisse der Skriptsprachen Maxima und Maple mit, empfiehlt es sich, als Erstes das KAlgebra-Handbuch [3] durchzusehen: Den größten Lernaufwand hinsichtlich der Anwendung verursacht die Taschenrechnerfunktion (siehe Tabelle “Taschenrechner-Syntax”).

Befehl(e)

Bedeutung

+, -

Addition, Subtraktion

*, /

Multiplikation, Division

^, **

Potenz

=

gleich

>, >=

größer, größer gleich

<, <=

kleiner, kleiner gleich

->

Lambda (Angabe freier, in der Funktion gebundener Variablen)

()

Klammern (Erhöhen die Priorität des Ausdrucks)

:=

Definition

?

Bedingung

{}

Container

x=a..b

Intervall (x reicht von a nach b)

f(x)

Funktion ausführen

Grundrechenarten

Die vier Grundrechenarten wickeln Sie im Reiter Rechner über ausgeschriebene Befehle in Präfixnotation [4] ab. Die erste Zeile von Listing 1 zeigt ein Beispiel für eine Addition. Alternativ nutzen Sie zur Eingabe die entsprechenden Tasten für die Grundrechenarten auf dem Nummernblock der Tastatur. So können Sie mit der gebräuchlicheren und intuitiveren Infixnotation [5] arbeiten. Die Verwendung der geläufigen Symbole erhöht die Lesbarkeit der Ausgabe deutlich. Ähnlich wie bei einem Taschenrechner nehmen Sie auf diese Weise zum Beispiel eine Subtraktion mit mehreren Subtrahenden (Zeile 3) vor, um die Differenz auszugeben.

Für die Division gilt im Prinzip dasselbe wie für die anderen Grundrechenarten, wobei weitere vordefinierte Funktionen zur Verfügung stehen. Im Fachjargon heißt das Ergebnis einer Division Quotient, weshalb für diesen Zweck eine gleichnamige Funktion existiert (Zeile 5). Es kommt dasselbe Ergebnis zustande wie bei einer Division mit dem Operator /. Die Funktion rem (Zeile 7) ermittelt den Rest einer Division, wofür es auch Entsprechungen in anderen Programmiersprachen gibt.

Um später wieder auf das Ergebnis einer Operation zugreifen zu können, weisen Sie es mittels des Operators := einer Variablen zu (Zeile 9). Ergeben sich bei einer Berechnung Dezimalbrüche, dann lassen sich diese auf einen ganzzahligen Wert reduzieren, indem Sie Funktionen wie ceiling und floor zum Runden anwenden (ab Zeile 11).

Listing 1

Grundrechenarten

plus(3,5)
=  8
521-37-289
=  195
quotient(10,5)
=  2
rem(10882,43)
=  3
res:=10882/43
=  253.069767442
ceiling(res)
=  254
floor(res)
=  253

Potenzen und Wurzeln

Potenzen lassen sich wahlweise durch den Einsatz der Symbole Zirkumflex ^ oder Doppelasterisk ** vor dem Exponenten angeben. Durch Anwendung der vier Grundrechenarten können Sie weitere Berechnungen mit Potenzen vornehmen (Listing 2, Zeile 1 bis 4). Obwohl der implementierte Parser von KAlgebra die eingegebenen Potenzen erkennt, bleibt in der Darstellung die Lesbarkeit ein wenig auf der Strecke: Anders als beispielsweise in einem Textverarbeitungsprogramm erscheinen die Exponenten nicht hochgestellt (Abbildung 1).

Abbildung 1: Beim Berechnen von Potenzen formatiert KAlgebra die Eingabe nicht, was die Lesbarkeit der Syntax verschlechtert.

Abbildung 1: Beim Berechnen von Potenzen formatiert KAlgebra die Eingabe nicht, was die Lesbarkeit der Syntax verschlechtert.

Für Wurzeln gibt es zwei verschiedene Eingabemodi (Abbildung 2). Ähnlich wie bei Potenzen kommt der Zirkumflex zum Einsatz, um einen Bruch 1/n hochzustellen, wobei sich n auf die n-te Wurzel bezieht (Listing 2, Zeile 5). Daneben lässt sich die Wurzel unter Verwendung der Präfixnotation berechnen, indem Sie wie in Zeile 7 von Listing 2 auf die Funktion root zurückgreifen.

Abbildung 2: F&uuml;r die Berechnung von Wurzeln stehen zwei Eingabemodi zur Verf&uuml;gung, das Endergebnis f&auml;llt jedoch identisch aus.

Abbildung 2: Für die Berechnung von Wurzeln stehen zwei Eingabemodi zur Verfügung, das Endergebnis fällt jedoch identisch aus.

Listing 2

Potenzen und Wurzeln

(2**3)*(2**4)
=  128
(2**5)/(2**3)
=  4
125^(1/3)
=  5
root(125,3)
=  5

Logarithmen und Winkel

Darüber hinaus lässt sich KAlgebra zum Kennenlernen der Logarithmengesetze verwenden. Allerdings beherrscht die Anwendung bislang lediglich den Logarithmus zur Basis 10 sowie den natürlichen Logarithmus. Eines der Gesetze besagt, dass die Multiplikation zweier logarithmischer Terme der Addition zweier Logarithmen entspricht. Der Test bestätigt das (Listing 3, Zeile 1).

Ein ähnliches Gesetz existiert für die Division, da es sich hierbei um eine implizite Subtraktion handelt (Zeile 4). Ein drittes Gesetz weist darauf hin, dass der Logarithmus einer Zahl mit dem hochgestellten Exponenten n dem n-fachen des Logarithmus einer Zahl ohne Exponenten entspricht (Zeile 7).

Daneben beherrscht Kalgebra Winkelfunktionen wie Sinus und Kosinus. Beispielsweise ist es in der Physik üblich, die Division des Sinus durch den Kosinus (Zeile 11) durch die Tangensfunktion zu ersetzen (Zeile 13). Die Ergebnisse beider Berechnungen fallen dementsprechend identisch aus.

Listing 3

Logarithmen und Winkelfunktionen

log(93*7)
log(93)+log(7)
=  2.81358098857
log(93/7)
log(93)-log(7)
=  1.12338490854
log(100^5)
5*log(100)
=  10
a:=60sin(a)/cos(a)
=  0.32004038938
tan(a)
=  0.32004038938

Komplexe Zahlen

Anders als die reellen Zahlen verfügen die komplexen Zahlen nicht nur über einen Realteil, sondern auch über einen Imaginärteil i. Sie setzen nach dem Schema a+b*i zusammen (Listing 4, erste Zeile). KAlgebra offeriert Funktionen, um die beiden Summanden aus der komplexen Zahl zu extrahieren. Dabei berechnet real den Realteil (Zeile 2) und imaginary den Imaginärteil (Zeile 4).

Oftmals ist in Matheaufgaben die Rede von der konjugiert komplexen Zahl. Dabei handelt es sich um eine komplexe Zahl, bei der man lediglich das Vorzeichen des Imaginärteils austauscht. Das realisieren Sie in KAlgebra mittels der Funktion conjugate, der Sie die zu konjugierende komplexe Zahl übergeben (Listing 4, Zeile 6). Das Argument einer komplexen Zahl z hängt nicht nur davon ab, in welchem Quadranten eines Kreises sie sich befindet, sondern auch vom Real- beziehungsweise Imaginärteil. Hierfür stellt KAlgebra die Funktion arg zur Verfügung (Zeile 8).

Da man komplexe Zahlen gern in der Exponentialform darstellt, spielt hier außerdem das Rechnen mit Potenzen eine wichtige Rolle. So ist das Quadrat von i per Definition gleich -1 (Listing 4, Zeile 10). Wenn sich jedoch der Exponent von i erhöht (ab Zeile 12), kommt als Ergebnis ±i oder einfach eine 1 heraus (Listing 4).

Listing 4

Komplexe Zahlen

z:=2+3*ireal(z)
=  2
imaginary(z)
=  3
conjugate(z)
=  2-3*i
arg(z)
=  0.982793723247
i^2
=  -1
i^7
=  -i
i^(56)
=  1

Container

Bei Matrizen, Vektoren oder Listen handelt es sich im Prinzip um Container. In der KAlgebra-Syntax definieren Sie Variablen oder Werte, die zusammen eine Menge bilden, durch geschweifte Klammern. Ein vorangestelltes Schlüsselwort kennzeichnet die Art des Containers eindeutig. Für eine Liste verwenden Sie also das Schlüsselwort list und geben die Listenelemente innerhalb der geschweiften Klammern an (Listing 5, erste zwei Zeilen).

Für Listen stehen die Funktionen forall, exists, map und filter zur Verfügung. Allerdings bildet KAlgebra bei den Mengenoperationen lediglich die Vereinigung ab. Obendrein berücksichtigt die Software bei der Vereinigung zweier Listen offenbar keine Redundanzen. Das führt dazu, dass dieselben Listenelemente mehrmals vorkommen können (Listing 5, Zeile 3 und 4).

Matrizen definieren Sie zeilenweise durch den Einsatz des Schlüsselworts matrixrow, sodass der Gesamtausdruck für eine Matrix verschachtelt aussieht (Listing 5, Zeile 5). Um nach der Eingabe eines Ausdrucks weiterzurechnen, steht neben dem Zuweisungsoperator := die Variable ans zur Verfügung. Sie enthält stets das letzte Ergebnis, in Zeile 7 also die eingegebene Matrix. Der Befehl transpose(ans) erstellt die dazugehörige transponierte Matrix (Abbildung 3).

Abbildung 3: Die Ausgabe von Matrizen basiert lediglich auf Befehlen und weicht sehr von der &uuml;blichen Schreibweise einer Matrix ab.

Abbildung 3: Die Ausgabe von Matrizen basiert lediglich auf Befehlen und weicht sehr von der üblichen Schreibweise einer Matrix ab.

Listing 5

Listen und Matrizen

A:=list { 2, 4, 6, 8 }B:=list { 1, 2, 3, 4, 5 }union(A, B)
=  list { 2, 4, 6, 8, 1, 2, 3, 4, 5 }
matrix { matrixrow { 2, 3 }, matrixrow { 1, 4 } }
=  matrix { matrixrow { 2, 3 }, matrixrow { 1, 4 } }
transpose(ans)
=  matrix { matrixrow { 2, 1 }, matrixrow { 3, 4 } }

Funktionen

Funktionen definieren Sie in KAlgebra im Prinzip wie Variablen über den Zuweisungsoperator. Zusätzlich nutzt die Funktion eine oder mehrere freie Variablen, an die der Parser beim Aufruf der Funktion die übermittelten Werte bindet. Die Definition einer Funktion folgt dabei dem Schema Funktionsname := (Variable(n)-> Ausdruck.

Eine simple Funktion ist print, die lediglich den Wert einer Variablen ausgibt (Listing 6, erste Zeile). Ähnlich wie vorhandene oder gesondert definierte Variablen erscheinen Funktionen auf der rechten Seite der Anwendung, in der Komponente Variablen (Zeile 3). Bei Bedarf ergänzen Sie den Fundus um weitere mathematische Funktionen. Beispielsweise berechnen Sie die Kreisfläche, indem Sie auf vordefinierte Variablen wie pi zurückgreifen (Zeile 5).

Bei Ableitungen wird die Sache etwas komplizierter, da die umständliche Syntax die Eingabe erschwert. In Zeile 7 erscheint die abzuleitende Funktion mydiff als Argument von diff, wobei zusätzlich die Variable, nach der abgeleitet wird, gesondert in Klammern steht. Außerdem bedarf es einer Angabe des Grenzwerts, wobei unter Umständen die Wiederholung der Variable (:x) genügt (Abbildung 4).

Abbildung 4: Die Syntax von Ableitungen erwartet neben der Funktion selbst zwei weitere Angaben.

Abbildung 4: Die Syntax von Ableitungen erwartet neben der Funktion selbst zwei weitere Angaben.

Andererseits lassen sich mathematische Funktionen wie die Areafunktion Areakosinus hyperbolicus (arcosh, Zeile 9) neu definieren. Beim Parsen der selbst definierten Funktionen erkennt KAlgebra offenbar, dass sich die Funktion plotten lässt, und blendet nach der Eingabe rechts über der Definition die möglichen Optionen dazu ein (Abbildung 5). Durch einen Mausklick auf die jeweilige Option, im Beispiel auf den Link Plot 2D, öffnet sich der entsprechende Reiter mit der grafischen Darstellung der Funktion.

Abbildung 5: Bei der Eingabe grafisch darstellbarer Funktionen blendet KAlgebra die verf&uuml;gbaren Optionen ein.

Abbildung 5: Bei der Eingabe grafisch darstellbarer Funktionen blendet KAlgebra die verfügbaren Optionen ein.

Listing 6

Funktionen

print(3)
=  3
print:=x->x
=  x->x
A:=r->pi*r^2
=  r->pi*r^2
mydiff:=x->(diff(5*x^2-15+10*x:x))(x)
=  x->(diff(5*x^2-15+10*x:x))(x)
myarccoshx:=x->ln(x+root(x^2-1,2))
=  x->ln(x+root(x^2-1,2))

Funktionen höherer Ordnung zeichnen sich dadurch aus, dass sie eine Funktion als Argument akzeptieren, die sie auf die Listenelemente anwenden. Auf diese Weise definieren Sie in KAlgebra beispielsweise List Comprehensions wie bei Python, allerdings wirkt die Definition umständlicher. So erstellt die Eingabe aus der vierten Zeile von Listing 7 eine List Comprehension, die die Werte von Listenelementen verdoppelt.

Erst wenn Sie die Liste definiert haben, lässt sich die Filterfunktion darauf anwenden. Im konkreten Fall genügt es, die Liste mit vorhandenen Werten zu initialisieren (Zeile 1). Durch das Anwenden der Bedingung, nur ungerade Zahlen zu verwenden, gibt die Filterfunktion eine neue Liste odds mit ungeraden Zahlen zurück (Zeile 3). Anschließend verdoppelt die implementierte Funktion mydouble die Werte, indem sie die Funktion map auf jedes Listenelement anwendet.

Listing 7

List Comprehension

nums:= list{1, 2, 3, 4, 5, 6}odds:=filter(u->not(rem(u,2)=0),nums)
=  list{1,3,5}
mydouble:=x->map(x->x+x, odds)
=  x->map(x->x+x, odds)
mydouble(2)
=  list {2,6,10}

Vektoren

Vektoren definieren Sie wie Matrizen mit dem passenden Schlüsselwort und einem Container. KAlgebra kennt Funktionen wie scalarproduct, um das Skalarprodukt zweier Vektoren zu berechnen. Daneben lassen sich selbst definierte Funktionen auf Vektoren anwenden (Listing 8). Beispielsweise können Sie KAlgebra ermitteln lassen, ob zwei Vektoren orthogonal sind. Das trifft dann zu, wenn ihr Skalarprodukt gleich 0 ist.

Die Überprüfung der beiden Vektoren realisieren Sie mithilfe der Funktion is_ortho (Zeile 5), indem Sie die Elemente des Skalarprodukts zusammenzählen. Die Addition findet bereits in der Bedingung statt, die das Schlüsselwort piecewise innerhalb der geschweiften Klammern einleitet. Ist die Bedingung wahr, liefert die Funktion eine 1 zurück, ansonsten eine 0 (Abbildung 6).

Abbildung 6: Auf den Inhalt der Vektoren kann wie bei Listen zugegriffen werden.

Abbildung 6: Auf den Inhalt der Vektoren kann wie bei Listen zugegriffen werden.

Listing 8

Vektoren

a:=vector{4,5}b:=vector{10,-8}res:=scalarproduct(a,b)
=  vector { 40, -40 }
is_ortho:=x->piecewise { x[1]+x[2] = 0 ? 1, ? 0 }
=  x->piecewise { x[1]+x[2] = 0 ? 1, ? 0 }
is_ortho(res)
= 1

2D-Grafiken

Durch einen Wechsel zum Reiter 2D-Graph lassen sich die selbst definierten Funktionen aus dem Tab Rechner plotten. Die Funktionen dazu erscheinen auf der rechten Seite unter Funktionen | Liste, das Resultat gibt KAlgebra nach dem Anklicken direkt im Plotter aus (Abbildung 7). Dabei stellen Sie die Ausgabe des Graphen genauer ein, indem Sie zweimal auf die Funktion klicken.

Abbildung 7: W&auml;hrend der Ausgabe k&ouml;nnen Sie die Darstellung des Graphen modifizieren.

Abbildung 7: Während der Ausgabe können Sie die Darstellung des Graphen modifizieren.

So beherbergt die Komponente Funktionen unter Bearbeiten ein Vorschaufenster, in dem Sie per Mausklick aus dem entsprechenden Ausklappmenü die Farben für die Darstellung auswählen. Zusätzlich gibt es dort den Tab Optionen, in dem Sie die Grenzwerte der Variablen einer Funktion festlegen. Die Änderungen bestätigen Sie durch einen Klick auf OK.

Übrigens müssen Sie die darzustellenden Funktionen nicht vorab im Rechner eingeben. Das können Sie genauso gut über Funktionen | Hinzufügen erledigen, indem Sie die Eingabe im zugehörigen Feld eintippen und danach per OK bestätigen (Abbildung 8). Zusätzlich lässt sich die Ansicht weiter verfeinern, indem Sie über Funktionen | Darstellungsfeld die Größe des Koordinatenkreuzes anpassen.

Abbildung 8: Neue Funktionen k&ouml;nnen Sie im Vorschaufenster inspizieren, bevor KAlgebra sie zeichnet.

Abbildung 8: Neue Funktionen können Sie im Vorschaufenster inspizieren, bevor KAlgebra sie zeichnet.

Weitere Optionen stehen im Hauptmenü zur Verfügung. So blenden Sie das hinter dem Graphen liegende Gitter über den gleichnamigen Menüpunkt unter 2D-Graph ein oder aus. Über dasselbe Menü exportieren Sie bei Bedarf unter Speichern den Funktionsgraph als Bild. Da der Plotter über einen Live-Cursor verfügt, können Sie durch Drücken von [Strg]+[+] und [Strg]+[-] in den Graphen hinein und wieder heraus zoomen.

Vorhandene Funktionen aus dem Dictionary lassen sich plotten, indem Sie oben in der Reiterleiste zum Tab Funktionen wechseln und auf eine der Funktionen innerhalb der Komponente Operationen klicken. In dieser Ansicht stehen lediglich Vorschauen der Funktionen zur Verfügung (Abbildung 9).

Abbildung 9: Das Dictionary enth&auml;lt alle Befehle und kann deren Resultat visualisieren.

Abbildung 9: Das Dictionary enthält alle Befehle und kann deren Resultat visualisieren.

3D-Grafiken

Das dreidimensionale Koordinatenkreuz aus den X-, Y- und Z-Achsen öffnen Sie durch einen Klick auf den Reiter 3D-Graph. Die Ansicht unterscheidet sich von der für zweidimensionale Grafiken, es gibt lediglich ein Eingabefeld am unteren Fensterrand (Abbildung 10). Momentan unterstützt KAlgebra hier Funktionen mit zwei Variablen, zum Beispiel (x,y)->sin(x)*sin(y).

Abbildung 10: Bei dreidimensionalen Graphen erlaubt KAlgebra eine Rotation entlang der Achsen.

Abbildung 10: Bei dreidimensionalen Graphen erlaubt KAlgebra eine Rotation entlang der Achsen.

Ein Vorteil der 3D-Darstellung liegt darin, dass sich das Diagramm bei gehaltener linker Maustaste durch Bewegen der Maus entlang der Achsen rotieren lässt. Daneben besteht die Möglichkeit, es durch Drücken von [Pfeil-links]+ und [Pfeil-rechts]+ vertikal sowie mit [Pfeil-oben]+ und [Pfeil-unten] horizontal zu drehen. Eine weitere nützliche Tastenkombination ist [Strg]+[S]: Damit speichern Sie das Diagramm als Bild im PNG-Format ab.

Außerdem lässt sich die Füllung des Graphen beeinflussen: Über das Menü 3D-Graph realisieren Sie die Darstellung der Funktion wahlweise mit Punkten (Punktgitter), Linien (Liniengitter) oder mit einer Füllung (Einfarbig mit Liniengitter).

Fazit

KAlgebra kann tatsächlich einen portablen Grafikrechner ersetzen. Die Vorteile liegen auf der Hand: Die Anwendung bietet eine Syntax mit 71 Befehlen und eine gute verzögerungsfreie Darstellung der Diagramme mit Live-Cursor. Allerdings verfügt KAlgebra über weniger Funktionen als GeoGebra, unter anderem gibt es keinen Befehl für Integrale. Es enttäuscht ein wenig, dass die Software die Ausgabe für Container, Wurzeln und Potenzen nicht grafisch aufbereitet, worunter die Lesbarkeit leidet. (jlu)

Die Autorin

Anzela Minosi bietet unter dem Pseudonym macrolab auf Comeup.com Dienstleistungen rund um IT an, darunter das Erstellen von LibreOffice-Projekten und das Rekompilieren von in C++, Haskell, Python oder Java geschriebener Software. Unter https://github.com/amxyz-cyber erreichen Sie sie für persönliche Beratungsgespräche.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 04/2025 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben