Skip to content

ElektronikNode/scicalc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scicalc

screenshot

Bedienungsanleitung

1. Einfuehrung

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.

2. Bedienung

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.

3. Zahlen und Einheiten

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 [...].

4. Kommentare

Kommentare beginnen mit // oder % und gelten bis zum Ende der Zeile.

length=3.5  // Laenge
% Matlab-artiger Kommentar

5. Skalare Ausdruecke

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

6. Variablen und Konstanten

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

7. Funktionen

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.

8. Vektoren und Matrizen

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 ⎦

9. Accounting-Modus

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.

10. Speichern und Laden

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.

11. Kommandozeile

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.

12. Demo- und Testdateien

test-demo.sc    anschauliche Demo der wichtigsten Funktionen
test-cases.sc   Regressionstest mit Erfolgs- und Fehlerfaellen

13. Bauen

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-###.

14. Debian-Paket

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

15. Grenzen

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 und Lizenz

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.

About

Ein wissenschaftliches Rechenprogramm mit Variablen und SI-Präfixe

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors