scicalc ist ein numerisches Berechnungsprogramm fuer den PC. Es verbindet die direkte Arbeitsweise eines Taschenrechners mit der Wiederholbarkeit eines kleinen Rechenskripts. Eingaben stehen dauerhaft im Dokument, Ergebnisse werden direkt darunter angezeigt.
Seit Version 2.2 unterstuetzt scicalc neben Skalaren auch komplexe Zahlen sowie Matlab-aehnliche Vektor- und Matrixausdruecke mit typischen Vektor-, Matrix- und Analysefunktionen.
Im Textfeld koennen Rechenanweisungen eingegeben werden. Um die Berechnung zu aktualisieren, beenden Sie die aktuelle Zeile mit Return oder druecken Sie Strg+R.
Mit Strg+T, Strg+N oder dem + neben der Tab-Leiste wird ein neuer Tab
erstellt. Tabs koennen verschoben und ueber das Kreuz oder per Mittelklick
geschlossen werden. Ein Doppelklick rechts neben dem letzten Tab erstellt
ebenfalls einen neuen Tab. Wird ein geaenderter, noch nicht gespeicherter Tab
geschlossen, fragt scicalc nach Speichern, Schliessen ohne Speichern oder
Abbrechen. Vollstaendig leere Tabs werden ohne Rueckfrage geschlossen.
Ungespeicherte Tabs werden beim Beenden in der Session abgelegt und beim
naechsten Start wiederhergestellt.
Variablen, Konstanten und Funktionen werden beim Tippen vorgeschlagen. Die Vorschlagsliste erscheint automatisch ab dem ersten Zeichen eines Namens oder manuell mit Strg+Space. Bei Variablen wird der aktuelle Wert angezeigt; bei Matrizen die Dimension.
scicalc rechnet numerisch mit komplexfaehigen Gleitkommazahlen. Als
Dezimaltrennzeichen werden . und , akzeptiert. In Matrixliteralen und
Funktionsargumenten trennt , jedoch Werte, damit Matlab-Syntax wie
[1, 2; 3, 4] und zeros(2,3) funktioniert.
Zahlen koennen mit Zehnerpotenzen und SI-Praefixen eingegeben werden:
1e3 1000
2.5e-3 0.0025
3k 3000
4M 4000000
6m 0.006
7u 0.000007
Das Gradzeichen wandelt Winkelwerte in Radiant um:
sin(30°)
500m
Mit # kann eine Ausgabeeinheit angehaengt werden:
force=3 #N
3N
resistance=470 #Ohm
470Ω
Einheiten sind reine Ausgabeformatierung und kein Einheitensystem. #Ohm wird
in der Ausgabe als Ω dargestellt.
Komplexe Zahlen verwenden Matlab-aehnlich i oder j als imaginaere Einheit:
3+4i
3+4j
sqrt(-1)
1j
5k+3mj #V
(5k+3mj)V
Kompakte Imaginaersuffixe muessen direkt an der Zahl stehen: 4i ist komplex,
4 i sind zwei getrennte Matrixelemente innerhalb von [...].
Kommentare beginnen mit // oder % und gelten bis zum Ende der Zeile.
length=3.5 // Laenge
% Matlab-artiger Kommentar
Unterstuetzt werden:
+ - * / ^ ()
Die ueblichen Vorrangregeln werden beachtet:
2+3*5^2
77
Negative Exponenten muessen geklammert werden:
2^(-3)
125m
Der Paralleloperator || berechnet Parallelschaltungen:
100||200
66.6667
Variablen werden mit = gesetzt:
a=3
b=2*a+1
b
7
$ enthaelt das Ergebnis der letzten berechneten Zeile.
Vordefinierte Konstanten:
pi Kreiszahl
_g Erdbeschleunigung
_G Gravitationskonstante
_mu0 Permeabilitaet des Vakuums
_eps0 Permittivitaet des Vakuums
_c0 Lichtgeschwindigkeit im Vakuum
_e Elementarladung
_kB Boltzmann-Konstante
_h Plancksches Wirkungsquantum
sqrt(x) Quadratwurzel
exp(x) Exponentialfunktion
log(x), ln(x) natuerlicher Logarithmus
log10(x) dekadischer Logarithmus
ceil(x) Aufrunden
floor(x) Abrunden
round(x) Runden
sin(x), cos(x) Winkelfunktionen in Radiant
tan(x)
asin(x), acos(x) inverse Winkelfunktionen in Radiant
atan(x), atan2(y,x)
abs(x) Betrag
real(x) Realteil
imag(x) Imaginaerteil
conj(x) komplex konjugierter Wert
angle(x) Phasenwinkel in Radiant
rad2deg(x) Radiant nach Grad
inv(A) Matrix invertieren
getVersion() scicalc-Version ausgeben
Matlab-kompatible Vektor- und Matrixfunktionen:
sum(A), prod(A) Summe und Produkt
cumsum(A), cumprod(A) kumulierte Summe und kumuliertes Produkt
min(A), max(A) Minimum und Maximum
mean(A), median(A) Mittelwert und Median
std(A), var(A) Standardabweichung und Varianz
size(A), length(A), numel(A) Dimensionen und Elementanzahl
reshape(A,m,n) Matrix in neuer Form, spaltenweise wie Matlab
zeros(m,n), ones(m,n) Null- und Einsmatrizen
eye(m,n) Einheitsmatrix, auch rechteckig
diag(v), diag(A) Diagonalmatrix bzw. Diagonalvektor
linspace(a,b,n) n linear verteilte Werte
logspace(a,b,n) n logarithmisch verteilte Werte 10^a..10^b
det(A), trace(A), rank(A) Determinante, Spur und Rang
norm(A) Vektor- bzw. Matrixnorm
dot(a,b), cross(a,b) Skalar- und Kreuzprodukt
eig(A) Eigenwerte als Spaltenvektor
diff(A), gradient(A) Differenzen und numerischer Gradient
sort(A), unique(A) sortieren und eindeutige Werte
trapz(A) Trapezregel
unwrap(A) Phasenspruenge um 2*pi entfernen
Viele Funktionen akzeptieren wie Matlab optional eine Dimension 1 oder 2,
z.B. sum(A,2), cumsum(A,1), diff(A,1,2), sort(A,1).
Skriptweite Anzeigeoptionen:
setDigits(n) Anzahl signifikanter Stellen temporaer festlegen (1..15)
setTrailingZeros(b) abschliessende Nullen ein-/ausschalten (0 oder 1)
setAccounting(b) Accounting-Modus temporaer ein-/ausschalten (0 oder 1)
Diese Funktionen koennen je Refresh einmal verwendet werden.
Alle einargumentigen mathematischen Funktionen werden elementweise auf Vektoren
und Matrizen angewendet. atan2(y,x) wird ebenfalls elementweise ausgewertet
und unterstuetzt Skalar-Broadcast.
Matrix- und Vektorwerte verwenden ein Matlab-aehnliches Literalformat:
[1 2 3] Zeilenvektor
[1; 2; 3] Spaltenvektor
[1 2; 3 4] 2x2-Matrix
[1, 2; 3, 4] Kommas als Spaltentrenner
Hinweis: Ausserhalb von Matrixliteralen und Funktionsargumenten kann wie bisher
das Dezimalkomma verwendet werden, z.B. 5,4. Innerhalb von [...] und (...)
folgt scicalc der Matlab-Syntax: Kommas trennen Elemente bzw. Argumente.
Dezimalzahlen dort daher mit Punkt schreiben, z.B. [5.4 6 7] oder
linspace(1.5,5,4).
Ranges erzeugen Zeilenvektoren:
1:5
[1 2 3 4 5]
1:2:9
[1 3 5 7 9]
5:-2:1
[5 3 1]
Unterstuetzte Matrixoperatoren:
A+B elementweise Addition, mit Skalar-Broadcast
A-B elementweise Subtraktion, mit Skalar-Broadcast
A*B Matrixmultiplikation
A/2 Matrix durch Skalar
A/B A * inv(B)
A.*B elementweise Multiplikation
A./B elementweise Division
A.^B elementweise Potenz
A' Transponieren, bei komplexen Werten konjugiert-transponieren
inv(A) Invertieren quadratischer Matrizen
Mehrzeilige Matrizen werden spaltenweise ausgerichtet und mit einem Rahmen angezeigt:
matrixA=[1 2; 3 4]
⎡ 1 2 ⎤
⎣ 3 4 ⎦
scicalc-Suffixe bleiben auch in Matrizen aktiv:
matrixA/2
⎡ 500m 1 ⎤
⎣ 1.5 2 ⎦
Noch nicht implementiert sind Matrixpotenzen mit ^, Indexzugriffe wie
A(1,2) und linke Matrixdivision \.
Komplexe Matrizen werden ebenfalls unterstuetzt:
A=[1 i; 2 3]
⎡ 1 1j ⎤
⎣ 2 3 ⎦
A*inv(A)
⎡ 1 0 ⎤
⎣ 0 1 ⎦
Im Einstellungsdialog kann ein Accounting-Modus aktiviert werden. Beginnt eine
Zeile mit +, -, *, / oder ^, wird das Ergebnis der vorherigen
berechneten Zeile automatisch vorangestellt. Leere Zeilen und Kommentare werden
uebersprungen.
scicalc kann Skripte speichern und laden. Optional kann beim Beenden automatisch gespeichert und beim Start die letzte Datei geladen werden.
Neue Tabs erhalten beim Anlegen einen Erstellzeitpunkt. Dieser Zeitpunkt wird im
Fenstertitel angezeigt und fuer den vorgeschlagenen Standard-Dateinamen beim
Speichern verwendet, z.B. scicalc-2026-06-18_17-30-00.sc.
scicalc kann Skripte auch ohne GUI auswerten:
scicalc test-cases.sc
Der CLI-Modus ignoriert gespeicherte Ergebniszeilen, die mit Tab beginnen, und schreibt Eingaben plus neu berechnete Ergebnisse im gewohnten scicalc-Stil auf stdout. Dadurch koennen Regressionstests direkt ueber die Konsole ausgefuehrt werden.
test-demo.sc anschauliche Demo der wichtigsten Funktionen
test-cases.sc Regressionstest mit Erfolgs- und Fehlerfaellen
Ab Version 2.0 wird CMake verwendet. Unter Debian/Ubuntu:
sudo apt install build-essential cmake qtbase5-dev libeigen3-dev
cmake -S . -B build
cmake --build build
Die ausfuehrbare Datei liegt danach unter:
build/scicalc
Die Buildnummer wird bei jedem Build automatisch erhoeht. getVersion() zeigt
die Version inklusive dreistelliger Buildnummer an, z.B. 2.2.0-###.
Ein Debian-Paket kann mit CPack erzeugt werden:
cpack --config build/CPackConfig.cmake
Das Paket wird im Unterverzeichnis debian/ abgelegt. Es installiert:
/usr/bin/scicalc
/usr/share/applications/scicalc.desktop
/usr/share/icons/hicolor/scalable/apps/scicalc.svg
/usr/share/pixmaps/scicalc.png
scicalc ist ein numerischer Rechner. Nicht vorgesehen sind derzeit:
- symbolische Mathematik
- eigene Funktionen im Skript
- Kontrollstrukturen wie Schleifen oder Verzweigungen
- Matrix-Indexzugriffe und linke Matrixdivision
Autoren:
- Friedrich Feichtinger
- Karl Zeilhofer
scicalc wird unter der GNU GPL V2 veroeffentlicht. Verwenden Sie den Rechner auf eigenes Risiko; Programmier- und Rechenfehler koennen nicht ausgeschlossen werden.
