Extcalc - wissenschaftlicher Taschenrechner
Version 0.9.3
Inhalt
1. Einleitung
2. Installation
3. Bedienung
3.1 Taschenrechner
3.1.1 Standardmodus
3.1.2 Base Modus
3.2 Grafik
3.2.1 Graphen zeichnen
3.2.2 Funktionen verwalten
3.2.3 Graphen auswerten
3.2.4 Screenshots abspeichern
3.3 Tabellen
3.4 Scriptprogrammierung
3.4.1 Allgemeines
3.4.2 Der Script-Editor
3.4.3 Die Script-Sprache
3.5 Matrix-, Vektorrechnung
3.6 Statistik
3.7 Einstellungen
4. Sonstiges
1. Einleitung
Extcalc ist ein wissenschaftlicher, grafischer Taschenrechner. Extcalc kann zum berechen komplizierter mathematischer Ausdrücke,
zum Zeichnen von Funktionsgraphen, und zum Auswerten von Funktionen benutzt werden. Es enthält auch eine C-ähnliche Script-Sprache.
Diese Hilfe wurde für die Version 0.9.3 von Extcalc geschrieben.
Wegen der Portierung von Extcalc auf eine neue Version der Qt-Bibliothek, sind Teile der grafischen Oberfläche in Version 0.9.3
nicht erreichbar. Dies betrifft hauptsächlich die Auswertung von Graphen und die Matrix- und Vektorrechnungsfunktionen.
2. Installation
Dies ist die Beschreibung zur Installation von Extcalc aus dem Quellcode-Paket. Vorkompilierte Pakete müssen mit dem Paketmanager der jeweiligen
Distribution installiert werden.
- Paket auspacken (tar -xzf extcalc-0.9.3.tar.gz)
- ins Verzeichnis wechseln (cd extcalc-0.9.3)
- konfigurieren (cmake .)
- kompilieren (make)
- root-rechte erlangen (su)
- installieren (make install)
3. Bedienung
Da dies noch eine Enticklungsversion von Extcalc ist, kann sich die Bedienoberfläche noch
stark ändern. Diese Informationen beziehen sich auf die Version 0.9.3. Mit dem Reiter unter der
Menüleiste kann man zwischen den einzelnen Komponenten umschalten.Dies sind ein Taschenrechner, ein Grafik-Fenster
zum Zeichnen und analysieren verschiedner Typen von Graphen, ein Tabellen-Fenster, ein Script-Editor und eine Script-Konsole zum
Ausführen von Scripten.
3.1 Taschenrechner
Das Taschenrechner-Fenster
Bedienelemente
Im Bild oben ist das Ein- und Ausgabefenster des Taschenrechners zu sehen. Hier können Rechnungen eingegeben werden,
und auch die Ergebnisse werden dort angezeigt.
Im Bild unten befinden sich zwei Tastenblöcke zur Eingabe von Rechnungen. Links der Zahlenblock mit einigen
Steuertasten, rechts der Funktionsblock mit allen Rechenfunktionen.
In der Mitte rechts befinden sich noch zusätzliche Bedienelemente: Der Vollbild-Knopf, zum maximieren des Ein-
und Ausgabe Fensters, der Status-Umschaltknopf (siehe 3.1.1 und 3.1.2)
und Schnelleinstellungmenü, das entweder, wie im Bild oben, das verwendete Winkelmaß, oder die Zahlenbasis anzeigt.
Eingabe einer Rechnung
Es gibt verschiedene Möglichkeiten, eine Rechnung in Extcalc einzugeben:
1. Eingabe per Tastatur
Dazu muss man nur in den Eingabebereich des Fensters klicken und dort die Rechnung eingeben
Zum Berechnen des Werts einfach die Eingabetaste drücken. Wird die Eingabetaste ohne weitere
Eingaben noch einmal gedrückt, wird die Berechnung wiederholt. Wenn man weiterschreibt, kann
man automatisch in einer neuen Zeile eine neue Rechnung eingeben. Es ist auch möglich, alte
Berechnungen zu verändern und erneut berechnen zu lassen. Dazu muss man nur mit der Maus die
entsprechende Zeile auswählen und abändern. Der Text wird automatisch in die unterste Zeile
kopiert.
Da es nicht möglich ist, mit der Tastatur alle Rechenzeichen einzugeben, ist es manchmal
nötig, die integrierten Tasten zu benützen.
2. Eingabe über die Rechner-Tasten
Mit der integrierten Tastatur können die meisten unterst�tzten Rechenfunktionen eingegeben werden.
Um die Eingabe zu starten, ist es ebenfalls nötig, dass man mit der Maus in das Eingabefenster
klickt. Anschließend kann man mit den jeweiligen Tasten die Rechnung eingeben. Zum Ausführen
der Berechnung drückt man die "="-Taste. Es ist auch möglich, vorher eingegebene Rechnungen zu
verändern und erneut berechnen zu lassen. Dazu muss man ebenfalls mit der Maus in die
entsprechende Zeile klicken und kann anschließend die Rechnung beliebeg verändern.
3. Eingabe über den Funktionskatalog
Durch drücken des Katalog-Knopfes erhält man eine Liste aller in Extcalc
verfügbaren Operationen und Befehle. Die Befehle sind zur Übersicht in Gruppen gegliedert. Beim Auswählen eines
Befehls oder einer Operation wird der entsprechende Text in das Eingabefenster kopiert.
3. Konstanten und Umrechnung
Durch Drücken des Konstanten-Knopfes erhält man ein Menü, in dem aus einer Liste von verschiedenen mathematischen
und physikalischen Konstanten Einträge ausgewählt werden können. Außerdem können eigene Konstanten zur Liste
hinzugefügt werden können.
Besondere Tasten:
DEL
Diese Taste entspricht der Rücktaste auf der Tastatur.
AC
Diese Taste löscht alle bisherigen Eingaben und Ergebnisse.
Shift
Durch das drücken der Shift-Taste, kann man die Alternative Belegung der Tasten benützen.
Sobald man die Shift-Taste drückt, werden auf den anderen Tasten die entsprechenden
Alternativ-Funktionen angezeigt.
Alpha
Diese Taste schaltet zur Tastaturbelegung für die Benutzung von Variablen um.
hyp
Mit dieser Taste kann man den Sinus, Kosinus, Tangens hyperbolicus eingeben.
ANS
Diese Taste dient zum Abfragen des Antwortspeichers. Durch drücken der Taste kann man mit
dem letzten Ergebnis weiterrechnen.
Richtige Eingabe einer Rechenfunktion
Vorrang bestimmter Funktionen:
Eine Rechnung wird grundsätzlich unter Berücksichtigung folgender Regeln von links nach rechts verarbeitet.
Prioritätsliste:
1. Klammern
2. Sonderoperationen: Integral, Differential
3. Binäre Operatoren 1: Wurzel, hoch, ...
3. Unäre Operatoren: sin, cos, log, ...
4. Bitoperationen: &, |, ...
5. Binäre Operatoren 2: *, /
6. Binäre Operatoren 3: +, -
7. Vergleichsoperatoren: ==, !=, ...
8. Zuweisungen: ->, =
9. Logikoperatoren: &&, ||, ...
Die Eingabe einer Wurzel ist nur über die Wurzel-Taste des Taschenrechners möglich. Es
gibt dazu eine Quadratwurzeltaste, eine Kubikwurzeltaste und eine Taste für beliebige
Wurzeln.
Quadratwurzel:
Quadratwurzeltaste
Berechnen eines Werts
Rechnung unter der Wurzel
Zum Berechnen der Quadratwurzel muss man zuerst die Wurzeltaste drücken und anschließend
den Wert eingeben. Falls ein ganzer Rechenausdruck unter der Wurzel stehen soll,
muss diser in Klammern gesetzt werden. Ohne Klammer wird die Wurzel von der Zahl berechnet, die
unmittelbar hinter dem Wurzelzeichen steht.
Die Kubikwurzel kann man durch Drücken der Tasten +
berechnen.
Beliebige Wurzeln:
Taste für beliebige Wurzeln
Berechnung eines Werts (sechste Wurzel aus Neun)
Zum Berechnen einer beliebigen Wurzel, wird zuerst der Grad eingegeben (z. B. 6) dann die Taste
eingebeben und schließlich der zu berechnende Wert.
Zufallszahlengenerator:
Zum Erzeugen von Zufallszahlen steht die Rand-Funktion zur Verfügung.
Zufallszahlentaste
Ausgabe einer Zufallszahl (Zwischen 0 und 10)
Die Zufallsfunktion erzeugt Zehnstellige Zufallszahlen. Nach dem rnd-Befehl MUSS ein Wert
eingegeben werden. Die Zufallszahl hat dann einen Wert zwichen 0 und dem eingegebenen Wert.
Es sind auch negative Zahlen möglich.
Differentialrechnung:
Der Taschenrechner kann Näherungswerte einer Differentialfunktion berechnen. Die Genauigkeit
beträgt dabei etwa 8 Stellen abhängig von der jeweiligen Gleichung.
Taste für Differential-Funktion
Richtige Eingabe einer Differentialrechnung
Die Funktion wird folgendermaßen benützt: d/dx(Grundfunktion,Stelle)
Die Grundfunktion muss als Parameter X enthalten (X-Taste verwenden). Beispiel: 2X^3-3X+3
Nach dem Komma, wird der X-Wert angegeben, für den die Berechnung ausgeführt werden soll. Dies
ist immer eine konkrete Zahl. Als Ergebnis erhält man die Steigung an der angegebenen Stelle.
Integralrechnung:
Es ist auch möglich, eine näherungsweise Integralrechnung in Form einer Flächenberechnung
durchzuführen. Es können nur integrierbare Funktionen angegeben werden, ansonsten bricht der Befehl
mit einer Fehlermeldung ab.
Die Integral-Taste
Eingabe einer Integralrechnung
Benutzung der Funktion: Integralzeichen(Grundfunktion,Startwert,Endwert)
Die Grundfunktion wird genauso wie bei der Differentialrechnung eingegeben. z.B.: sin(X)*3
Es wird dann die Fläche unter dem Grafen der Grundfunktion zwischen den Stellen Startwert
und Endwert berechnet. Die Angabe beider Werte ist nötig. Es wird nicht der Betrag der Fläche
berechnet. Bei Flächen unter der X-Achse erhält man ein negatives Ergebnis.
Bei Flächen, die über und unter der X-Achse liegen, wird die Differenz ausgegben.
Verwenden von Variablen:
Zum Speichern von Werten stehen 26 Speicherplätze zur Verfügung, die mit den Großbuchstaben
des Alphabets angesprochen werden. Auf der Integrierten Tastatur muss zum Setzen einer Variablen
zuerst der Wert eingegeben werden, dann die Taste gedrückt werden und
durch Drücken von +Buchstabentaste der Wert zugewiesen werden.
Wert in Variable speichern
Gespeicherten Wert benutzen
Eine Variable kann wie eine normale Zahl benutzt werden. Wenn in einer Variablen noch kein Wert
gespeichert wurde, hat diese den Wert 0. Die Variablen werden beim
Beenden des Programms nicht abgespeichert.
3.1.1 Standardmodus
Normalerweise befindet sich das Programm in diesem Modus. Alle Funktionen können wie oben beschrieben benutzt werden
und die Ergebnisse werden immer als Gleitpunkt-Dezimalzahl ausgegeben und eingegeben. In der Schnelleinstellungsbox
unter dem Ausgabefenster kann man das Format für Winkelfunktionen umstellen.
Es können alle Variablen von A bis Z verwendet werden, aber nicht alle Logik-Funktionen sind in diesem Modus
möglich. Nicht-dezimale Zahlen können nicht benutzt werden. Für alle Logik-operationen und für spezielle
Zahlensysteme sollte der Base Modus verwendet werden.
Komplexe Zahlen
Komplexe Zahlen sind im Rechner standardmäßig deaktiviert.
Sie können entweder im Rechner-Einstellungsdialog unter Einstellungen-Menü oder direkt im Rechner-Menü aktiviert und deaktiviert werden.
Eine komplexe Zahl wird durch anhägen des Buchstabens i geschrieben.
Folgende Operationen unterstützen komplexe Zahlen:
+ - * / ^
root sqrt curt
sin cos tan
sinh cosh tanh
lg ln
abs arg conj real imag
3.1.2 Base Modus
Drückt man den Rechenmodus-Knopf neben dem Vollbildknopf, dann schaltet der Rechner in den Base Modus. Die
Zusatzfunktionen, die in diesem Modus verfügbar sind, können nur im Rechnerfenster, nicht im Grafikmodus
genutzt werden. Beim Umschalten werden werden auf den Tasten sofort die zusätzlichen Logikfunktionen angezeigt.
Mit der Shift-Taste kann man zusätzliche Funktionen aufrufen. In der Schnelleinstellungsbox kann man einstellen,
welches Zahlensystem man benutzen möchte.
Alle Berechnungen in diesem Modus werden mit Ganzzahlen durchgeführt, daduch kann man die meisten wissenschaftlichen
Funktionen nicht mehr sinnvoll nutzen.
Da die Buchstaben A bis F im Base Modus für hexadezimale Zahlen belegt sind, können als Variablen nur noch
die Buchstaben G bis Z verwendet werden.
Aber alle Logik-Operationen und Umrechnungen zwischen den verschiedenen Zahlensystemen können nur in dieser Einstellung
benutzt werden. Für die Berechnungen wird eine 64Bit Ganzzahl mit Vorzeichen verwendet.
Zur Umrechnung zwischen verschiedenen Zahlensystemen setzt man vor die Zahl ein Kürzel für das entspechende
Zahlensystem.
Eine Hexadezimalzahl wird so eingegeben: hex13F6
Die anderen Kürzel sind: dec, oct, bin
Für die Buchstaben in Hex-Zahlen dürfen nur Großbuchstaben verwendet werden.
Wird eine Zahl in dem Zahlensystem eingegeben, das gerade voreingestellt ist, dann muss kein Kürzel vor die Zahl
geschrieben werden.
Die zusätzlichen Funktionen können in zwei Gruppen eingeteilt werden:
Logische Operationen:
&&, ||, not
Diese Operationen liefern als Ergebnis nur true oder false zurück.
Die Zahl 0 repräsentiert false, alle Zahlen ungleich 0 sind true.
Binäre Operationen:
&, |, <<, >>, ~, xor
Diese Funktionen verändern jedes einzelne Bit innerhalb der Zahl
3.2 Grafik
Im Grafik-Modus des Rechners kann man verschiedene Funktionsgrafen zeichnen und auswerten
lassen. Extcalc unterstützt verschiedene Typen von Funktionen und verschiedene Koordinatensysteme.
Es folgt eine Liste der verfügbaren Graphen- und Koordinatensystemtypen:
Graphentypen
Standardgraph y(x)=X
Dies ist die Voreinstellung für alle Graphen. Es ist ein normaler 2D-Graph. Die zugehörige Funktion verwendet
die Variable X (es kann auch ein kleines x geschrieben werden). Für diese Graphen sollte ein kartesiches
2D-Koordinatensystem verwendet werden.
Polarkoordinatengraph r(x)=X
Das ist die Einstellung für Graphen im polaren Koordinatensystem. Es wird der Radius r in Abhängigkeit vom
Winkel X berechnet. Für diese Art von Graphen sollte man ein polares Koordinatensystem verwenden.
Parameterfunktionsgraph x(T)=T y(T)=T
Ein solcher Graph benötigt zwei Funktionen mit dem Parameter T. Es wird die X-Koordinate und die Y-Koordinate
jeweils mit einer eigenen Funktion in abhängigkeit vom Parameter T berechnet. Der Parameter T wird nicht im
Koordinatensystem angetragen. Der Wertebereich von T kann in den Grafikeinstellungen verändert werden.
Ungleichungen y(X) < X, y(X) > X, y(X) <=X, y(X) >=X
Bei dieser Art von Graphen, wird die Fläche farbig gezeichnet, in der die Ungleichungsbedingung erfüllt wird.
3D-Graph y(x,z)=XZ
Für 3D-Graphen im kartesischen Koordinatensystem wird diese Einstellung verwendet. Die entsprechende Funktion
berechnet die Höhe y in Abhängigkeit von X und Z. Um 3D-Graphen korrekt anzeigen zu können, sollte ein
3D-Koordinatensystem eingestellt werden.
Ortskurven und 3D-OrtskurvenY(Z)=Z+Zi
Diese beiden Typen von Graphen dienen zur Anzeige von komplexen Funktionen. Der Funktionsparameter ist ein reeller Wert Z.
Bei einer normalen Ortskurve wird der Bereich von Z in den Graphik-Einstellungen angegeben. Der Real- und der Imaginär-Anteil
werden an der X- bzw. Y-Achse des 2D-Koordinatensystems aufgetragen. Bei der 3D-Ortskurve ist der Z-Bereich entsprechend der
Z-Achse des 3D-Koordinatensystems. Der Parameter Z wird auf dieser Achse angetragen. Real- und Imaginäranteil des Ergebnisses
werden an der X- und Y-Achse angetragen.
Dynamische Graphen
Alle oben beschriebenen Typen können auch als dynamische Graphen verwendet werden. Diese Option kann in der
Funktionstabelle für jede Funktion einzeln ein- oder ausgeschaltet werden. Wird dynamische Grafik aktiviert,
dann kann man in der Funktion einen zusätzlichen Parameter A verwenden (Beispiel: y=AX). Dieser wird dann
Zeitabhängig verändert. Der Start- und Endwert für den Parameter A, sowie die Schrittzahl und die Verzögerungszeit
für dynamische Graphen können im Grafik-Einstellungsdialog beliebig angepasst werden. Diese Art der Darstellung von
Graphen ist allerdings sehr rechenintensiv. Für dynamische 3D-Graphik ist eine 3D-Graphikkarte ist nötig.
Logikfunktionen
Wenn diese Option aktiviert ist, ist es möglich, in den Funktionen logische Ausdrücke wie z. B. X>0 oder Script-Befehle
wie z. B. if else zu verwenden. Diese Option sollte nur ausgewählt werden, wenn auch Script-Befehle oder logische Ausdrücke verwendet
werden, weil die Berechnung wesentlich mehr Zeit erfordert.
Koordinatensysteme
Standard-Koordinatensystem
Das Standard-Koordinatensystem ist ein zweidimensionales kartesisches Koordinatensystem mit y- und x-Achse.
Es zur Anzeige von normalen Graphen des Typs y(x)=X und für Parametergraphen vorgesehen. Die Wertebereiche
der Axen können sowohl negativ als auch positiv eingestellt werden. Es können auch alle anderen Typen von
Graphen in dieses Koordinatensystem eingezeichnet werden. Wenn man die rechte Maustaste drückt, kann man
das Koordinatensystem mit der Maus verschieben. Mit dem Mausrad kann man hinein- und herauszoomen.
Polarkoordinatensystem
Dieses Koordinatensystem ist zum Anzeigen von polaren Graphen geeignet. Im Polarkoordinatensystem werden Winkel
und Radius als Raster angezeigt. Der maximal angezeigte Winkel bzw. Radius wird immer ab dem Ursprung ins
Postitive gerechnet. Negative Werte sind nicht möglich. Es ist ebenfalls ein zweidimensionales Koordinatensystem.
Mit dem Mausrad kann man das Koordinatensystem vergrößern und verkleinern.
3D-Koordinatensystem
Das kartesische 3D-Koordinatensystem ist zur Darstellung von 3D-Graphen geeignet. Es können aber auch alle anderen
Typen angezeigt werden. Die x- y- und z-Achsen können sowohl negative als auch positive Werte annehmen. Das
Koordinatensystem kann durch drüchen der rechten Maustaste mit der Maus gedreht werden. Mit dem Mausrad kann man
das Bild zoomen.
3.2.1 Graphen zeichnen
Das Grafikfenster ist in drei Teile aufgeteilt: Funktionstabelle, Ausgabefenster und Tastatur.
Funktionstabelle
In die erste Spalte der Tabelle werden alle Funktionen eingetragen, die benötigt werden. Es
können bis zu 20 verschiedene Funktionen eingegeben werden.
Zur besseren Übersicht, kann man den verschiedenen Funktionen Farben zuweisen. Diese werden in der
zweiten Spalte ausgewählt. Die Funktion wird dann in der Tabelle in der gewählten Farbe dargestellt,
und auch später in dieser Farbe gezeichnet.
Da man nicht immer von allen Funktionen, die in der Tabelle eingetragen sind, auch einen Grafen
anzeigen möchte, lassen sich die Funktionen mit den Boxen in der dritten Spalte einzeln ein- oder
ausschalten.
In der vierten Spalte kann der Typ der Funktion eingestellt werden. Es können normale Funktionen
der Form f(x)=X, Radiusfunktionen r(x)=X für das polare Koordinatensystem, Dreidimensionale Funktionen
y(xz)=XZ, Parameterfunktionen x=T; y=T, Ungleichungen eingegeben werden. In der letzten Spalte kann
noch ausgewählt werden, ob die Funktionen von dem Zeitparameter A abhängen sollen.
Es können auch Graphen mit verschiedenen Typen in ein Koordinatensystem eingezeichnet werden. Die
Art des Koordinatensystems muss aber zusätzlich im Grafik-Menü oder in den Grafik-Einstellungen ausgewählt
werden.
Beispiele
Typ | Funktion | Beschreibung |
Normal | sinX | Sinusfunktion Koordinatensystem: Standard Größe: Standard trigonometrisch |
(X+5)^2-4 | Parabel Koordinatensystem: Standard, Standardgröße |
if(A<=10) (1-A/5)*x^2; else if(A<=20) -(x+5*(A-10)/10)^2; else -(x+5)^2-4*(A-20)/10; | Animierte Parabel Koordinatensystem: Standard, Standardgröße dynamsisch an mit A von 0 bis 30 Logikfunctionen an |
Polar | X+2 | Archimedische Spirale Koordinatensystem: Polar, Standardgröße |
5*sin(4X) | Sinusfunktion Koordinatensystem: Polar, Standardgröße |
2/(1+0.7cosX) | Ellipse Koordinatensystem: Standard |
Parameter | T | Parabel Koordinatensystem: Standard, Standardgröße T von -10 bis 10 |
T^2 |
sinT*(exp(cosT)-2*cos(4T)-(sin(T/12))^5) | Butterfly Kurve Koordinatensystem: Polar, max. Radius=5 T von 0 bis 20 |
cosT*(exp(cosT)-2*cos(4T)-(sin(T/12))^5) |
F=.01*T^3+1;U=1-A/15;((1+U)*T+(1-U)*F)/2 | Inverse Funktion Koordinatensystem: Standard, Standardgröße, T von -10 bis 10 dynamisch an mit A von 0 bis 30 Logikfunktionen an |
((1-U)*T+(1+U)*F)/2 |
(1-A/15)*T | Spiegelung Koordinatensystem: Standard, Standardgröße, T von -10 bis 10 dynamisch an mit A von 0 bis 30 Logikfunktionen an |
T^3-5*T^2+5*T-2 |
F=.05*T^3;U=atan(F/T);R=sqrt(T^2+F^2);cos(pi/30*A+U)*R | Punktsymmestrische Funktion Koordinatensystem: Standard, Standardgröße, T von 0 bis 10 dynamisch an mit A von 0 bis 30 Logikfunktionen an |
sin(pi/30*A+U)*R |
3D | sin(X^2)*cos(Z^2) | Koordinatensystem: 3D, X, Y und Z von -3 bis 3 |
L=0.01;U=2;K=1e-3;if(X<U)0;else{if(Z>0 && Z<X-U)K*Z*(X-U-Z/2)*(1+L*Z);else if (Z>0) K/2*(X-U)^2*(1+L*Z); else 0;} | MOSFET-Kollektorstrom Koordinatensystem: 3D, X und Z von 0 bis 10,Y von -0.01 bis 0.04 Logikfunktionen an |
abs(arg(((X+Zi)^2-1)*((X+Zi)^2-2-i)^2/((X+Zi)^2+2+2i))) | Komplexer Graph in 3D (X=Realteil,Z=Imaginärteil) Koordinatensystem: 3D, X und Z von -2 bis 2,Y von 0 bis 5 Logikfunktionen an, Komplexe Rechnung im Rechner eingeschaltet |
Komplexer Graph | exp(Z*i) | Koordinatensystem: 3D, Standardgröße |
Ortskurve | 10/(1+Z*i) | Koordinatensystem: Standard, Standardgröße |
Import und Export von Graphen
Es ist möglich, die Funktionen der Graphen zu Exportieren oder Importieren. Dazu werden die Funktionen in einer Datei abgespeichert.
Die vom Export erzeugten Dateien können ausgetauscht oder archiviert werden. Mit der Import-Funktion können die Funktionen wieder
in Extcalc geladen werden.
Die entsprechenden Dialoge können über das Menü Grafik -> Graphen importieren bzw. Grafik -> Graphen exportieren aufgerufen werden.
3.2.2 Funktionen verwalten
In der Funktionstabelle von Extcalc können maximal 20 Funktionen verwaltet werden. Wenn mehr Funktionen benötigt werden, oder
wenn die Funktionen in mehreren Gruppen sortiert werden sollen, dann kann die Funktionsverwaltung verwendet werden.
Extcalc erstellt bei der Installation automatisch eine Gruppe, die einige Beispielfunktionen enthält. Wenn eine
neue Gruppe angelegt werden soll, so kann im Menü Grafik über den Punkt Neue Gruppe der entsprechende Dialog geöffnet werden.
Mit dem Menüpunkt Grafik -> Aktuelle Gruppe kann die aktuelle Gruppe angezeigt oder eine andere Gruppe ausgewählt werden.
Wird dort eine andere Gruppe gewählt, dann lädt Extcalc automatsich die deuen Funktionen in die Funktionstabelle und speichert die alte Gruppe ab. Damit die Einstellungen nach dem Laden der neuen Gruppe nicht an die entsprechenden Funktionen angepasst werden müssen, werden alle relevanten Einstellungen ebenfalls entsprechend der neuen Gruppe aktualisiert.
Im Dialog Grafik -> Gruppen verwalten können die Funktionsgruppen umbenannt oder gelöscht werden. Mit Grafik -> Gruppe speichern unter
kann die aktuelle Gruppe mit einem neuen Namen gespeichert werden.
Jede Gruppe wird in einer eigenen Datei im Extcalc-Konfigurationsverzeichnis abgelegt. Diese Dateien können auch exportiert
und importiert werden, damit die mathematischen Funktionen archiviert oder mit Anderen ausgetauscht werden können.
Auf der Extcalc-Homepage werden einige Beispiel-Dateien zum Download angeboten.
3.2.3 Graphen auswerten
Die beschriebenen Funktionen sind in v0.9.3 nicht enthalten!
Durch drücken des "Analysieren"-Knopfes kann man den Rechner in den Analysemodus versetzen.
Hier können verschiedene Berechnungen an den Funktionen durchgeführt werden. Alle möglichen Operationen
kann man in der Auswahlbox unter der Funktionstabelle einstellen. Wird eine Operation ausgewählt, dann
kann man im Fenster sofort die entsprechenden Eingabefelder für die Parameter sehen.
Alle Analyseoperationen mit Ausnahme der Integralrechnung, der Differentialrechnung und dem Newtonverfahren
analysieren nur den im Ausgabefenster sichtbaren Bereich einer Funktion.
Es können nur die Funktionen analysiert werden, die in der Funktionstabelle auf "Aktiv" gesetzt sind.
Es können immer nur die zum Koordinatensystem passenden Funktionen analysiert werden, also im kartesichen
2D-Koordinatensystem normale Funktionen, Parameterfunktionen und Ungleichungsfunktionen, im polaren
Koordinatensystem polare Funktionen und 3D-Funktionen nur im kartesischen 3D-Koordinatensystem.
Der Funktionstyp, der analysiert werden soll, kann in der Box unter der Funktionstabelle ausgewählt werden.
Für die verschiedenen Funktionstypen stehen jeweils nur bestimmte Analysefunktionen zur Verfügung. Welche
Analysemethoden für welche Funktionen ausgeführt werden können, zeigt die Tabelle unten.
| Standard | Polar | Parameter | Ungleichungen | 3D-Graph | Ortskurve |
Y-Wert berechnen | x | x | x | x | x | x |
Nullstellen berechnen | x | x | x | x | | x |
Newtonverfahren | x | x | | x | | |
X-Werte berechnen | x | x | x | x | x | x |
Schnittpunkte berechnen | x | x | | x | | |
Extremwerte berechnen | x | x | | x | | |
Integral berechnen | x | x | | x | x | |
Differential berechnen | x | x | x | x | x | |
Z-Wert berechnen | | | | | x | |
Folgende Analyseoperationen stehen zur Verfügung:
Y-Wert berechnen:
Bei dieser Operation werden zu einem beliebigen X-Wert, der entweder in die Eingabezeile geschrieben werden kann
oder per Mausklick im Ausgabefenster ausgewählt werden kann, die Y-Werte aller Funktionen berechnet werden.
Bei Parameterfunktionen kann es mehrere Y-Werte zu einem X-Wert geben. Bei 3D-Funktionen ist noch der gewüschte
Z-Wert anzugeben.
Nullstellen berechnen:
Hier kann man eine Funktion aus der Auswahlbox aussuchen, und von dieser durch drücken des "Berechnen"-Knopfes
die Nullstellen berechnen lassen. Die Nullstellen werden dann in der Ausgabetabelle aufgelistet.
Newton-Verfahren:
Dies ist ein besonderes Verfahren zur Berechnung von Nullstellen. Man kann dabei eine Funktion aus der Auswahlbox
wählen und den Startwert und die Anzahl der Schritte eingeben. Die Berechnung mit allen Zwichenergebnissen wird in
der Ausgabetabelle angezeigt. Da linke Feld in der letzten Zeile enthält das Endergebnis.
X-Werte berechnen:
Hier kann man die zugehörigen X-Werte zu einem bestimmten Y-Wert berechnen lassen. Der Y-Wert muss in die Eingabezeile
eigegeben werden. Durch Drücken des "Berechnen"-Knopfes werden alle Ergebnisse in der Ausgabetabelle angezeigt.
Bei 3D-Funktionen ist noch der entsprechende Z-Wert anzugeben
Schnittpunkte berechnen:
Bei dieser Operation können die Schnittpunkte von zwei Graphen berechnet werden. Die zugehörigen Funktionen müssen
in den Auswahlboxen ausgesucht werden und durch Drücken des "Berechnen"-Knopfes werden die Ergebnisse ausgegeben.
Bitte wählen sie nicht zweimal die gleiche Funktion aus. Bei Ungleichungen wird die Schnittfläche markiert.
Extremwerte berechnen:
Mit dieser Funktion werden alle Maximal- und Minimalwerte der ausgewählten Funktion berechnet.
Integral berechnen:
Um die Fläche unter dem Graphen zwischen zwei Punkten zu berechnen, kann man diese Operation verwenden.
Es muss ein Startwert und ein Endwert eingegeben werden. Bei 3D-Funktionen wird der Raum unter dem Grafen berechnet.
Nach dem Drücken des "Berechnen"-Knopfes wird das Ergebnis in der Tabelle ausgegeben.
Differential berechnen.
Diese Funktion berechnet die Steigung einer Funktion an einer bestimmten Stelle. Wenn man eine Funktion ausgewählt
und den X-Wert für die Berechnung eingegeben hat, erhält man durch drücken der "Berechnen"-Taste das Ergebnis in der
Ausgabetabelle. Bei Parameterfunktionen wird bei diesem Punkt die kartesische Ableitung zu einem bestimmten T-Wert
berechnet. Bei 3D-Funktionen werden die partiellen Ableitungen nach X und Z am angegebenen Punkt berechnet.
Z-Wert berechnen
Hier muss der X-Wert und der Y-Wert ausgewählt werden. Wenn man den Berechnen-Knopf drückt, werden die zugehörigen
Z-Werte angezeigt.
3.2.4 Screenshots abspeichern
Der Inhalt des Grafik-Fensters kann direkt als Bild abgespeichert werden. Dazu muss man in der Auswahl-Box unter dem Grafik-Fenster den Punkt
Screenshots/Zeichnen auswählen. Diese Einstellung bietet auch einige Zeichenfunktionen, mit denen man z. B. Deteils im Grafikfenster hervoreheben
kann.
Screenshot abspeichern:
Im oben dargestellten Fenster können Screenshots gespeichert werden.
Dabei kann die Größe des Screenshots, das Bildformat und der Dateiname zum Speichern eingestellt werden.
Zum Speichern muss man dann nur den Speichern-Knopf drücken. Dann wird das Bild im angegebenen Pfad gespeichert.
Zeichenfunktionen:
Falls man vor dem Abspeichern des Screenshots noch etwas anmerken oder hervorheben möchte, stellt Extcalc dazu verschiedene Zeichenfunktionen bereit.
Die gezeichnete Fläche ist von den Graphen und dem Koordinatensystem unabhängig. Wenn das Koordinatensystem geändert oder verschoben wird, bzw. die
Graphen neu gezeichnent werden, bleibt das gezeichnete an der selben Stelle erhalten.
Alle Zeichenfunktionen bieten einen Vorschau-Modus. Solange man die Maustaste gedrückt hält, wird nur die Vorschau eingezeichnet. Lässt man die
Maustaste los, so wird die Originalgraphik berechnet. Die Strichstärke kann sich dabei etwas verändern.
Es gibt folgende Standard-Zeichenfunktionen: Frei zeichnen, Linie, Rechteck, Kreis
Bei diesen kann die Strichstärke und die Farbe eingestellt werden.
Außerdem kann man noch Text einfügen. Dabei muss nach dem Drücken des Text-Knopfes der anzuzeigende Text eingegeben werden.
Bei gehaltener Maustaste ist wieder die Vorschau sichtbar, und beim Loslassen wird der Text eingefügt. Wenn man die Maustaste noch einmal drückt,
wird der selbe Text noch einmal eingefügt. Will man Textgröße, Farbe oder den Text selbst ändern, muss man den Text-Knopf noch einmal drücken.
Die Textgröße kann in der Box für die Strichstärke geändert werden.
Radierer: Will man einen Teil des gezeichneten wieder entfernen, dann kann man den Radierer verwenden. Dieser macht die radierten Stellen wieder
transparent. In der Vorschau wird das radierte weiß gezeichnet.
Außerdem können noch die letzten Schritte rückgängig gemacht werden, und das gesamte Bild kann gelöscht werden.
3.3 Tabellen
Extcalc bietet auch die Möglichkeit, Wertetabellen zu Funktionen erstellen zu lassen.
Tabellenfenster von Extcalc
Zur Erstellung der Wertetabellen werden die selben Funktionen werwendet, wie bei Graphen.
Es können Wertetabellen von allen Arten von Funktionen erstellt werden. Die verwendeten Funktionen in der
Funktionstabelle sind dieselben wie bei Graphen. In der Wertetabelle werden nur die Werte von den Funktionen berechnet,
die in der Funktionstabelle als aktiv gewählt sind. Es werden außerdem nur die Funktionen des Typs beachtet,
der für die Tabellen gewählt ist. Der Funktionstyp der Tabellen kann direkt im Tabellenmenü aus der Auswahlbox
ausgewählt werden, oder im Menü unter Tabellen oder im Einstellungsdialog. Für die Tabellenerstellung wird immer ein
Startwert und ein Endwert und die Anzahl der zu Berechenden Werte angegeben.
Bei Funktionen mit der Variablen x werden pro Funktion in einer Spalte die Werte angezeigt. Beim Parameterfunktionen
gelten für den Parameter T dieselben Einstellungen wie beim Parameter x. In der Wertetabelle wird eine Spalte für
die x-Werte und eine Spalte für die y-Werte erzeugt. Bei 3D-Funktionen wird bei jeder Funktion für jeden z-Wert
eine eigene Spalte erzeugt.
3.4 Scriptprogrammierung
In Extcalc ist auch ein Script-Interpretor zur Programmierung des Taschenrechners enthalten. Die Programme können direkt mit
Extcalc geschrieben und verwaltet und ausgeführt werden.
3.4.1 Allgemeines
In Extcalc kann man kleine Script-Programme schreiben und ausführen. Die Syntax ist ähnlich wie bei C, wobei auch die normalen
Taschenrechner-Befehle im Programm verwendet werden können. Die Script-Befehle können allerdings nicht im normalen Rechner verwendet werden.
Wird ein Programm ausgeführt, dann läuft es in einem eigenen Konsolenfenster ab. Die anderen Funktionen des Rechners können noch normal benutzt werden.
Zum Schreiben und Verwalten der verschiedenen Programme ist in Extcalc ein kleiner Script-Editor integriert.
Der Script-Interprter hat in dieser Version noch nicht den vollständigen Funktionsumfang.
Das Script-Verzeichnis enthält bereits einige Beispiel-Programme. Um ein solches Programm auszuführen, muss es im Editor ausgewählt werden.
Hat man es ausgewählt, kann man den Ausführen-Knopf drücken, um es das Programm zu laden. Die Ansicht schaltet dann zur Script-Konsole.
Wenn man in der Script-Konsole den Ausführen-Knopf drückt, wird das Programm gestartet. Es kann jederzeit beendet werden, indem man
den Abbrechen-Knopf drückt.
Weitere Beispielprogramme können auf der Projekt-Homepage extcalc-linux.sourceforge.net heruntergeladen werden.
3.4.2 Der Script-Editor
Das Script-Editor Fenster bietet alle grundlegenden Editorfunktionen, um die Script-Programme zu schreiben und zu verwalten.
Die Programme werden auch von dort aus aufgerufen.
Bevor der Script-Editor benutzt werden kann, muss ein Verzeichnis zum Speichern der Programmcodes und der benötigten Daten erstellt werden.
Extcalc fordert Sie beim ersten Start dazu auf, diese Verzeichnisse anzulgegen. Wenn es zu diesem Zeitpunkt abgelehnt wurde, können die Verzeichnisse
jederzeit über Einstellungen->Scripting nachträglich angelegt und geändert werden.
Dabei müssen Sie ein Grundverzeichnis auswählen, in dem zwei Unterverzeichnisse für Code und Daten mit den angegebenen Namen angelegt werden.
Neues Script anlegen:
Um ein neues Script anzulegen, können Sie entweder einfach den Code in das Editorfenster schreiben, und speichern drücken. Sie werden dann aufgefordert,
einen Dateinamen einzugeben und das Programm wird gespeichert.
Oder Sie klicken mit der rechten Maustaste in die Dateienliste und wählen "Neue Code-Datei" aus.
Die neue Datei wird sofort angelegt und im Editorfenster angezeigt.
Dateien laden und speichern:
Um ein gespeichertes Programm zu laden, kann man es einfach in der Dateiliste anklicken. Der Programmcode wird dann im Editorfenster angezeigt.
Wurde vorher ein anderes Programm geändert, so bleiben die Änderungen erhalten. Das vorher geänderte Programm wird mit einem Symbol gekennzeichnet, aber
noch nicht fest abgespeichert.
Um das gerade geöffnete Programm zu speichern, kann man einfach dne Speichern-Knopf rechts unter dem Editorfenster drücken.
Um eine vorher geänderte Datei, die noch nicht gespeichert wurde, abzuspeichern, kann man diese in der Dateiliste mit der rechten Maustaste auswählen
und auf "Speichern" klicken.
Um alle geänderten Dateien abzuspeichern, muss man mit der rechten Maustaste in die Dateiliste klicken und den Punkt "Alle speichern" auswählen.
Vor dem Beenden des Programms werden Sie ebenfalls gefragt, ob Sie alle Dateien Abspeichern wollen.
Falls Sie Sonderzeichen aus der integrierten Tastatur in ihrem Code verwenden sollten, so werden diese beim Abspeichern durch die entsprechenden
Ascii-Befehle ausgetauscht, um problemloses Laden und Speichern und externes Editieren zu ermöglichen.
Umgang mit den Dateien:
Unterverzeichnisse:
Die Programmdateien können in Unterverzeichnissen angeordnet und bearbeitet werden. Die Unterverzeichnisse können in in der Dateiliste angelegt und
gelöscht werden.
Umbenennen:
Die Code-Dateien können selbstverständlich auch umbenannt werden. Datein zu verschieben ist momentan noch nicht möglich, wird aber bald eingebaut
Löschen:
Dateien und Verzeichnisse können jederzeit wieder gelöscht werden. Verzeichniss aber nur, wenn Sie leer sind.
Änderungen außerhalb von Extcalc:
Man kann die Dateien und Verzeichnisse auch außerhalb des Script-Editors ändern, umbenennen oder löschen. Um die Änderungen in Extcalc zu übernehmen,
muss in der Dateiliste die rechte Maustaste gedrückt und "Aktualisieren" gewählt werden. Geänderte Scripte können dann einfach angeklickt werden.
Dies ist natürlich nicht nötig, wenn Extcalc während der Änderungen nicht gestartet war.
Sonderzeichen:
Selbstverständlich können beim Programmieren auch die Sondertasten auf der integrierten Tastatur von Extcalc verwendet werden. Beim Abspeichern werden
diese allerdings durch die jeweiligen ASCII-Befehle ausgetauscht, um Probleme beim Speichern und Laden zu verhindern und um zu ermöglichen, dass der Code
von einem externen Editor nicht beschädigt wird.
Script-Programme importieren und exportieren
Um einen Script-Quellcode zu Importieren oder zu Exportieren, kann man entweder den entsprechenden Knopf im Script-Editor drücken,
oder im Menüpunkt Script die gewünschte Funktion auswählen.
Wenn Sie einen Punkt gewählt haben, wird der Import/Export-Dialog angezeigt, in dem Quelle und Ziel ausgesucht werden können.
Mit der Importieren-Funktion kann ein Script-Programm in das Script-Verzeichnis geladen werden.
Mit der Export-Funktion kann ein Script-Programm aus dme Script-Verzeichnis an eine beliebige Stelle kopiert werden.
Programme ausführen:
Um ein Programm auszuführen, wählt man es aus der Dateiliste aus und klickt auf den "Ausführen"-Knopf.
Das Script-Programm wird dann übersetzt und die Ansicht wechselt in die Script-Konsole.
Auf der Script-Konsole werden dann eventuelle Fehler im Code angezeigt. Falls das Script ohne Fehler geladen werden konnte, kann man es mit dem
Ausfürhen-Knopf starten. Mit diesem Knopf kann immer das Programm ausgeführt werden, dass als letztes geladen wurde.
Es ist nicht möglich, zwei Programme gleicheitig zu starten. Falls bereits ein Programm läuft, wenn man ein Programm startet, wird abgefragt, ob
das laufende Programm beendet, oder das neue nicht gestartet werden soll.
Laufende Programme können jederzeit über den "Abbrechen"-Knopf unter der Script-Konsole beendet werden. Bei sehr hoher Prozessorbelastung ist es
möglich, dass das Abbrechen-Signal nicht rechtzeitig vom Script empfangen wird. Man muss dann den Abbrechen-Knopf noch einmal drücken, um
das Programm korrekt zu Beenden.
3.4.3 Die Script-Sprache
In Version 0.9.3 von Extcalc sind noch nicht alle geplanten Befehle und Funktionen implementiert. Nähere Informationen zu den geplaten
Funktionen finden Sie im Kapitel 4.
Probleme:
In der folgenden Liste sind Probleme aufgeführt, die im Script-Interpreter noch vorhanden sind.
1. Geschwindigkeit
Da die Programme von einem Interpreter abgearbeitet werden, laufen diese auch wesentlich langsamer, als kompilierte Programme.
Der Interpreter wird aber in späteren Versionen noch weiter optimiert.
2. Variablen:
Es können nur die Großbuchstaben von A bis Z als Variablen verwendet werden. Jede Variable kann auch als Array benutzt werden. Will man anstatt der Buchstaben symbolische Namen f�r die Variablen verwenden, so kann man sich entsprechende Makros definieren, z. B. "#define counter C".
3. Geringere Möglichkeiten
In dieser Version ist nur ein Teil der geplanten Funktionalitäten bereits aktiviert. Deshalb ist es nicht möglich, komplexe Probleme mit den
Script-Programmen zu lösen. Die Sprache wird in späteren Versionen noch so weit wie möglich ausgebaut. Sie ist aber trotzdem nur zum Lösen oder
automatisieren kleinerer mathematischer Aufgaben da. Komplexe Programme sollten in einer kompletten Programmiersprache wie C geschrieben werden.
Syntax:
Die Syntax der Extcalc Script-Sprache ist der C-Syntax ähnlich.
Grundregeln:
- Befehle werden mit einem Semikolon ; abgeschlossen
- Hinter Schleifen und bedingten Anweisungen folgt kein Semikolon, sonderen der auszuführende Befehl
- Sollen mehrere Befehle ausgeführt werden, so werden diese zwischen geschweiften Klammern { } geschrieben
- Es ist möglich, mathematische Operationen im Code zu verwenden. Auch diese werden mit einem Semikolon abgeschlossen
- Es können beliebig vielse Leerzeilen, Tabulatoren oder Leerzeichen im Code enthalten sein.
- Diese sind aber nicht zum Interpretieren des Programms nötig, und werden ohnehin vor dem Interpretieren entfernt
- Es ist möglich, ganze Kommentare wie in C++ mit zwei Schrägstrichen // zu beginnen. Der Rest der Zeile wird dann ignoriert
- Der C-Kommenter /* ... */ kann ebenfals verwendet werden. Alles, was sich innerhalb des Kommentars befindet, wird ingoriert.
- Der Vergleichsoperator besteht wie in C aus ZWEI GLEICHHEITSZEICHEN ==, ein Gleichheitszeichen bedeutet Zuweisung
- Will man eine Variable als Array verwenden, hängt man einfach den []-Operator an, das Array wird dann automatisch generiert
- Es gibt keine Unterfunktionen. Die Befehle werden direkt in die Datei geschrieben
- Es ist allerdings möglich, eine andere Code-Datei mit dem Befehl run() aufzurufen
Fehlermeldungen:
Beim Laden eines Scripts wird die Haupt-Datei und alle Unterprogramme, die aufgerufen werden von einem Interpreter in den Speicher geladen, ohne das
Script auszuführen. Das Speicher-Objekt, das dabei entsteht ist das ausführbare Script. Es kann unabhängig vom Quellcode so oft ausgeführt werden, wie
man will.
Falls beim Interpretieren des Script Fehler auftreten, werden diese auf der Script-Konsole angezeigt, und das Script kann nicht ausgeführt werden.
Da für den Interpreter die ursprüngliche Formatierung des Quelltextes nicht mehr existiert, wird die Zeilennummer anhand der im Code enthaltenen
Strichpunkte ermittelt. Deshalb befindet sich der Fehler manchmal in einer Zeile überhalb der Zeile, die in der Fehlermeldung angegeben ist.
Es kann auch vorkommen, dass ein Quellcode fehlerhaft ist, aber vom Interpreter dennoch übersetzt werden kann. Dies ist vor allem bei Fehlern innerhalb
von Rechnungen der Fall.
Es kann auch vorkommen, dass nur die Fehlermeldung "Preprozessor Error" ausgegeben wird, und der Script-Interpreter gar nicht aufgerufen wird.
Dann ist die Datei entweder leer, oder enthält überhaupt keine interpretierbare Information, oder Sie enthält einen Rückschrägstrich außerhalb
eines Strings.
Auch bei einem Fehler in einer #config oder einer #define Anweisung wird die "Preprocessor Error"-Fehlermeldung ausgegeben.
Variablen:
Als Variablen stehen wie oben genannt die Großbuchstaben von A bis Z zur Verfügung.
Diese können mit festen Werten vorinitialisiert werden, oder im Programmablauf errechnet werden.
Die Variablen sind nicht vorinitialisiert, d. h. es ist kein definierter Wert gespeichert, wenn die Variable noch nicht gesetzt wurde.
Sie kann aber dennoch benutzt werden, ohne einen Fehler auszulösen.
Die Variablen können verschiedene Datentypen aufnehmen. Der Datentyp einer Variable kann sich auch während des Programms ändern.
Folgende Typen stehen zur Verfügung:
float: Gleitkomma-Zahl vom Typ long double (Größe Systemabhängig, normalerweise 10 Byte)
int: Ganzzahl vom Typ long long (8 Byte)
bool: Wahrheitswert vom Typ bool (kann true oder false sein)
string: Text vom Type char* (Länge variabel, Speicher wird vom Interpreter korrekt reserviert und freigegeben)
Wird einer Variable ein Komma-Zahl oder das Ergebnis einer Rechnung zugewiesen, so nimmt sie automatisch den Typ float an.
Wird einer Variable eine Ganzzahl zugewiesen, nimmt Sie den Typ int an.
Ergebnisse aus Vergleichsoperationen haben standardmäß�g den Typ bool.
Text, auch Benutzereingaben haben den Type string.
Schlägt eine Operation fehl, liefert sie eine Variable vom Typ none.
Egal welchen Typ eine Variable hat, der float-Teil der Variable enthält immer einen zum Inhalt passenden Wert.
Arrays:
Jede Variable kann auch als Array verwendet werden. Der vorher enthaltene Wert ist dann im Index 0 gespeichert.
Um eine Variable als Array zu verwenden reicht es einem beliebigen Index einen Wert zuzuweisen, z. B. A[5]=4.323;. Dann
wird automatisch ein Array mit 6 Elementen erzeugt. Ein Array kann auch Elemente verschiedenen Typs enthalten. Mehrdimensionale
Arrays sind momentan nicht möglich. Ein Array kann nur eine oder zwei Dimensionen haben.
Über den Index-Operator kann auch auf einzelnen Zeichen eines Strings zugegriffen werden. Dies geschieht entweder, wenn man einen Index
(A[5]) angiebt, und das erste Element in der Variable ist ein String, oder, wenn man zwei Indices angiebt (A[2][1]), und das Element
in der Variable, auf das der erste Index zeigt, ist ein String.
Matrizen und Vektoren:
Um eine Variable als Vektor zu benutzen, muss zuerst ein 1-dimensionales Array mit Werten angelegt werden.
Zum Ausführen einer Vektor-Operation muss dann dem Variablennamen ein leerer Index-Operator angehängt werden.
Zum Beispiel A[] repräsentiert die Variable A als Vektor. Eine Vektor-Operation kann z. B A[]+B[], oder 5+A[] sein.
In der folgenden Tabelle sind die möglichen Vektor-Operationen aufgelistet:
Operation | Beschreibung |
---|
Vektor+Konstante, Konstante+Vektor, Vektor-Konstante, Konstante-Vektor |
Konstante zu jedem Element des Vektors zahlen.
|
Vektor+Vektor, Vektor-Vektor |
Vectorsumme. Jeweils die Elemente der Vektoren mit gleichem Index werden addiert.
|
Skalarprodukt: Vektor�Vektor |
Multiplikation zweier Vektoren mit einem Skalar als Ergebnis.
|
Kreuzprodukt: Vektor*Vektor |
Multiplikation zweier Vektoren mit einem Vektor als Ergebnis. Beide Vektoren müssen 3 Elemente haben.
|
Vektor*Konstante, Konstante*Vektor |
Jedes Element des Vektors wird mit einer Konstante multipliziert.
|
Für Matrix-Operationen wird ein 2-dimensionales Array benötigt.
Man benutzt dieses 2-dimensionale Array als Matrix, indem man z.B. A[][] schreibt.
Um auf ein einzelnes Element der Matrix zuzugreifen schreibt man z.B. A[2][3],wobei der erste Index
[2], die Zeile angiebt (2 heißt 3. Zeile) und der zweite Index [3] die Spalte (3 steht für die 4. Spalte).
Es folgt eine Liste der möglichen Matrix-Operationen:
Operation | Beschreibung |
---|
Matrix+Konstante, Konstante+Matrix, Matrix-Konstante, Konstante-Matrix |
Eine Konstante wird zu jedem Element der Matrix addiert.
|
Matrix+Matrix, Matrix-Matrix |
Matrix-Summe. Elemente mit gleichen Indices werden addiert.
|
matrixproduct: Matrix*Matrix |
Matrixmultiplikation. Das Ergebnis ist ebenfalls eine Matrix.
|
Vektor*Matrix |
Multiplikation eines Vektors mit einer Matrix. Das Ergebnis ist eine Matrix.
|
Matrix*Vektor |
Multiplikation einer Matrix mit einem Vektor. Das Ergebnis ist ein Vektor.
|
Matrix*Konstante, Konstante*Matrix |
Jedes Element der Matrix wird mit einer Konstante multipliziert.
|
Matrix^-1 |
Inverse matrix berechnen
|
det Matrix |
Determinante einer Matrix berechnen
|
Allgemeine Hinweise:
- Matrizen und Vektoren können kopiert werden. Schreibt man z.B. B=A[][], dann wird die komplette Matrix A in B kopiert.
- Will man nur ein einzelnes Element einer Matrix oder eines Vektors kopieren, dann schreibt man z.B. B=A[2][3].
- Schreibt man B=A, und A ist eine Matrix, dann wird NUR das Element 0,0 der Matrix in B kopiert. Dies ist identisch mit B=A[0][0].
- Will man den Vektor oder die Matrix aus dem Antwortspeicher benutzen, so kann man ans[] bzw. ans[][] schreiben.
- Man kann eine Matrix oder einen Vektor nur verkleinern, indem man eine kleinere Matrix oder einen kleineren Vektor hineinkopiert.
- Man kann den gesamten Array-Speicher löschen, indem man die AC-Taste drückt.
Befehle:
Die folgenden Grundbefehle können in den Programmen bereits verwendet werden:
1. If
Syntax:
if( Bedingung )
Befehl für Bedingung wahr;
else
Befehl für Bedingung falsch;
Sollen merhrere Befehle ausgeführt werden, sind diese in geschweiften Klammern zu schreiben (ohne Strichpunkt am Ende)
Beispiel:
if(A==5)
A=7;
else
{
A=A+1;
if(A>10)
A=0;
}
2. While
Syntax:
while( Bedingung )
Befehl, der aufgeführt wird solange die Bedingung wahr ist;
Sollen merhrere Befehle ausgeführt werden, sind diese in geschweiften Klammern zu schreiben
Soll die Schleife immer laufen, kann man z. B. while(1) schreiben, so dass die Bedingung immer erfüllt ist.
Es muss aber eine Bedingung angegeben werden.
Beispiel:
F=0;
while(F==0)
{
F=keystate;
sleep(10000);
}
3. For
Syntax:
for(Initialisierung; Bedingung; Zähl-Befehl)
Befehl, der aufgeführt wird solange die Bedingung wahr ist;
Sollen merhrere Befehle ausgeführt werden, sind diese in geschweiften Klammern zu schreiben
Bei Initialisierung kann man die Zählvariable auf einen Startwert setzen.
Bei Bedingung wird die Bedingung angegeben, die erfüllt sein muss, damit die Schleife läuft.
Bei Zähl-Befehl kann ein beliebiger Befehl angegeben werden, der bei jedem Schleifendurchlauf ausgeführt wird.
Falls man keine Initialisierung oder keine Bedingung benötigt, ist dort einfach ein Semikolon zu schreiben, der Zähl-Befehl kann komplett weggelassen
werden.
Beispiel:
for(A=-4;A<0;A+1->A)
print(A);
for(;;)
print("Endlosschleife");
4. Print
Syntax:
print( Ausgabedaten );
Als Ausgabedaten kann eine Variable, ein Befehl oder eine Konstante (bzw. ein Text) angegeben werden.
Es darf nur ein Element angegeben werden (Dieses darf natürlich aus mehreren Teilen bestehen).
Beispiel:
A=12;
print(A+3); //Ausgabe: 15
print("Hello World!\n"); // Der Text wird mit anschließender Leerzeile ausgegeben
print(3>5); //Es wird false ausgegeben
5. getline
Syntax:
getline;
Der Befehl ist nur Sinnvoll, wenn der Rückgabewert wie im Beispiel gespeichert wird oder sofort ausgewertet wird.
Beispiel:
X=getline;
print(X);
//oder:
print(getline);
6. getkey
Syntax:
getkey;
Der Befehl ist nur Sinnvoll, wenn der Rückgabewert wie im Beispiel gespeichert wird oder sofort ausgewertet wird.
Der Befehl blockiert das Programm, bis eine Taste gedrückt wurde.
Der Rückgabewert ist ein String und muss deshalb evtl. konvertiert werden.
Beispiel:
F=0;
while(F!=97) //Schleife läuft, bis die Taste a gedrückt wird
{
F=getkey;
F=(int)F;
}
7. Keystate
Syntax:
keystate;
Der Befehl ist nur Sinnvoll, wenn der Rückgabewert wie im Beispiel gespeichert wird oder sofort ausgewertet wird.
Der Befehl blockiert das Programm nicht.
Falls gerade keine Taste gedrückt wurde, wird 0 zurückgeliefert
Der Rückgabewert ist ein String und muss deshalb evtl. konvertiert werden.
Beispiel:
F=0;
while(F!=97) //Schleife läuft, bis die Taste a gedrückt wird
{
F= keystate;
F=(int)F;
sleep(10000); //Bremst das Programm, für reibungsloses auslesen der Tastatur (10 ms pro Schleifendurchlauf)
if(F==0)
print("a drücken zum Beenden\n"); //Dieser Text wird ständig ausgegeben
}
8. Sleep
Syntax:
sleep( Zeit im Mikrosekunden );
Das Script wird für eine bestimmte Zeit angehalten.
Falls man ein Programm drosseln will, sollte man diesen Befehl verwenden (keine leere Schleife verwenden, die sehr viel Rechenleistung verbraucht)
Ein Programm kann durch geschicktes einbauen dieses Befehls auch schneller gemacht werden (z.B. Bei einer großen Menge von Ausgaben).
Beispiel siehe keystate
9. Typenkonvertierung
Syntax:
(Zieltyp)Variable;
Der Zieltyp wird immer in Klammer geschrieben und muss einer von (int) (float) (string) (bool) sein.
Es können auch Konstanten konvertiert werden.
Beispiel:
A=12.3545;
A=(int)A; // A ist jetzt 12
print((int)"abc"); //hallo kann nicht als Zahl interpretiert werden, es wird 97 (ASCII-Code von a) ausgegeben
C="234.45";
D=(float)C; //Text kann als Zahl interpretiert werden, D wird auf Zahlenwert gesetzt
print(D+1); //Gibt 235.45 aus
readfile
Syntax:
readfile( Dateiname );
Liest die Datei mit dem Namen Dateiname und gibt den Inhalt als String zur�ck.
Die Dateien, die gelesen werden sollen, m�ssen sich im Script-Daten Verzeichnis befinden. Unterverzeichnisse werden
nicht untest�tzt.
Dateiname muss vom Typ String sein. Ist dies nicht der Fall, oder existiert die Datei nicht, so wird ein leerer String
zur�ckgegeben.
writefile
Syntax:
writefile(Dateiname , Inhalt);
Dieser Befehl schreibt den gegebenen Inhalt in eine Datei mit dem angegebenen Dateinamen.
Die Datei wird erstellt, falls sie nicht existiert. Falls sie existiert, wird der Inhalt �berschrieben.
Der Dateiname muss ein String sein. Wie bei readfile, werden keine Unterverzeichnisse unterst�tzt.
appendfile
Syntax:
appendfile(Dateiname , Inhalt);
Genauso wie writefile, nur dass der Inhalt der Datei angeh�ngt wird, falls diese schon existiert.
Beispiel:
removefile("count.txt"); //Datei l�schen, falls sie existiert
for(C=0; C<100; C++) //Schleife von 0 bis 99
{
apendfile("count.txt",C); //Nummern von 0 bis 99 in Datei schreiben
appendfile("count.txt","\n"); //Jede Zahl in einer neuen Zeile
}
removefile
Syntax:
removefile(Dateiname);
L�scht die Datei mit dem angegebenen Namen aus dem Script-Datenverzeichnis.
glshow
Syntax:
glshow;
Dieser Befehl aktualisiert das GL-Anzeigefenster.
glclear
Syntax:
glclear;
Dieser Befhel l�scht das GL-Anzeigefenster
glbegin
Syntax:
glbegin( typ );
Mit diesem Befehl werden Zeichenoperationen begonnen. Er muss auch beim Erstellen von Display-Lists ben�tzt werden.
Als Parameter wird die Art der Zeichenoperation angegeben.
Die folgenden Typen k�nnen ausgew�hlt werden:
points
lines
linestrip
lineloop
triangles
trianglestrip
trianglefan
quads
quadstrip
polygon
glend
Syntax:
glend;
Dieser Befehl muss zum Beenden einer Zeichenoperation, die mit glbegin() begonnen wurde, aufgerufen werden.
glbeginlist
Syntax:
glbeginlist;
Mit diesem Befehl wird eine neue Display-List erstellt. Alle folgenden GL-Befehle werden in dieser Liste abgespeichert.
glendlist
Syntax:
glendlist;
Mit diesem Befehl wird die Aufnahme der Display-List beendet.
Der R�ckgabewert ist die Listen-ID als Integer.
glcalllist
Syntax:
glcalllist;
Mit diesem Befehl wird eine Display-List aufgerufen und die Zeichenbefehle werden ausgef�hrt.
Die Benutzung von Display-Lists ist wesentlich schneller, als das direkte Zeichnen.
Example:
glbeginlist; //Display-List starten
glbegin(lines) //Linen zeichnen starten
glpoint(-5,-5,-5); //Linien-Koordinaten eingeben
glpoint(5,5,5);
glend; //Zeichnen beenden
glbegin(triangles); //Dreiecke zeichnen starten
glpoint(-5,-5,0); //Koordinaten setzen
glpoint(5,-5,0);
glpoint(0,5,0);
glend; //Zeichnen beenden
L=glendlist; //Liste abschlie�en und Listen-ID abspeichern
glclear;
glmove(0,0,1); //Objekte verschieben
glcalllist(L); //Liste aufrufen
glmove(0,0,-2); //Objekte nochmal verschieben
glcalllist(L); //Liste noch einmal aufrufen
glshow; //Alles anzeigen
glpoint
Syntax:
glpoint(x,y,z);
Mit diesem Befehl werden nach glbegin() die Zeichenkoordinaten angegeben.
Die Parameter sind die Punktkoordinaten. Der Datentyp ist float.
glcolor
Syntax:
glcolor(r,g,b);
Mit diesem Befehl wird die Zeichenfarbe gesetzt.
Die Parameter sind Ganzzahlen und m�ssen zwischen 0 und 255 liegen.
glmove
Syntax:
glmove(x,y,z);
Mit diesem Befehl kann ein GL-Objekt verschoben werden.
Die Parameter sind die Verschiebekoordinaten als float.
Alle GL-Transformationen werden zu einer Transformationsmatrix aufmultipliziert. Dies f�hrt dazu, dass die
letzte Transformation als erstes ausgef�rt wird.
glrotate
Syntax:
glrotate(Winkel,x,y,z);
Dies ist der GL-Drehbefehl. Die Parameter sind der Drehwinkel, und die Werte f�r einen Vektor, der als Drehachse dient.
Alle GL-Transformationen werden zu einer Transformationsmatrix aufmultipliziert. Dies f�hrt dazu, dass die
letzte Transformation als erstes ausgef�rt wird.
glscale
Syntax:
glscale(x,y,z);
Mit diesem Befehl kann ein GL-Objekt vergr��ert und verkleinert werden.
Alle GL-Transformationen werden zu einer Transformationsmatrix aufmultipliziert. Dies f�hrt dazu, dass die
letzte Transformation als erstes ausgef�rt wird.
Beispiel:
#config gl //GL initialisierung
#config axesoff
#config rasteroff
#config labelsoff
glstartlist; //Dislplay-Liste f�r einen W�rfel erzeugen
glbegin(quads);
glpoint(-1,-1,-1);
glpoint(1,-1,-1);
glpoint(1,1,-1);
glpoint(-1,1,-1);
glpoint(-1,-1,1);
glpoint(1,-1,1);
glpoint(1,1,1);
glpoint(-1,1,1);
glpoint(-1,-1,-1);
glpoint(-1,-1,1);
glpoint(-1,1,1);
glpoint(-1,1,-1);
glpoint(1,-1,-1);
glpoint(1,-1,1);
glpoint(1,1,1);
glpoint(1,1,-1);
glpoint(-1,-1,-1);
glpoint(-1,-1,1);
glpoint(1,-1,1);
glpoint(1,-1,-1);
glpoint(-1,1,-1);
glpoint(-1,1,1);
glpoint(1,1,1);
glpoint(1,1,-1);
glend;
L=glendlist; //Liste beenden und ID abspeichern
R=0; //Drehwinkel
while(1)
{
R=R+1;
glclear; //Fenster l�schen
//In dieser Befehlsreihenfolge rotiert der W�rfel um seine eigen Y-Achse, die Kantenl�nge ist 4,
//die Drehachse ist bei 12-0-0
glscale(4,4,4); //vergr��ern
glmove(3,0,0); //verschieben
glrotate(R,0,1,0); //drehen
glcolor(30,30,200);
glcalllist(L);
glloadidentity;
//In diser Reihenfolge dreht sich der W�rfel um den Koordinatenursprung, hat die Kantenl�nge 3 und
//den Drehradius 9
glscale(3,3,3); //vergr��ern
glrotate(R,0,1,0); //drehen
glmove(3,0,0); //verschieben
glcolor(200,30,20);
glcalllist(L);
glshow;
sleep(30000);
}
glloadidentity
Syntax:
glloadidentity;
Mit diesem Befehl werden alle Transformationen zur�ckgesetzt.
glstring
Syntax:
glstring(x,y,Text);
Dieser Befehl zeigt einen Text im GL-Fenster an den 2D-Koordinaten x,y an.
Die Koordinaten werden in Pixeln angegeben, wobei der Koordinatenursprung links oben im Fenster ist.
Text kann ein String oder eine Zahl sein (float oder int).
drawpoint
Syntax:
drawpoint(x,y);
Dieser Befehl zeichnet einen eizelnen Punkt in der aktuell ausgew�hlten Farbe in das 2D-Anzeigefenster des
Script-Interpreters.
Der Koordinatenursprung ist die linke, obere Ecke des Anzeigefensters. Die Koordinaten werden als Ganzzahlen angegeben.
drawline
Syntax:
drawline(xstart,ystart,xend,yend);
Dieser Befehl zeichnet eine Linie vom gegebenen Startpunkt zum gegebenen Endpunkt in der aktuell gew�hlten Farbe.
Alle Koordinaten werden als Integer-Ganzzahlen angegeben.
drawrect
Syntax:
drawrect(xstart,ystart,xend,yend);
Zeichnet ein Rechteck mit den gegebenen Eckpunkten. Alle Koordinaten sind Ganzzahlen (Integer).
drawcircle
Syntax:
drawcircle(xstart,ystart,xend,yend);
Zeichnet eine Ellipse in das durch die Eckpunkte definierte Rechteck. Alle Koordinaten werden als Integer-Ganzzahlen angegeben.
drawstring
Syntax:
drawstring(x,y,text);
Dieser Befehl zeichnet einen Text and die durch die x- und y-Koordinate angegebene Stelle. Der Text kann entweder ein String
oder eine Zahl sein.
drawcolor
Syntax:
drawcolor(r,g,b);
Mit diesem Befehl wird die aktuelle Zeichenfarbe f�r die 2D-Grafik des Script-Interpreters gesetzt. Die Farbe wird als
Rot- Gr�n- und Blau-Anteil angegeben, wobei die Werte Ganzzahlen in einem Bereich von 0 bis 255 sein m�ssen.
drawclear
Syntax:
drawclear;
L�scht das 2D-Anzeigefenster.
10. Unterprogramme
Syntax:
run("Script-Pfad");
Es ist möglich, in einem Script eine andere Programm-Datei aufzurufen. Dazu wird der Script-Pfad relativ zum Script-Code Verzeichnis angegeben,
so wie er auch im Editor-Fenster angezeigt wird. Der Pfad muss in Anführungszeichen stehen. Damit ist rekursive Programmierung möglich. Dies sollte
aber vermieden werden, weil es zu einem Stack-Overflow führen kann. Dieser kann wird schon nach einigen hundert Rekursions-Scritten eintreten, und
der Absturz des Programms lässt sich dann vom Interpreter nicht verhindern.
Beispiel:
run("subprogram"); //Program heißt subprogram und befindet sich direkt im Code-Hauptverzeichnis
run("myprog/subroutine2"); //Programm heißt subroutine2 und befindet sich im Unterverzeichnis myprog
11. Arrays
Syntax:
Variable[index]; //Normales Array
Variable[1. Index][2. Index]; //2-Dimensionales Array
Jede Variable ist auch ein Array, wenn man diese mit dem Index-Operator benutzt.
Ohne Index-Operator greift man automatisch auf das erste Element des Arrays zu.
Wenn man auf ein Zeichen in einem String zugreifen will, kann man entweder nur einen Index (A[2][4]) benutzen, wenn der
String das erste oder einzige Element in der Variable ist, oder wenn man zwei Indices angiebt, und das Element der Variable
das mit dem ersten Index ausgewählt wird, ist ein String.
Beispiel:
A=" ";
for(C=9; C>=0; C=C-1) //liest 10 Zeichen ein
A[C]=getkey;
print(A); //gibt die Zeichen invertiert aus
12. Mögliche Operatoren
Operatorenliste
In Scriptinterpreter integrierte Operatoren (funktionieren mit allen Datentypen)
+ Addititon
- Subtraktion
== Vergleich
!= Ungleich
> Größer
< Kleiner
>= Größer gleich
<= Kleiner gleich
&& Logisches Und
|| Logisches Oder
! Logisches Nicht
= Zuweisung (wie in C)
-> Zuweisung (wie im Taschenrechner)
[] Index-Operator
[][] 2-Dimensionaler Index-Operator
Alle anderen Operatoren funktionieren wie im Taschenrechner
Diese geben dann aber immer eine float-Zahl zurück
Diese Operatoren können auch in einer Rechnung verwendet werden
12.3545->A;
(int)A->A; // A ist jetzt 12
print((int)"abc"); //hallo kann nicht als Zahl interpretiert werden, es wird 97 (ASCII-Code von a) ausgegeben
"234.45"->C;
(float)C->D; //Text kann als Zahl interpretiert werden, D wird auf Zahlenwert gesetzt
print(D+1); //Gibt 235.45 aus
Script Einstellungen
Es ist möglich, die Einstellungen, mit denen ein Script ausgeführt wird, innerhalb des Scripts zu setzen. Dies ist oft nötig,
um zu gewährleisten, dass das Script-Programm unabhängig von den Benutzer-Einstellungen läuft.
Diese Einstellungen gelten nur für das Script, in dem sie stehen. Sie habe keinen Einfluss auf die Benutzer-Einstellungen.
Alle Einstellungen werden für das gesamte Script gesetzt, egal, wo sie im Script gestanden haben.
Die Einstellungen werden im Script mit dem #config-Befehl gesetzt.
Die Syntax is:#config EINSTELLUNG
Hier ist eine Liste der möglichen Einstellungen:
#config complexon //Komplexe Zahlen einschalten
#config complexoff //Komplexe Zahlen ausschalten
#config angledeg //Grad als Winkel-Format benutzen
#config anglerad //Radiant als Winkel-Format benutzen
#config anglegra //Neugrad als Winkel-Format benutzen
#config modebase //In Logik-Modus schalten
#config modescientific //Wissenschaftlichen Modus benutzen (Standard)
#config outputlengthXX //Stellenzahl für Ausgabe von Gleitpunktzahlen festlegen. XX ist eine Zahl zwischen 2 und der max. Stellenzahl
//Die Stellenzahl wird ohne Leerschritt direkt hinter outputlength geschrieben
#config clearmemory //Array-Speicher vor dem Start löschen
#config gl //Aktiviert den GL-Modus f�r 3D-Grafik
//Diese Option muss aktiviert sein, um 3D-Grafikbefehle verwenden zu k�nnen
#config graphics //Aktiviert den 2D-Grafikmodus
//Diese Option muss aktiviert sein, um 2D-Grafikbefehle verwenden zu k�nnen
#config axeson //Aktiviert oder deaktiviert die Koordinatenachsen im 3D-Modus
#config axesoff
#config rasteron //Aktiviert oder deaktiviert das Koordinatenraster im 3D-Modus
#config rasteroff
#config labelson //Aktiviert oder deaktiviert die Achsenbeschriftung im 3D-Modus
#config labelsoff
Beispielprogramme:
Programm 1:
Ein Primzahlengenerator
//loop starts at 3 (so it can add 2 instead of 1 per step)
print("2 ");
for(3->A;;A+2->A)
{
0->C;
sqrtA->D;
//prime number check with modulo
for(2->B; C==0 && B<=D; B+1->B)
{
if((A%B)==0)
1->C;
}
if(C==0)
{
print(A);
print("\t");
}
}
Programm 2:
Ein Ping-Pong-Spiel
//initialization
//variables for ball movement
4->A;
1->B;
1->C;
1->D;
//variable for player movement
10->E;
//stop variable
0->S;
//counter for ball movement
//the ball moves only ervery fifth run
0->I;
//variables to store old drawing coordinates
//needed that it redraws only if needed
//and that the screen can be cleared without
//flickering
4->G;
4->H;
9->J;
0->X;
clear;
for(;S==0;I+1->I)
{
//move ball every fith time
E->J;
if(I==5)
{
0->I;
A->G;
B->H;
A+C->A;
B+D->B;
if(A>50)
-1->C;
else if(A<1)
1->C;
if(B<1)
1->D;
else if(B>12)
{
if(A>E-3 && A<E+3)
{
-1->D;
X+1->X;
}
else 1->S;
}
//long break for ball movement
sleep(30000);
}
//read keystate and move player
keystate->K;
1+K-1->K;
if(K==100 && E<48)
E+1->E;
if(K==97 && E>2)
E-1->E;
//short break
//needed that player can move fast
sleep(5000);
//print ball if needed
if(A!=G || B!=H)
{
setcursor(G,H);
print(" ");
setcursor(A,B);
print("*");
}
//print payer if needed
if(E!=J)
{
if(E>J)
{
setcursor(J-2,14);
print(" ");
setcursor(E-2,14);
print("#####");
}
else
{
setcursor(J+2,14);
print(" ");
setcursor(E-2,14);
print("#####");
}
}
//print score
setcursor(51,1);
print(X);
}
//loop finished
//because player didn't get the ball
//print score
sleep(300000);
clear;
print("\n\n\n***********Ende***********\n");
print("********Punkte: **********");
setcursor(16,4);
print(X);
print("\n\n");
3.5 Matrix-, Vektorrechnung
Die beschriebenen Funktionen sind in v0.9.3 nicht enthalten!
Mit dem Matrix/Vektor-Fenster von Extcalc k�nnen verschiedenen Matrix- und Vektorberechnungen durchgef�hrt werden.
Das Fenster enth�lt immer eine Variablen-Liste, in der zu jeder Variable die Gr��e und der Typ verzeichnet ist.
Au�erdem wird zur aktuell ausgew�hlten Variable in der Tabelle der Inhalt angezeigt.
Der Speicher, der f�r die Variablen verwendet wird, ist der selbe wie der Speicher des normalen Rechners.
In der Variablen-List kann die Gr��e einer Variable ge�ndert werden. Wenn man den Inhalt einer Varialbe �ndern will,
dann kann man die Variable ausw�hlen und in der angezeigten Tabelle den Inhalt eintragen.
Module
Eine Liste der enthaltenen Rechenmodule
Rechner
Dieses Modul hat die gleichen Funktionen wie der Standard-Rechner. Das Rechner-Fenster wird rechts unten eingeblendet.
Dort k�nnen alle Berechnungen durchgef�hrt werden, die auch im normalen Rechnerfenster m�glich sind.
Lineares Gleichungssystem
Dieses Modul dient zum L�sen von linearen Gleichungssystemen.
Es gibt zwei M�glichkeiten, die Parameter der linearen Gleichungen anzugeben.
- Nur eine Matrix der Gr��e n x (n+1) ausw�hlen:
Beispiel:
Das zu L�sende Gleichungssystem lautet:
4x - 2y = 9
-2x + 5y = -2
Die Matrix-Gr��e w�re dann 2 x 3
Der Inhalt der Matrix w�re:
4 -2 9
-2 5 -2
- Eine Matrix der Gr��e n x n und einen Vektor der Gr��e n ausw�hlen:
Beispiel mit den selben Gleichungen wie oben:
Der Inhalt der 2 x 2 Matrix w�re:
4 -2
-2 5
Der Inhalt des Vektors der Gr��e 2 w�re:
9
-2
Die Anzahl der Unbekannten kann in der "Unbekannte"-Box ge�ndert werden. Die Gr��e von Vektor und Matrix wird beim Dr�cken des
Ok-Knopfes angepasst.
Die Tabelle unten rechts zeigt nach dem Dr�cken des "Berechnen"-Knopfes das Ergebnis an.
Im obigen Beispiel w�re die L�sung x=2.25 und y=0.75.
Die Tabelle w�rde folgende Werte zeigen:
2.25
0.75
Wenn das Gleichungssystem keine L�sung oder unendlich viele L�sungen hat, dann wird der letzte Schritt des Gau�-Algorithmus,
der zur Berechnung verwendet wird, angezeigt.
Diese Werte k�nnen dann f�r weitere Berechnungen verwendet werden.
Erstellen
Mit diesem Modul k�nnen besondere Matrizen und Vektoren erstellt werden.
Zuerst muss immer der Matrix- bzw. Vektor-Typ und die zu verwendende Variable ausgew�hlt werden.
Die folgenden Inhalte k�nnen erzeugt werden:
Typ | Erkl�rung |
---|
Einheitsmatrix |
Gr��en n x n; Hauptdiagonale gleich 1; Alle anderen Elemente gleich 0
|
Nullmatrix |
Gr��e beliebig; Alle Elemente gleich 0
|
Nullvektor |
Vektor beliebiger Gr��e; Alle Elemente gleich 0
|
- X-, Y-, Z-Drehmatrix |
Gr��e 2x2 oder 3x3; Drehmatrix mit dem angegebenen Winkel
|
Skalierungsmatrix |
Gr��e 2 x 2 oder 3 x 3. Erstellt Skalierungsmatrix mit den gegebenen Parametern
|
Analysieren
Dieses Modul zeigt einige Informationen �ber die ausgew�hlte Variable an.
Inverse Matrix
Die Funktion dieses Moduls entspricht der Rechneroperation X[][]^-1.
Die inverse Matrix wird, sofern m�glich, berechnet und in der Tabelle angezeigt.
3.6 Statistik
Im Statistik-Fenster k�nnen N�herungsrechnungen und statistische Auswertungen von Wertetabellen durchgef�hrt werden.
Dazu werden verschiedene Module bereitgestellt. Alle Module bieten die M�glichkeit, das jeweilige Ergebnis grafisch darzustellen,
indem man den Zeichnen-Knopf dr�ckt. Meistens k�nnen zus�tzlich zur stetigen Funktion noch die St�tzpunkte angezeigt werden.
Approximation
Mit diesem Modul k�nnen aus einer Menge von St�tzpunkten mathematische Funktionen angen�hert werden.
Dazu stehen mehrere Funktions-Grundtypen zur Verf�gung, die in einer Box ausgew�hlt werden k�nnen.
Au�erdem muss noch ausgew�hlt werden, welche Koordinatenliste zur Berechnung verwendet werden soll.
Die Funktion wird in der Ergebnis-Zeile angezeigt, wenn man den Berechnen-Knopf dr�ckt. Die Funktion kann von dort in die allgemeine
Funktions-Liste �bernommen werden. �ber den Zeichnen-Knopf kann die Funktion direkt angezeigt werden. Zus�tzlich k�nnen auch die
St�tzpunkte f�r die N�herung eingeblendet werden.
Folgende Funktionen stehen zur Verf�gung:
Funktion | Erkl�rung |
---|
konst |
Konstante. Es wird der arithmetische Mittelwert der Y-Koordinaten berechnet.
|
a*x+b |
Geradenn�herung. Eine gen�herte Gerade nach dem Prinzip der kleinsten Quadrate.
|
a*x^2+b*x+c |
Quadratische N�herung. Eine Parabel als N�herungsfunktion. Ebenfalls nach dem Prinzip der kleinsten Quadrate berechnet.
|
a*e^(bx) |
e-Funktion. Nach dem Prinzip der kleinsten Quadrate errechnete e-Funktion.
|
a*b^x |
Exponentialfunktion. Auch diese Funktion wird nach dem Prinzip der kleinsten Quadrate errechnet.
|
Interpolation
Dieses Modul dient zum Berechnen einer Interpolations-Funktion. Es wird eine Polynom-Funktion berechnet, die durch alle gegebenen
Punkte f�hrt. Da der Grad des Polynoms der Anzahl der Punkte entspricht, kann die Funktion unter Umst�nden sehr lang werden.
Wie bei der Approximation, kann die Ergebnis-Funktion mit dem Zeichnen-Knopf direkt angezeigt werden, oder mit dem Berechen-Knopf
berechnet werden und anschlie�end an eine beliebige Stelle in die Funktionsliste kopiert werden.
Linien-Graph anzeigen
Dieses Modul dient zur Veranschaulichung der eingegebenen Daten. Es zeigt alle eingegebenen Punkte, verbunden mit Linien, an.
Der Graph wird angezeigt, wenn man den Zeichnen-Knopf dr�ckt.
Normalverteilungskurve berechnen
Hier wird aus Liste von Werten (keine Punkte!) die passende, Gau�'sche Normalverteilungskurve berechnet. Die Ergebnis-Funktion kann wie
bei Iterpolation und Approximation weiterverarbeitet werden. Zur weiteren Auswertung k�nnen die Analyse-M�glichkeiten im Grafik-Fenster
benutzt werden, wenn die Funktion in die Funktionsliste �bertragen wurde.
Verteilungs-Graph anzeigen
Mit diesem Modul kann die Verteilung von Werten (keine Punkte!) angezeigt werden. Die Anzahl der St�tzpunkte kann eingestellt werden.
Das Ergebnis wird angezeigt, wenn man den Zeichnen-Knopf dr�ckt.
3.7 Einstellungen
Die Einstellungen können entweder direkt über das Menü vorgenommen werden oder in den
ausführlichen Einstellungs-Fenstern. Um die Einstellungen direkt zu ändern, gibt es im
Menü die Punkte "Rechner" und "Grafik". Dort können einige Einstellungen direkt geändert
werden.
Es besteht auch die Möglichkeit, die Einstellungen im Einstellungs-Fenster zu verändern.
Dazu muss man im Menü den Punkt "Einstellungen" und dann die entsprechende Komponente wählen.
In den Dialogen können alle Parameter, die einstellbar sind, konfiguriert werden.
Rechner-Einstellungen
In diesem Dialog kann dass Ausgabeformat und der Rechner-Modus eingestellt werden. Der Rechner-Modus
(Wissenschaftlich oder Logik) bezieht sich nur auf den Rechner selbst. Das Ausgabeformat und die Einstellung
für die Winkelfunktionen bezieht sich auf das gesamte Programm. Alle Einstellungen die in diesem Dialog enthalten
sind, können auch im Rechner-Menü verändert werden.
Graphik-Einstellungen
Dieser Dialog ist in drei Tabs unterteilt.
Koordinatensystem
Hier können die Größen der Koordinatensysteme eingestellt werden. Es können immer nur die Werte des aktuellen Koordinatensystems
verändert werden. Dieses kann auch hier eingestellt werden. Die Werte für das polare Koordinatensystem, maximaler Radius
und maximaler Winkel dürfen nur positive Werte haben. Es gibt auch noch zwei Knöpfe, um die Koordiatensysteme auf
Standardeinstellungen zurückzusetzen. Die Werte des Standard-Knopfs sind für die Darstellung der meisten Graphen geeignet.
Die Werte des Trigonometrisch-Knopfes sind optimal zur Darstellung von trigonometrischen Funktionen wie z. B. Sinus oder Kosinus.
Außerdem kann in diesem Dialog noch das Aussehen der Koordinatensysteme eingestellt werden. Das Raster, die Beschriftung und die
Achsen können ein- und ausgeschaltet werden und das Verhältnis zwischen der Skalierung der Koordinatenachsen und der Breite und
Höhe des Koordinatensystem-Fensters kann konstant eingestellt werden.
Parameter T,A,Z
Nicht alle Parameter, die zum Zeichnen der verschiedenen Funktionen nötig sind, sind von der Größe des Koordinatensystems abhängig.
Alle anderen können hier eingestellt werden.
Parameter T:
Der Parameter T dient als Parameter für Parameterfunktionen. Hier kann ein Startwert und ein Endwert gewählt werden.
Die Werte sollten nicht so hoch gewählt werden. Wenn man den größten Teil des Berechneten Graphen nicht sieht, wird
der darstellbare Teil eventuell zu ungenau berechnet.
Parameter Z:
Diese Einstellungen für den Parameter Z betreffen nur 2D-Ortskurven. 3D-Ortskurven verwenden die Einstellungen der Z-Achse
des Koordinatensystems. Hier gibt es zwei Möglichkeiten der Skalierung. Standard ist die logarithmische Skalierung. Das heisst,
wenn als Grenzwerte -3 und 3 eingestellt sind, läuft der Parameter zwischen 10^-3 und 10^3 in entsprechenden Schritten.
Dies ist bei den meisten Ortskurven sinnvoll. Ist die logarithmische Skalierung ausgeschaltet, dann läuft der Parameter linear
vom eingestellten Startwert zum eingestellten Endwert.
Parameter A:
Das A ist der Parameter für alle dynamischen Graphen. Zur Darstellung des dynamischen Graphs muss zuerst ein Start- und ein
Endwert gewählt werden. Dann muss eine Schrittzahl angegeben werden. Für ruckelfreie Animationen sollte dieser Wert etwa 30 oder
höher sein. Im Einzelschritt-Modus sollte der Wert niedriger sein. Im automatischen Modus und für Animationen muss noch eine
Verzögerungszeit eingestellt werden. Die Verzögerungszeit ist in Schritten von 10ms einstellbar. Für ruckelfreie Animationen
sollte der Wert etwa auf 3 stehen.
Rechenleistung/Genauigkeit
Hier kann die Rechengenauigkeit beim Zeichnen von Graphen und die Genauigkeit bei Analysefunktionen eingestellt werden.
Dazu stehen drei Standard-Konfigurationen zur Verfügung: Hoch, Standard und Niedrig. Bei langsamen Systemen sollte die Einstellung
"Niedrig" gewählt werden, sonst die Einstellung "Standard". Die Werte für die Anzahl der Rechenschritte bei verschieden Graphen
muss normalerweise nicht geädert werden. Diese Werte müssen nur dann erhöht werden, wenn Bereiche eines Graphs wie z. B.
Asymptoten falsch dargestellt werden. Auch die Einstellung für die Analyse-Genauigkeit sollte nur erhöht werden, wenn Fehler
auftreten, z. B. wenn nicht alle Nullstellen gefunden werden. Die Genauigkeit der Ergebnisse ist immer so hoch, wie möglich
(unabhängig von dieser Einstellung).
Tabellen Einstellungen
Will man eine Wertetabelle zu einr Funktion erstellen, dann muss man hier die Grenzen und die Werteanzahl einstellen.
Außerdem kann noch der Funktionstyp, zu dem die Wertetabellen erstellt werden sollen, ausgewählt werden.
Script-Einstellungen
Im Script-Einstellungsdialog kann der Pfad zum Script-Hauptverzeichnis und die Namen der Unterverzeichnisse für Quellcodes und
für Daten gewählt werden. Diese Einstellungen werden beim ersten Start von Extcalc schon abgefragt.
4. Sonstiges
Version
Extcalc Version 0.9.3
Dies ist eine Betaversion von Extcalc!
Im Programm künnen noch einige Fehler enthalten sein, weil die zahlreichen neuen Features, die in den letzten Versionen
integriert wurden, noch ausreichend getestet werden müssen.
Zusätzliche Informationen zur Betaversion werden auf der Projekt-Homepage
bereitgestellt.
Rechengenauigkeit:
Aufgrund des Aufbaus eines PC-Prozessors und der verwendeten Variablen vom Typ long double (80 Bit)
wird theoretisch eine maximale Stellengenauigkeit von 18 Dezimalstellen erreicht. Da die
letzte Stelle vom Prozessor nicht immer richtig berechnet werden kann, ist die Ausgabe des
Taschenrechners auf maximal 18 Dezimalstellen begrenzt. Die Stellengenauigkeit
beträgt bei einfachen Berechnungen 18 Stellen, bei Winkel- und Logarithmusfunktionen
17 Stellen und bei Integralrechnungen etwa 9 Stellen und bei Differentialrechnungen etwa 8 Stellen.
Integral- und Differentialrechnung:
Da sich diese Funktionen noch in der Entwicklung befinden, können die Ausgaben fehlerhaft
sein. Es ist ausßerdem noch möglich, ungültige Funktionen einzugeben und dennoch einen Wert
zu erhalten.
benötigte Software
Betriebssystem: Linux
Abhängigkeiten: Qt 4.3 oder höher, OpenGL, gcc4
Für die Installation des Quellcode-Pakets wird CMake benötigt
Getestete Distributionen:
Suse Linux 11.2: | OK |
Debian Lenny: | OK |
Ubuntu Linux 9.10: | OK |
Mandriva 2010: | OK |
Fedora Core 12: | OK |
FreeBSD 6.2: | s. Anmerkung |
FreeBSD 6.2:
Das Programm kann unter FreeBSD 6.2 installliert werden, wenn die Entwicklungspakete für Qt 4 und OpenGL installiert sind.
Es ist möglicherweise nötig, die Umgebungsvariable QTDIR auf den Installationspfad von Qt zu setzen.
Hardwareanforderungen:
Prozessor mit ca. 1GHz (32Bit oder 64Bit)
Genug RAM für die grafische Oberfläche
Zum Drehen und Zoomen bei 3D-Grafik evtl. Maus mit Mausrad
Für 3D-Grafik ist eine 3D-Karte empfehlenswert
Fertige Funktionen
Grafische Oberfläche für Rechner
Grafische Oberfläche für Grafikfunktionen
Verarbeitung mathematischer Ausdrücke
Graphen zeichnen
Berechnungen mit Graphen
Integralrechen, differentialrechnen
Verschiedene Zahlensysteme
Logikfunktionen
3D-Grafik
Dynamisch Grafik
Scripting-Editor
Grossteil der Scripting-Funktionen
Script-Debugging
Verschiebbares und zoombares Graphik-Fenster
Abspeichern von Screenshots
Zeichnen im Graphikfenster
Komplexe Zahlen
Matrix-Berechnungen
Script-Funktionen für Graphik und Dateioperationen
Fenster für Matrix- und Vektor-Operationen
Vektoren
Statistikfunktionen
noch zu Tun
Beta-Tests