Hier sind Dateien zum Installieren von esl.
Es muss ein einigermaßen aktuelles guile unter Linux
installiert sein.
Ich denke, ein guile 1.6.x sollte reichen, vielleicht funktionieren auch
ältere Versionen. Das readline von
guile sollte funktionieren. Ansonsten kann man die Eingabezeile im
interaktiven Modus nicht bearbeiten (außer mit backspace
)
und die Eingabezeilen-History funktioniert nicht.
Bei mir funktinoniert es aktuell mit guile 1.8.1 und Suse Linux 10.3, außerdem mit guile 1.6.7 und Suse Linux 10.1. Es hat funktioniert unter Kanotix Bug hunter 9A, Bug hunter X (Fix 2) und Suse Linux 9.1, jeweils mit dem zugehörigen guile, Version 1.6.4.
Ob so ein guile installiert ist, kann man mit
guile --version
herausfinden.
Bitte diese readme vor dem Installieren lesen, auch beim Update.
esl_2007_11_07.tar.gz (etwa 203 kbyte).
esl_2005_02_16.tar.gz
(etwa 170 kbyte).
esl_2005_02_06.tar.gz
esl_2005_01_30.tar.gz
esl.tar.gz (erste Version auf dieser Website,
etwa 20. Januar 2005)
Die Vorgehensweise ist in der readme-Datei, siehe oben,
beschrieben.
plots.e
plots1_0.eps
plots2_0.eps
Die Dateien plots1_0.eps und plots2_0.eps müssten im eps viewer
etwa so aussehen (eigentlich noch etwas besser):
Die Prozedur sket ermöglicht das nicht-interaktive
Erstellen von eps-Grafiken. Bei Verwendung einer esl-Version früher als
2005_01_30 müssen
die Dateien plot.e und plot.scm im Verzeichnis /usr/local/esl durch
diese Versionen ersetzt werden (hier in komprimierter Form):
plot.e.gz
plot.scm.gz
Die neuen Funktionen funktionieren erst nach einem Neustart von esl.
Bei Verwendung der aktuelle Version der esl-Software müssen plot.e und plot.scm nicht ersetzt werden.
Beispiele für die Verwendung von sket
Die Datei diff.e enthält esl-code für Versuche mit symbolische Differentiation.
diff
Die Datei diff.e
im Arbeitsverzeichnis speichern, esl mit
gmesl
starten. Das funktioniert nur, wenn slib installiert ist.
Mit guesl
funktioniert diff nicht.
Nach dem Starten mit gmesl
diff laden:
load "diff";
Es können nur symbolische Funktionen differenziert werden. Eine
symbolische Funktion wird definiert mit
f(x) ::: [expression(s)];
(dabei wird die symbolische Funktion als Wert des Symbols f
definiert), oder (als lambda-ähnlicher Ausdruck):
x :-> [expression(s)];
Der Unterschied zur normalen Funktion besteht also syntaktisch in einem
zusätzlichen Doppelpunkt. Aus einer symbolischen Funktion kann man die
entsprechende normale Funktion einfach durch Evaluierung gewinnen (mit dem
Operator &). Wenn f
eine symbolische Funktion ist, dann ist
&f
die entsprechende "normale" Funktion.
Die symbolische Differentiation einer symbolischen Funktion erfolgt mit
diff(f);
oder direkt mit
diff(x :-> [expression(s)]);
Damit der Output ein bisschen mehr wie ein mathematischer Ausdruck aussieht,
kann man vorher
mathouton();
anwenden.
diff (x:->x*sin(x));
sollte
x -> (x*cos(x)) + sin(x)
ergeben (bei mathouton();
).