home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
kzr_0899.zip
/
kzr.BAK
< prev
next >
Wrap
Text File
|
1998-08-10
|
72KB
|
2,760 lines
.* Dieses Dokument wurde mit Phelsuma/2 erstellt
:userdoc.
:title.Der (k)ommando(z)eilen(r)echner kzr.CMD
:h1 res=1000.Allgemeines
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce !!! kzr.CMD !!!
:color fc=default bc=default.
:font facename=default size=0x0.
.ce Für die OS/2-Kommandozeile
.ce unter dem klassischen REXX und Object REXX
.ce Version vom August 1998
:p.:p.
:color fc=Pink.kzr.CMD:color fc=default bc=default. ist ein REXX-(:color fc=Pink.k:color fc=default bc=default.)ommando
(:color fc=Pink.z:color fc=default bc=default.)eilen-(:color fc=Pink.r:color fc=default bc=default.)echner mit
(:color fc=Pink.fast:color fc=default bc=default.) beliebiger Genauigkeit für die folgenden Rechenoperationen:
:lm margin=10.:p.Rechenoperation:lm margin=58.Kommandozeilen-
:lm margin=62.
.br
Operator
:lm margin=10.
.br
Addieren:lm margin=62.(+)
:lm margin=10.
.br
Subtrahieren:lm margin=62.(-)
:lm margin=10.
.br
Multiplizieren:lm margin=62.(*)
:lm margin=10.
.br
Potenzieren mit ganzzahligem Exponenten:lm margin=62.(**)
:lm margin=10.
.br
Dividieren:lm margin=62.(&colon.) oder (/)
:lm margin=10.
:p.
Dividieren und den ganzzahligen Teil
.br
des Ergebnisses ausgeben:lm margin=62.(divganz)
:lm margin=10.
:p.
Dividieren und den Divisionsrest ausgeben:lm margin=62.(divrest)
:lm margin=1.
:p.
In REXX (oder auch grundsätzlich in OS/2) können sowohl das Symbol % als auch der String // nicht als Kommandozeilen-Parameter übernommen
werden. Um die internen mathematischen Operatoren % und // von der Kommandozeile aus verwenden zu können,
war es erforderlich, die "externen Operatoren" divganz für % und divrest für // zu definieren.
:p.
Zusätzlich zu den hier beschriebenen elementaren Rechenoperationen können auch
:link reftype=hd res=4000 group=2.Mathematische Funktionen:elink.
.br
in die "aktuelle Rechenaufgabe" eingebunden werden.
:p.
:color fc=Pink bc=default.kzr.CMD:color fc=default bc=default.
ist dann besonders praktisch, wenn man, ohne eines der großen, meistens grafischen Mathematik-Programme
starten zu müssen, auf der OS/2-Kommandozeile ganz schnell eine Rechenaufgabe mit den oben erklärten
Rechenoperationen und den verfügbaren mathematischen Funktionen ausführen möchte.
Außerdem beanspruchen auf einer HPFS-formatierten Festplatte die "Kernfunktion"
:color fc=Pink bc=default.kzr.CMD:color fc=default bc=default. weniger als 24,5 Kilobyte, die kleine Version
:color fc=Pink bc=default.kzr0.CMD:color fc=default bc=default. weniger als 3,2 Kilobyte und die "Hilfsfunktion"
MinNDA.CMD weniger als 6,1 Kilobyte. Hinzu kommen, je nach Bedarf etwa 3 bis 6 Kilobyte
(eine Ausnahme mit ca. 10 Kilobyte) für jede mathematische Funktion.
:p.
Die kleine Version
:color fc=Pink bc=default.
kzr0.CMD
:color fc=default bc=default.
hat fast die gleiche Rechenfähigkeit wie die der großen Version
:color fc=Pink bc=default.
kzr.CMD
:color fc=default bc=default.;
.br
nur ist die interne Rechengenauigkeit mit 48 Dezimalstellen konstant festgelegt.
:p.
Des weiteren können von der OS/2-Kommandozeile, direkt, das heißt ohne die Datei
:color fc=Pink bc=default.kzr.CMD:color fc=default bc=default. zu verwenden,
.br
6 REXX-Umwandlungsfunktionen aufgerufen werden, die es gestatten, Zahlen -- Integer-Anteil und/oder Mantisse --
von dezimal nach hexadezimal, von dezimal nach binär, von binär nach hexadezimal und jeweils umgekehrt
umzuwandeln.
:p.
kzr.CMD, kzr0.CMD, MinNDA.CMD, die REXX-Dateien für die mathematischen Funktionen sowie die sechs
Umwandlungsfunktionen sind "Cardware". Über eine Nachricht (auch Fax oder e-mail), daß der
REXX-(k)ommando(z)eilen-(r)echner kzr.CMD verwendet wird, würde ich mich freuen.
:p.
Diese Version vom August 1998 soll vorläufig die endgültige Version von
:color fc=Pink bc=default.kzr.CMD:color fc=default bc=default., den 34 mathematischen Unterprogrammen,
den 6 Umwandlungsfunktionen und Prim.CMD bleiben. Weitere Versionen
sind nicht geplant, es sei denn, es würden mir Fehler mitgeteilt werden oder ich würde selber Fehler bemerken.
:p.
Wenn allerdings der Wunsch bestehen sollte, weitere "externe" Funktionen, auch weitere der sogenannten "höheren
Funktionen" verwenden zu können, so erbitte ich eine diesbezügliche Nachricht.
Nachrichten über (von mir noch nicht entdeckte) Fehler sind sehr willkommen.
:p.
Das Gesamtpaket :color fc=Pink bc=default.kzr.CMD:color fc=default bc=default. wird ab Mitte August 1998
auch für Object REXX 1.0 für Linux verfügbar sein.
.br
Object Rexx 1.0 für Linux ist aus dem Internet über die Adresse
:lm margin=6.
:p.
http&colon.&slash.&slash.service2.boulder.ibm.com/dl/rexx/orexxlinux-d
:lm margin=1.
:p.
:color fc=Green bc=Green.▒:color fc=Red bc=Green.kostenlos:color fc=Green bc=Green.▒
:color fc=default bc=default.
erhältlich.
:p.:p.
Diese INF-Datei wurde erstellt mit Hilfe von Phelsuma/2, einer Entwicklungsumgebung für OS/2-Hilfe-Dateien.
Der Autor von Phelsuma/2 ist Michael Petz, Börßumer Str. 15 in D-38312 Heiningen;
Tel.: 05334 7186
:p.:p.
Im August 1998,
.br
Hermann Mahr
.br
Kafkastraße 14
.br
64291 Darmstadt
.br
Telefon: 06151 373802
.br
Telefax: 06151 373805 (von 09.00 Uhr bis 23.00 Uhr)
.br
e-mail: Hermann.Mahr@t-online.de
:p.:p.
.* Ende
:h1 res=2000.Installation
.br
Die Installation des
.br
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce (k)ommando(z)eilen(r)echners kzr.CMD
:color fc=default bc=default.
:font facename=default size=0x0.
:p.
geschieht dadurch, daß man die Dateien
:lm margin=50.
.br
kzr.CMD, kzr0.CMD, MinNDA.CMD, und kzr.INF,
:lm margin=1.
:p.
alle mathematischen Funktionen
:lm margin=50.
.br
sin.CMD, cos.CMD, tan.CMD, cot.CMD, u.s.w.,
:lm margin=1.
:p.
alle Umwandlungsfunktionen
:lm margin=50.
.br
d2b, d2x, u.s.w.
:lm margin=1.
:p.
und die Funktion
:lm margin=50.
.br
prim.CMD
:lm margin=1.
:p.
in ein gemeinsames Verzeichnis kopiert, das über den Pfad erreichbar ist.
:p.
Da OS/2 Warp 3.0 und Warp 4.0 den ANSI-Treiber standardmäßig geladen hat,
kann die Bildschirm-Anzeige der Ergebnisse von von
:color fc=Pink bc=default. kzr.CMD :color fc=default bc=default. farbig erfolgen.
.br
Alle von kzr.CMD aufrufbaren Funktionen und auch :color fc=Pink bc=default. kzr.CMD :color fc=default bc=default.
selbst sind für eine
farbige Ausgabe eingerichtet.
:p.
Die Anwendung des (k)ommando(z)eilen(r)echners
:color fc=Pink bc=default. kzr.CMD :color fc=default bc=default.
erfolgt natürlich von der OS/2-Kommandozeile aus.
:p.
.* Ende
:h1 res=3000.Anwendung
:p.
Die Anwendung von kzr.CMD ist außerordentlich einfach, was in den folgenden Unterabschnitten
:lm margin=24.
:p.
:link reftype=hd res=3001 group=2.Rein numerische Anwendung:elink.
:lm margin=1.
.br
und
:lm margin=24.
.br
:link reftype=hd res=3002 group=2.Anwendung mir Variablen:elink.
.br
:lm margin=1.
:p.
an Beispielen erläutert wird.
:p.Wichtige Anmerkung:
:p.
Die Symbole , $, ?, \, @, #, ' und " dürfen auf der OS/2-Kommandozeile in der Eingabe-Kette für
kzr.CMD und kzr0.CMD nicht verwendet werden, weil sie keine der in der arithmetischen Syntax erlaubten
Operatoren sind.
Geschieht dies doch, so wird eine diesbezügliche Meldung angezeigt.
:p.
Die Symbole %, &., <, > und | sowie die Strings <<, >> und // können auf der OS/2-Kommandozeile nur in
bestimmten Fällen verwendet werden; nur zeigt kzr.CMD bei Verletzung der einschlägigen Regeln leider keine
diesbezügliche Meldungen an.
.* Ende
:h2 res=3001.Rein numerische Anwendung
:p.
Man gebe als Beispiel folgendes auf der OS/2-Kommandozeile ein:
:lm margin=10.
:p.
kzr 36, 2.5+(2.8E-2+2.4E-1*exp(-1.313))**2
:lm margin=1.
:p.
oder -- der besseren Übersichtlichkeit wegen -- mit Leerzeichen:
:lm margin=10.
:p.
kzr 36, 2.5 + ( 2.8E-2 + 2.4E-1 * exp(-1.313) ) ** 2
:lm margin=1.
:p.
Diese Zeichenkette, bestehend aus Strings und einzelnen Symbolen, wird im folgenden Text als Eingabe-Kette (EK),
Teile davon als Eingabe-String, also als EK-String bezeichnet.
:p.
Nach dem EK-String kzr, gefolgt von mindestens 1 Leerzeichen, stellt die positive ganze Zahl 36 die Anzahl der
Dezimalstellen ein, mit denen intern maximal gerechnet werden soll.
.br
In der Eingabe-Kette
:lm margin=10.
:p.
kzr 36, 2.5+(2.8E-2+2.4E-1*exp(-1.313))**2
:lm margin=1.
:p.
oder auch
:lm margin=10.
:p.
kzr 36, 2.5 + ( 2.8E-2 + 2.4E-1 * exp(-1.313) ) ** 2
:lm margin=1.
:p.
ist nach der ganzen Zahl 36 ein Komma zwingend erforderlich. Vor diesem Komma
:color fc=Pink bc=default.können:color fc=default bc=default. ein oder mehrere
Leerzeichen stehen und nach diesem Komma :color fc=Pink bc=default.muß:color fc=default bc=default.
mindestens 1 Leerzeichen folgen.
.br
Wird nach dem EK-String kzr keine ganze Zahl, die größer als 1 sein muß, eingetragen, so ist an dieser Stelle
dennoch ein Komma mit mindesten 1 Leerzeichen davor und dahinter unbedingt erforderlich.
(In diesem Fall wird intern mit maximal 20 Dezimalstellen gerechnet.)
:p.
Der im Anschluß an den EK-String
:lm margin=10.
:p.
kzr 36, oder kzr ,
:lm margin=1.
:p.
einzugegebende EK-String
:lm margin=10.
:p.
2.5+(2.8E-2+2.4E-1*exp(-1.313))**2
:lm margin=1.
:p.
oder auch
:lm margin=10.
:p.
2.5 + ( 2.8E-2 + 2.4E-1 * exp(-1.313) ) ** 2
:lm margin=1.
:p.
muß die gleiche Form haben, demzufolge auch nach den gleichen Syntax-Regeln aufgebaut sein, wie eine
entsprechende Anweisung in einer REXX-Stapel-Datei aufgebaut sein müßte.
Verstöße gegen diese Syntax-Regeln bewirken Meldungen, die in den meisten Fällen den Syntaxfehler auch erläutern.
:p.
In den Dezimalbrüchen 2.5, 2.8E-2, 2.4E-1 und -1.313 muß jeweils der im angloamerikanischen Sprachraum
übliche Dezimalpunkt verwendet werden. Ein Komma dient in Funktions-Argumenten mit mehreren Variablen der
Trennung dieser Variablen, die ja ihrerseits wiederum Dezimalbrüche sein können.
Bei den Dezimalbrüchen ist es gleichgültig, ob der Buchstabe "E" oder "e" verwendet wird.
:p.
Die Eingabe der "aktuelle Rechenaufgabe" auf der OS/2-Kommandozeile hat gegenüber einer Eingabe "innerhalb von
kzr.CMD" den Vorteil, daß die Eingabe-Kette mit einem Tastendruck wieder auf die OS/2-Kommandozeile gebracht
werden kann und so sehr leicht Eingabefehler beseitigt werden können oder daß eine neue "aktuelle Rechenaufgabe"
durch Änderung einzelner Teile dieser Eingabe-Kette formuliert werden kann.
:p.
:lm margin=3.
:p.
:font facename=Helv size=28x32.
Sonderfall:
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=7.
:p.
Wenn man bei der unmittelbar vorangegangenen Berechnung schon ein Ergebnis berechnet hat, kann man, nachdem
man die vorherige OS/2-Kommandozeilen-Eingabe per Tastendruck zurückgeholt oder eine neue "aktuelle
Rechenaufgabe" eingegeben hat, durch Ersetzen einer bestimmten Zahl durch die Variable z das Ergebnis der
unmittelbar vorangegangenen Berechnung in der neuen "aktuellen Rechenaufgabe" weiterverwenden. Aber nur dann !
:p.
Hierzu ein Beispiel:
:lm margin=10.
:p.
Das Ergebnis der unmittelbar vorangegangenen Berechnung der "Rechenaufgabe" 45-40 durch die Eingabe-Kette
:lm margin=16.
:p.
kzr , 45-40
:lm margin=10.
:p.
ist
:lm margin=16.
:p.
5.
:lm margin=10.
:p.
Ruft man jetzt die Eingabe-Kette kzr , 45-40 der unmittelbar vorangegangenen Rechenaufgabe auf die übliche
Weise auf die OS/2-Kommandozeile zurück, so kann man einen oder auch mehrere Zahlenwerte der
Eingabe-Kette durch die Variable z ersetzen.
Somit wäre zum Beispiel die neue Eingabe-Kette
:lm margin=16.
:p.
kzr , z-40 ,
:lm margin=10.
:p.
deren Ergebnis wegen z = 5 gleich -35 ist.
:p.
Dieses Verfahren kann, auch in komplizierteren algebraischen Ausdrücken, mehrmals nacheinander nacheinander
angewendet werden.
:lm margin=1.
:p.:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=34x24.
Bei der kleinen Version
:color fc=Pink.kzr0.CMD
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=1.
:p.
ist die interne Rechengenauigkeit mit 48 Dezimalstellen fest eingestellt.
.br
Daher ist das erste Komma in der Eingabekette -- unmittelbar nach der Teilkette kzr0.CMD -- nicht erlaubt.
.br
Die "aktuelle Rechenaufgabe" muß daher unmittelbar nach dem der Teilkette kzr0.CMD folgenden Leerzeichen
(mindestens eines) geschehen.
:p.
Die Eingabe
.br
:lm margin=17.kzr0 sin(.2)
.br
:lm margin=33.wäre ein Beispiel.
:lm margin=1.
:p.
Bei Eingabefehlern oder internen Störungen, zum Beispiel das Erzeugen zu großer Zahlen, geben REXX oder kzr0.CMD
lediglich eine allgemeine Fehlermeldung aus.
:p.
.* Ende
:h2 res=3002.Anwendung mit Variablen
:p.
kzr.CMD bietet die Möglichkeit, eine auf der OS/2-Kommandozeile eingegebene "Rechenaufgabe" zu lösen, in der in
algebraischen Ausdrücken und Funktions-Argumenten nicht nur feste Zahlenwerte sondern auch eine Mischung aus
festen Zahlenwerten und maximal zwei verschiedenen Variablen x und y, denen natürlich jeweils ein Wert
zugewiesen werden muß, vorkommen. Es können aber auch nur eine oder zwei verschiedene Variable verwendet
werden.
:p.
:color fc=Black bc=PaleGray.
(Leider dürfen nicht alle Buchstaben als Variablen-Namen verwendet werden;
.br
x und y, u und v sowie p und q sind erlaubte Variablen-Namen.)
:color fc=default bc=default.
:p.
Hierzu zwei Beispiele:
:p.
1.
:lm margin=6.
Die Eingabe auf der OS/2-Kommandozeile
:lm margin=16.
:p.
kzr , 1 + x/y ; x = 1, y = 2
:lm margin=6.
:p.
formuliert die Rechenaufgabe
:lm margin=16.
:p.
1 + x/y .
:lm margin=6.
:p.
Das Semikolon trennt diese Rechenaufgabe von den Zuweisungen
:lm margin=16.
:p.
x = 1 und y = 2,
:lm margin=6.
:p.
ab, die ihrerseits durch ein Komma voneinander getrennt werden müssen.
:p.
Hat man nun durch Betätigung der Eingabetaste das Ergebnis 1.5 erhalten,
so kann man, nachdem man die vorherige Eingabe
:lm margin=16.
:p.
kzr , 1 + x/y ; x = 1, y = 2
:lm margin=6.
:p.
auf die OS/2-Kommandozeile zurückgeholt hat, eine oder auch beide Variablen ändern.
.br
Hierbei erleichtert es die Arbeit, daß sowohl die Variablen als auch der Cursor am Ende der "zurückgeholten
Kommandozeilen-Eingabe" stehen und daher das Positionieren des Cursors zur Änderung der Wertes einer
Variablen schnell geschehen ist.
:p.
Wird jetzt die Variable y = 4 gesetzt, so erhält man das neue Ergebnis 1.25.
:p.
Nachdem man die so geänderte Eingabe
:lm margin=16.
:p.
kzr , 1 + x/y ; x = 1, y = 4
:lm margin=6.
:p.
auf die OS/2-Kommandozeile zurückgeholt hat, kann man auch in diesem Beispiel das am Ende des
Unter-Abschnittes "Rein numerische Anwendung" als Sonderfall beschriebene Verfahren mit der Variablen z
anwenden, um das Ergebnis z = 1.25 in diese neue Rechenaufgabe einzubringen.
.br
Man ändert in der "zurückgeholten Kommandozeilen-Eingabe"
:lm margin=16.
:p.
kzr , 1 + x/y ; x = 1, y = 4
:lm margin=6.
:p.
die Variable y in die Variable z und erhält mit der Eingabe
:lm margin=16.
:p.
kzr , 1 + x/z ; x = 1, y = 4
:lm margin=6.
:p.
das Ergebnis 1.8, da x = 1 und z = 1.25 ist.
:p.
Die Zuweisung y = 4 kann hier stehen bleiben; sie hat keine Wirkung mehr, weil die Variable y in der
Rechenaufgabe
:lm margin=16.
:p.
kzr , 1 + x/z ; x = 1, y = 4
:lm margin=6.
:p.
nicht mehr vorgekommt; man hätte sie ebenso gut auch entfernen können, ebenso auch das Komma im Anschluß
an die Zuweisung x = 1.
:lm margin=1.
:p.
2.
:lm margin=6.
Die etwas kompliziertere Eingabe auf der OS/2-Kommandozeile
:lm margin=16.
:p.
kzr 48, sin(1 + x/y) + sqrt(x+y) * pot(y,x) ; x = 1.3, y = .29E-1
:lm margin=6.
:p.
formuliert die Rechenaufgabe
:lm margin=16.
:p.
sin(1 + x/y) + sqrt(x+y) * pot(y,x),
:lm margin=6.
:p.
die mit 48 Dezimalstellen gerechnet werden soll.
.br
Das Semikolon ; trennt diese Rechenaufgabe von den Zuweisungen
:lm margin=16.
:p.
x = 1.3 und y = .29E-1.
:lm margin=1.
:p.:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=34x24.
Bei der kleinen Version
:color fc=Pink.kzr0.CMD
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=1.
:p.
:color fc=default bc=default.
ist die zuvor beschriebene Anwendung mit Variablen nicht möglich.
:p.
.* Ende
:h1 res=4000.Mathematische Funktionen
:p.
Die "Kernfunktion" kzr.CMD kann die folgenden "externen" mathematische Funktionen verwenden, deren Argumente
reelle Zahlen sein müssen.
:p.
Trigonometrische Funktionen und Hyperbelfunktionen
:lm margin=4.
:p.
Sinusfunktion
:lm margin=66.
:link reftype=hd res=10001
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.sin(x)
:elink.
:lm margin=4.
.br
Cosinusfunktion
:lm margin=66.
:link reftype=hd res=10002
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.cos(x)
:elink.
:lm margin=4.
.br
Tangensfunktion
:lm margin=66.
:link reftype=hd res=10003
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.tan(x)
:elink.
:lm margin=4.
.br
Cotangensfunktion
:lm margin=66.
:link reftype=hd res=10004
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.cot(x)
:elink.
:lm margin=4.
.br
Hyperbel-Sinusfunktion
:lm margin=66.
:link reftype=hd res=10005
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.sinh(x)
:elink.
:lm margin=4.
.br
Hyperbel-Cosinusfunktion
:lm margin=66.
:link reftype=hd res=10006
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.cosh(x)
:elink.
:lm margin=4.
.br
Hyperbel-Tangensfunktion
:lm margin=66.
:link reftype=hd res=10007
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.tanh(x)
:elink.
:lm margin=4.
.br
Hyperbel-Cotangensfunktion
:lm margin=66.
:link reftype=hd res=10008
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.coth(x)
:elink.
:lm margin=1.
:p.
Bei den folgenden vieldeutigen inversen trigonometrischen und hyperbolischen Funktionen, den Umkehrfunktionen der
trigonometrische Funktionen und der Hyperbelfunktionen, wird stets der sogenannte Hauptwert berechnet.
:lm margin=4.
:p.
Arcus-Sinusfunktion
:lm margin=66.
:link reftype=hd res=10009
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arcsin(x)
:elink.
:lm margin=4.
.br
Arcus-Cosinusfunktion
:lm margin=66.
:link reftype=hd res=10010
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arccos(x)
:elink.
:lm margin=4.
.br
Arcus-Tangensfunktion
:lm margin=66.
:link reftype=hd res=10011
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arctan(x)
:elink.
:lm margin=4.
.br
Arcus-Cotangensfunktion
:lm margin=66.
:link reftype=hd res=10012
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arccot(x)
:elink.
:lm margin=4.
.br
Area-Sinusfunktion
:lm margin=66.
:link reftype=hd res=10013
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arsinh(x)
:elink.
:lm margin=4.
.br
Area-Cosinusfunktion
:lm margin=66.
:link reftype=hd res=10014
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arcosh(x)
:elink.
:lm margin=4.
.br
Area-Tangensfunktion
:lm margin=66.
:link reftype=hd res=10015
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.artanh(x)
:elink.
:lm margin=4.
.br
Area-Cotangensfunktion
:lm margin=66.
:link reftype=hd res=10016
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.arcoth(x)
:elink.
:lm margin=1.
:p.
Weitere wichtige elementare und hoehere mathematische Funktionen
:lm margin=4.
:p.
Exponentialfunktion
:lm margin=66.
:link reftype=hd res=10017
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.exp(x)
:elink.
:lm margin=4.
.br
Potenzfunktion
:lm margin=66.
:link reftype=hd res=10018
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.pot(x,y)
:elink.
:lm margin=4.
.br
Funktion 2. Wurzel
:lm margin=66.
:link reftype=hd res=10019
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.sqrt(x)
:elink.
:lm margin=4.
.br
Funktion 3. Wurzel
:lm margin=66.
:link reftype=hd res=10020
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.root3(x)
:elink.
:lm margin=4.
.br
Logarithmus zur Basis e
:lm margin=66.
:link reftype=hd res=10021
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.ln(x)
:elink.
:lm margin=4.
.br
Logarithmus zur Basis 10
:lm margin=66.
:link reftype=hd res=10022
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.log(x)
:elink.
:lm margin=4.
.br
Logarithmus zur Basis 2
:lm margin=66.
:link reftype=hd res=10023
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.ld(x)
:elink.
:lm margin=4.
.br
Fakultätsfunktion
:lm margin=66.
:link reftype=hd res=10024
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.n!(u)
:elink.
:lm margin=4.
.br
Fakultätsfunktion
:lm margin=66.
:link reftype=hd res=10025
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.n!!(u)
:elink.
:lm margin=4.
.br
Gammafunktion
:lm margin=66.
:link reftype=hd res=10026
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.ga(x)
:elink.
:lm margin=4.
.br
Binomialkoeffizient
:lm margin=66.
:link reftype=hd res=10027
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.bin(u,v)
:elink.
:lm margin=4.
.br
Gaußsche Fehlerfunktion φ(x)
:lm margin=66.
:link reftype=hd res=10028
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.phi(x)
:elink.
:lm margin=4.
.br
Fehlerfunktion p_(x) = (1 + φ(x))/2
:lm margin=66.
:link reftype=hd res=10029
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.p_(x)
:elink.
:lm margin=4.
.br
Fehlerfunktion q_(x) = (1 - φ(x))/2
:lm margin=66.
:link reftype=hd res=10030
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.q_(x)
:elink.
:lm margin=4.
.br
Errorfunktion
:lm margin=66.
:link reftype=hd res=10031
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.erf(x)
:elink.
:lm margin=4.
.br
Komplementäre Errorfunktion
:lm margin=66.
:link reftype=hd res=10032
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.erfc(x)
:elink.
:lm margin=4.
.br
Modulofunktion
:lm margin=66.
:link reftype=hd res=10033
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.mod(u,v)
:elink.
:lm margin=4.
.br
Kleinster gemeinsamer Teiler
:lm margin=66.
:link reftype=hd res=10034
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.gcd(u,v)
:elink.
:lm margin=1.
:p.
Ist das Ergebnis einer Funktion mit einem reellen Argument eine komplexe oder rein imaginäre Zahl, wie zum Beispiel
bei der Funktion sqrt(x) für Werte x < 0, so wird eine diesbezügliche Meldung ausgegeben.
:p.
Über die mit diesen mathematischen Funktionen erzielbare maximale numerische Genauigkeit siehe den Abschnitt ==>
:link reftype=hd res=6000.Numerische Genauigkeit:elink.
:p.:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
:lm margin=10.
Literatur
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=1.
:p.:p.
[1]
:lm margin=10.
I. S. GRADSHTEYN and I. M. RYZHIK
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Table of Integrals, Series and Products
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
ACADEMIC PRESS New York and London 1965
:lm margin=1.
:p.
[2]
:lm margin=10.
Milton Abramowitz &. Irene A. Stegun
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Handbook of Mathematical Functions
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
DOVER PUBLICATIONS, INC., NEW YORK 1965
:lm margin=1.
:p.
[3]
:lm margin=10.
Milton Abramowitz &. Irene A. Stegun
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Handbook oh Mathematical Functions
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
DOVER PUBLICATIONS, INC., NEW YORK 1970
:lm margin=1.
:p.
[4]
:lm margin=10.
JEROME SPANIER and KEITH B. OLDHAM
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
AN ATLAS OF FUNCTIONS
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
HEMISPHERE PUBLISHING CORPORATION, Washington New York London 1987;
.br
ebenfalls: Springer-Verlag Berlin
:lm margin=1.
:p.
[5]
:lm margin=10.
I. N. BRONSTEIN und K. A. SEMENDJAJEW
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
TASCHENBUCH DER MATHEMATIK
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
Verlag Harri Deutsch, Thun und Frankfurt, 19. Auflage 1980
:lm margin=1.
:p.
[6]
:lm margin=10.
P. H. Müller
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Lexikon der Stochastik
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
Akademie-Verlag GmbH, Berlin 1991, 5. Auflage
:lm margin=1.
:p.
[7]
:lm margin=10.
Robert Sedgewick
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Algorithmen in C
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
Addison-Wesley (Deutschland) GmbH, 1. Auflage 1992
:lm margin=1.
:p.:p.
.* Ende
:h1 res=5000.Mathematische Konstanten
:p.
Die "Kernfunktion" kzr.CMD kann die folgenden elementaren mathematischen Konstanten verwenden:
:lm margin=4.
:p.
π [1]
:lm margin=68.
:link reftype=hd res=10035
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.pi()
:elink.
.br
:lm margin=4.
.br
e
:lm margin=68.
:link reftype=hd res=10036
vpx=0% vpy=0% vpcx=50% vpcy=100%
group=2.e()
:elink.
:lm margin=1.
:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
Literatur oder sonstige Quellen
:color fc=default bc=default.
:font facename=default size=0x0.
:p.
[1]
:lm margin=6.
John Brock
.br
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
RXXMATH v1.3 -- Arbitrary Precision Math Functions for REXX 1996
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=default bc=default.
.br
Bei verschiedenen Internet-Adressen
:lm margin=1.
:p.
.* Ende
:h1 res=6000.Numerische Genauigkeit
:p.
Ohne Verwendung der "externen" mathematischen Funktionen ist die Rechengenauigkeit der "Kernfunktion" kzr.CMD
fast beliebig hoch.
.br
Dabei ist aber zu beachten, daß die Rechenzeit mit steigender Anzahl ND der für den Rechenvorgang verwendeten
Dezimalstellen überproportional zunimmt.
.br
Man sollte daher sorgfältig abschätzen, wieviele Dezimalstellen für eine bestimmte Aufgabe erforderlich sind.
:p.
Im Gegensatz dazu können einige der für kzr.CMD verfügbaren mathematischen Funktionen (==>
:link reftype=hd res=4000 group=2.Mathematische Funktionen:elink.)
nur mit einer begrenzten numerischen Genauigkeit berechnet werden.
:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
Wichtig:
:color fc=default bc=default.
:font facename=default size=0x0.
:lm Margin=6.
:p.
Bei Verwendung der "externen" mathematischen Funktionen wird bei Überschreitung der Rechengenauigkeit durch
ein akustisches Signal und eine zusätzliche Anzeige darauf aufmerksam gemacht. Außerdem wird die von der
Eingabe-Kette (Definition folgt.) verlangte Gesamt-Rechengenauigkeit, wenn sie höher als die der aufgerufenen
mathematischen Funktionen ist, (mit Hilfe der von kzr.CMD intern aufgerufenen MinNDA.CMD) reduziert und von
derjenigen der aufgerufenen mathematischen Funktionen bestimmt, welche die geringste maximale
Rechengenauigkeit liefern kann.
:p.
Ein Beispiel:
:p.
Die Eingabe-Kette sei
:lm margin=32.
.br
kzr 56, 1/3 + phi(0.3)
:lm margin=6.
:p.
Der Bruch 1/3 könnte mit der geforderten Gesamt-Rechengenauigkeit von 56 Dezimalstellen berechnet und
ausgegeben werden.
.br
Die Funktion phi(x) aber kann mit nur maximal 50 Dezimalstellen berechnet werden.
.br
Die Gesamt-Rechengenauigkeit der in dieser Eingabe-Kette aufgerufenen mathematischen Funktionen entspricht
also maximal 50 Dezimalstellen.
.br
Daher wird auch das Ergebnis mit maximal 50 Dezimalstellen ausgegeben.
.br
Es wird somit keine höhere Gesamt-Rechengenauigkeit vorgetäuscht als tatsächlich vorhanden war.
:lm margin=1.
.br
:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
Bitte folgendes beachten:
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=5.
:p.
Die Schwierigkeit, bei einer Differenz zweier nahezu gleich großer Zahlen ein genügend genaues Ergebnis zu
erreichen, ist kein spezielles Problem von kzr.CMD, sondern ein allgemeines Problem der numerischen
Mathematik.
:p.
Ein Beispiel für die Schwierigkeit, bei einer Differenz zweier nahezu gleich großer Zahlen ein genügend genaues
Ergebnis zu erreichen, findet man im Abschnitt
&odq.:link reftype=hd res=7000 group=2.Bekannte Fehlermöglichkeiten:elink.&odq.
:p.:p.
.* Ende
:h1 res=7000.Bekannte Fehlermöglichkeiten
:p.
1.
:lm margin=5.
Wenn man aus irgendwelchen Gründen eine laufende Rechenprozedur abbricht, zum Beispiel mit der
Tastenkombination Strg+c, wird die Datei NDZahl.DAT nicht gelöscht, was bei einem normalen Ablauf von
kzr.CMD immer geschieht.
.br
Die Datei NDZahl.DAT muß dann von Hand gelöscht werden, denn es könnte sein, daß man (versehentlich ?) eine
zu große Zahl ND für die Anzahl der zu verwendenden Dezimalstellen eingegeben hatte, was die Geduld des
Anwenders so überforderte, daß er den Rechenvorgang abgebrochen hatte.
Ist die Datei NDZahl.DAT nicht gelöscht, so hat sie diese zu große Zahl ND gespeichert und übergibt sie bei
dem erneuten Rechenvorgang der dabei aufgerufenen Funktion, was den erneuten Rechenvorgang wieder mit einer
zu hohen Zahl ND für die zu verwendenden Dezimalstellen belastet.
:p.
Zur Fehlerdiagnose hilft eine einfache Eingabe,
.br
zum Beispiel:
.br
:lm margin=30.kzr , 1+1
:lm margin=5.
:p.
Diese einfache Rechenprozedur wird dann, ohne daß man eine bestimmte Zahl ND für die Anzahl der zu
verwendenden Dezimalstellen eingegeben hat, mit der vorher (versehentlich ?) eingegebenen Zahl ND durchgeführt,
was aber ohne Zwischenfall geschieht. Da kzr.CMD in der Zeile oberhalb des numerischen Ergebnisses 2 die
verwendete Zahl ND anzeigt, kann man erkennen, ob dort bei dieser Berechnung 1+1 eine unvernünftig große Zahl
ND verwendet worden ist. (Diese Zahl ND ist dann in der Datei NDZahl.DAT gespeichert.)
Ist dies der Fall, so muß man die Datei NDZahl.DAT löschen, womit der Fehler beseitigt ist.
:lm margin=1.
:p.:p.
2.
:lm margin=5.
:color fc=PaleGray bc=PaleGray.
&BOX.
:color fc=Black bc=PaleGray.
Bei Rechenaufgaben, in denen eine Differenz
:color fc=PaleGray bc=PaleGray.&BOX.
.br
&BOX.
:color fc=Black bc=PaleGray.
zweier nahezu gleich großer Zahlen auftritt,
:color fc=PaleGray bc=PaleGray.
&BOX.&BOX.
.br
&BOX.
:color fc=Black bc=PaleGray.
ist besondere Vorsicht geboten !
:color fc=PaleGray bc=PaleGray.
&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.&BOX.
:color fc=default bc=default.
:p.
Beispiel:
:p.
Die bekannte Funktional-Beziehung
:lm margin=44.
:p.
cosh²(x) - sinh²(x) = 1
:lm margin=5.
:p.
kann, wenn man sie zum Beispiel als die aktuelle Rechenaufgabe mit der Eingabe-Kette
:lm margin=20.
:p.
kzr 48, cosh(x)**2 - sinh(x)**2; x=3
:lm margin=5.
:p.
auf der OS/2-Kommandozeile startet, je nach Größe der Variablen x ungenaue, also von der ganzen Zahl 1
mehr oder weniger abweichende Ergebnisse liefern.
:p.
Dies liegt daran, daß die Funktionswerte
:lm margin=12.
:p.
cosh(x) = (exp(+x) + exp(-x))/2
:lm margin=5.
.br
und
:lm margin=12.
.br
sinh(x) = (exp(+x) - exp(-x))/2
:lm margin=5.
:p.
sich umso weniger von einander unterscheiden, je größer die Variable x ist.
:p.
Man kann durch Erhöhen der Zahl ND, welche als die erste ganze Zahl unmittelbar nach dem String kzr folgt und
die Zahl der für die Berechnung zu verwendenden Dezimalstellen festlegt, vergrößern und so die numerische
Genauigkeit erhöhen.
.br
Da aber die Zahl ND der zu verwendenden Dezimalstellen sich nicht beliebig vergrößern läßt und überdies die
Rechenzeit überprortional zur Vergrößerung von ND ansteigen würde, ist die hier als Beispiel gewählte
Funktional-Beziehung nicht geeignet, zum Beispiel die Richtigkeit der numerischen Ergebnisse der Funktionen
cosh(x) und sinh(x) zu überprüfen.
.br
(Ein zufällig richtiges Ergebnis, nämlich die ganze Zahl 1 bei einer solchen Prüfung, wäre notwendig aber nicht
hinreichend.)
:p.
.* Ende
:h1 res=8000.d2x, x2d, b2d, d2b, b2x, x2b
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce Umwandlungen von Zahlen
.ce zwischen den Darstellungsformen
.ce Dezimal, Hexadezimal und Binär
:color fc=default bc=default.
:font facename=default size=0x0.
:p.:p.:p.:p.
Die Funktionen D2X.CMD, X2D.CMD, D2B.CMD, B2D.CMD, B2X.CMD u d X2B.CMD
estatten im direkten Aufruf von der OS/2-Kommandozeile die Umwandlung
:lm margin=5.
:p.
von Dezimalzahlen in Hexadezimalzahlen (D2X.CMD),
.br
von Hexadezimalzahlen in Dezimalzahlen (X2D.CMD),
:p.
von Dezimalzahlen in Binärzahlen (D2B.CMD),
.br
von Binärzahlen in Dezimalzahlen (B2D.CMD),
:p.
von Binärzahlen in Hexadezimalzahlen (B2X.CMD) und
.br
von Hexadezimalzahlen in Binärzahlen (X2B.CMD).
:lm margin=1.
:p.
Alle sechs Funktionen sind sowohl auf Dezimalbrüche als auch auf deren Spezialfälle "ganzzahliger Anteil" und
Mantisse separat anwendbar.
:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=28x18.
.ce 1. Die Funktionen
.ce D2X.CMD, X2D.CMD, D2B.CMD und B2D.CMD.
:color fc=default bc=default.
:font facename=default size=0x0.
:color fc=Red bc=default.
:p.:p.
Für die Umwandlung ganzer Zahlen sind die Funktionen D2X.CMD, X2D.CMD, D2B.CMD und B2D.CMD exakt, da sie
aufgrund einer diesbezüglichen, von der auf der OS/2-Kommandozeile eingegebenen und umzuwandelnden Zahl
abgeleiteten Anweisung in den externen Prozeduren genügend Stellen für arithmetische Operationen zur Verfügung
haben.
:color fc=default bc=default.
:p.
Hierzu ein Beispiel:
:lm margin=5.
:p.
Die Eingabe der Dezimalzahl
:lm margin=56.
.br
16696875
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=56.
.br
D2X 16696875
:lm margin=5.
.br
erzeugt den String
:lm margin=56.
.br
FEC62B
:lm margin=5.
.br
als die entsprechende Hexadezimalzahl.
:lm margin=1.
:p.
.br
Die Rück-Umwandlung ist ebenso einfach:
:lm margin=5.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=56.
.br
FEC62B
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=56.
.br
X2D FEC62B
:lm margin=5.
.br
erzeugt den String
:lm margin=56.
.br
16696875
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:lm margin=1.
:p.
.br
:color fc=Red bc=default.
Dagegen sind Umwandlungen von Dezimalbrüchen nur in Ausnahmefällen exakt.
.br
Der ganzzahlige Anteil eines Dezimalbruchs wird jeweils exakt umgewandelt;
.br
für die Mantisse ist im allgemeinen Fall nur eine Näherung erzielbar, die aber umso genauer ist,
je mehr Stellen für die dazu erforderlichen arithmetischen Operationen verfügbar sind.
:color fc=default bc=default.
:p.
Die Stellengenauigkeit für die arithmetischen Operationen für die Umwandlung von Mantissen kann über die
OS/2-Kommandozeile eingestellt werden.
:p.
Beispiel 1:
:lm margin=5.
:p.
Die Eingabe der Dezimalzahl
:lm margin=56.
.br
166.96875
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=56.
.br
D2X 56, 166.96875
:lm margin=5.
.br
erzeugt den String
:lm margin=56.
.br
A6.F8
:lm margin=5.
.br
als die entsprechende Hexadezimalzahl.
:p.
Bei den Funktionen D2X.CMD und X2D.CMD bedeutet die positive ganze Zahl 56 zwischen den Teilstrings D2X
oder X2D der Eingabe-Kette einerseits und dem für die Umwandlung von Dezimalbrüchen in jedem Fall
verbindlichen Komma andererseits, daß für die Umwandlung der Mantisse intern bis zu 56 Stellen für die zur
Umwandlung benötigten arithmetischen Operationen aufgewender werden können.
:p.
In diesem Fall ist zu erkennen, daß für die Umwandlung der dezimalen Mantisse .96875 in die hexadezimale
Mantisse .F8 nur sehr wenige Stellen erforderlich waren; die Umrechnung gelang offenbar exakt. Dies kann
natürlich nachgeprüft werden.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=56.
.br
A6.F8
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=56.
.br
X2D 56, A6.F8
:lm margin=5.
.br
erzeugt den String
:lm margin=56.
.br
166.96875
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:p.
Da auch hier keine 56 Dezimalstellen ausgegeben wurden, ist es in hohem Maße wahrscheinlich, daß die
Umrechnung in beiden Fällen exakt geschehen konnte.
:lm margin=1.
:p.
.br
Ganz anders ist das Ergebnis einer solchen Umrechnung in den sehr häufig auftretenden Fällen, in denen nur eine
Näherung erreicht werden kann. Hierzu das folgende;
:p.
Beispiel 2:
:lm margin=5.
:p.
Die Eingabe der Dezimalzahl
:lm margin=56.
.br
15.23
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 32, 15.23
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
F.3AE147AE147AE147AE147AE147AE147
:lm margin=5.
:p.
als die entsprechende Hexadezimalzahl.
:p.
Zerlegt man in Gedanken den String für diese Hexadezimalzahl in de folgenden Weise
:lm margin=46.
:p.
F.3 AE147 AE147 AE147 AE147 AE147 AE147,
:lm margin=5.
:p.
so erkennt man an der 6-fachen periodischen Aneinanderreihung des Teilstrings AE147, daß die Hexadezimale
Darstellung der Dezimalzahl 15.23 nur eine Näherung sein kann.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
F.3AE147AE147AE147AE147AE147AE147
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
X2D 32, F.3AE147AE147AE147AE147AE147AE147
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
15.23
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:lm margin=1.
:p.:p.
Noch augenscheinlicher ist das folgende
:p.
Beispiel 3:
:lm margin=5.
:p.
Die Eingabe der Dezimalzahl
:lm margin=46.
.br
12.4
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 32, 12.4
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
C.6666666666666666666666666666666
:lm margin=5.
:p.
als die entsprechende Hexadezimalzahl.
:p.
Man erkennt man an der periodischen Aneinanderreihung der Ziffer 6, daß die Hexadezimale Darstellung der
Dezimalzahl 12.4 nur eine Näherung sein kann.
:lm margin=5.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
C.6666666666666666666666666666666
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
X2D 32, C.6666666666666666666666666666666
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
12.4
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:lm margin=1.
:p.:p.
Es ist das Ergebnis einer Formatierungsanweisung innerhalb von X2D.CMD, daß als Rück- Umwandlungs-Ergebnis die
Dezimalzahl 12.4 wieder exakt herausgekommen ist.
.br
Voraussetzung dafür ist allerdings, daß bei der Rück-Umwandlung Hexadezimal --> Dezimal mit X2D.CMD nicht
mehr Stellen für die arithmetischen Operationen in der Kommandozeilen-Eingabe-Kette vorgegeben werden, als es bei
der Umwandlung Dezimal --> Hexadezimal mit X2D.CMD der Fall war, nämlich 32 Stellen.
.br
Würde man für die Rück-Umwandlung Hexadezimal --> Dezimal weniger als 32 Stellen in der Eingabe-Kette vorgeben,
so bleibt das Ergebnis 12.4.
.br
Würde man allerdings für die Rück-Umwandlung Hexadezimal --> Dezimal mehr als 32
-- beispielsweise 38 -- Stellen in der Eingabe-Kette vorgeben, so bleibt das Ergebnis
:lm margin=46.
:p.
12.39999999999999999999999999999999999998
:lm margin=1.
.br
eine Näherung.
:p.:p.
Bei der Umwandlung Hexadezimal --> Dezimal mit X2D.CMD und der anschließenden Rück-Umwandlung Dezimal
--> Hexadezimal mit D2X.CMD muß ein wenig anders verfahren werden. Hierzu das folgende
:p.
Beispiel 4:
:lm margin=5.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
F1.DD6345F
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
X2D 24, F1.DD6345F
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
241.864796038717031478881836
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:p.:p.
Die Eingabe der Dezimalzahl
:lm margin=46.
.br
241.864796038717031478881836
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 24, 241.864796038717031478881836
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
F1.DD6345F0000000000000135
:lm margin=5.
:p.
als die entsprechende Hexadezimalzahl, die, wie man sieht, natürlich nur eine Näherung ist.
:p.
Würde man wie im vorhergehende Fall vorgehen, daß man nämlich bei der Rück-Umwandlung Dezimal -->
Hexadezimal mit D2X.CMD die Zahl der Stellen für die arithmetischen Operationen erhöht, also zum Beispiel von
24 auf 30, so ist das Ergebnis
:lm margin=46.
.br
F1.DD6345F00000000000001357C29
:lm margin=5.
.br
auch nicht genauer.
:p.
Es liegt also die Vermutung nahe, daß schon das Ergebnis
:lm margin=46.
:p.
241.864796038717031478881836
:lm margin=5.
:p.
der Umwandlung Hexadezimal --> Dezimal eine Näherung gewesen ist.
:p.
Es ist jetzt zweckmäßig, die Zahl der Stellen für die arithmetischen Operationen bei der Umwandlung
Hexadezimal --> Dezimal nach und nach zu erhöhen, und zwar so weit, bis die Mantisse der
Ergebnis-Dezimalzahl nicht mehr an Stellen zunimmt. Dies ist bei
:color fc=Pink bc=default.diesem Beispiel:color fc=default bc=default.
einer Umwandlungsaufgabe ab der Zahl 29 der Fall.
:lm margin=5.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
F1.DD6345F
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
X2D 29, F1.DD6345F
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
241.8647960387170314788818359375
:lm margin=5.
.br
als die entsprechende Dezimalzahl.
:p.:p.
Die Eingabe der Dezimalzahl
:lm margin=46.
.br
241.8647960387170314788818359375
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 29, 241.8647960387170314788818359375
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
F1.DD6345F
:lm margin=5.
:p.
als die entsprechende Hexadezimalzahl.
:p.:p.
Wer nur eine Mantisse umwandeln will, darf den (Dezimal)punkt nicht vergessen.
.br
Auch dazu ein Beispiel:
:p.
Die Eingabe der Dezimalzahl
:lm margin=46.
.br
&per.0765625
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 24, .9765625
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
&per.FA
:lm margin=5.
.br
als die entsprechende Mantisse in hexadezimaler Darstellung.
:p.:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
&per.1A3
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
D2X 24, .1A3
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
&per.102294921873
:lm margin=5.
.br
als die entsprechende Mantisse in dezimaler Darstellung.
:p.:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce 2. Die Funktionen
.ce B2X.CMD und X2B.CMD.
:color fc=default bc=default.
:font facename=default size=0x0.
:lm margin=1.
:p.
Im Gegensatz zu den Funktionen D2X.CMD, X2D.CMD, D2B.CMD und B2D.CMD, die für die Mantisse im allgemeinen
Fall eine Näherungsdarstellung und nur in Spezialfällen eine exakte Darstellung liefern, sind die Umwandlungen von
:lm margin=10.
:p.
von Binärzahlen in Hexadezimalzahlen (B2X.CMD)
:lm margin=1.
.br
und
:lm margin=10.
:p.
von Hexadezimalzahlen in Binärzahlen (X2B.CMD)
:lm margin=1.
:p.
stets exakt, und eine Möglichkeit oder gar eine Notwendigkeit, die Anzahl der für die arithmetischen Operationen
intern zu verwendenden Stellen vorzugeben, gibt es bei den Funktionen B2X.CMD und X2B.CMD nicht.
:p.
Hier zwei Beispiele dazu:
:lm margin=5.
:p.
Die Eingabe der Hexadezimalzahl
:lm margin=46.
.br
CA.B5
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
X2B CA.B5
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
11001010.10110101
:lm margin=5.
:p.
als die entsprechende binäre Darstellung.
:p.:p.
Die Eingabe der Binärzahl
:lm margin=46.
.br
10100101.10011011
:lm margin=5.
.br
mit der Eingabe-Kette
:lm margin=46.
.br
B2X 10100101.10011011
:lm margin=5.
.br
erzeugt den String
:lm margin=46.
.br
A5.9B
:lm margin=5.
:p.
als die entsprechende hexadezimale Darstellung.
:p.:p.
.* Ende
:h1 res=9000.Primfaktoren
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce Zerlegung einer positiven ganzen Zahl
.ce in ihre Primfaktoren
:color fc=default bc=default.
:font facename=default size=0x0.
:p.:p.:p.:p.
Die Funktion
:color fc=Pink bc=default.
prim.CMD
:color fc=default bc=default.
kann, ohne die "Kernfunktion" kzr.CMD verwenden zu müssen, direkt von der Kommandozeile
mit der Eingabe
:lm margin=24.
.br
prim x
:lm margin=1.
:p.
aufgerufen werden, wobei x eine positive ganze Zahl sein muß.
:p.
Obgleich eine interpretierende Programmiersprache wie REXX für die Zerlegung einer Zahl in ihre Primfaktoren nicht
die ideale Programmiersprache ist, kann prim.CMD diese Aufgabe in vielen Fällen bewältigen.
Auch ist der Primitiv-Algorithmus, der in dem Versuch besteht, die zu zerlegende ganze Zahl x nacheinander durch die
Zahlen 2,3,4,5 ...... bis sqrt(x) zu dividieren, sicher nicht der wirksamste Algorithmus zur Zerlegung einer ganzen
positiven Zahl in mögliche Primfaktoren.
.br
Eine der Schwierigkeiten, die bei dem hier verwendeten Algorithmus auftreten, besteht darin, daß bei Primfaktoren,
die wesentlich größer als 1.2E+12 sind, die Rechenzeiten unkontrollierbar lang werden. prim.CMD kann auf einem
Rechner mit einem Pentium Pro, 200 MHz Taktgeschwindigkeit und ausreichend Hauptspeicher
.br
die Zahl
:lm margin=24.
:p.
1 200 000 000 053
:lm margin=1.
:p.
als eine Primzahl innerhalb von 59 Sekunden erkennen.
:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce Hinweis für die Rechenpraxis:
:color fc=default bc=default.
:font facename=default size=0x0.
:p.
Wenn nach etwa 3 Minuten ein Rechenvorgang noch nicht beendet ist, kann die geforderte Zerlegung von
prim.CMD mit hoher Wahrscheinlichkeit nicht geleistet werden. In einem solchen Falle sollte der
Rechenvorgang mit der Tastenkombination :color fc=Pink bc=default.Strg+c:color fc=default bc=default.
abgebrochen werden.
:p.
prim.CMD erlaubt die Eingabe von Zahlen mit Gliederungsabständen, zum Beispiel zwischen jeweils 3 Ziffern,
um die Übersichtlichkeit zu erhöhen und so die Wahrscheinlichkeit von Eingabefehlern zu reduzieren.
(Beispielsweise wird die Ziffernfolge 1 200 000 000 053 intern durch Entfernen der Zwischenräume in die
Ziffernfolge 1200000000053 umgeformt.)
:p.:p.
Die Eingabe-Kette
:lm margin=24.
.br
prim 1 200 000 000 053
:lm margin=1.
:p.
zum Beispiel erzeugt die folgende Ausgabe:
:p.
:lm margin=5.
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
:lm margin=12.
Die Zahl, die in Primfaktoren zerlegt werden soll,
:color fc=Black bc=Black.░ ▓
:lm margin=5.
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
▒ ▓
.br
░ ░
:color fc=Cyan bc=Black.
1200000000053
:color fc=Black bc=Black.
░ ░
.br
▒ ▓
.br
░ ░
:color fc=PaleGray bc=Black.
Primfaktor Exponent
:color fc=Black bc=Black.
░ ░
.br
▒ ▓
.br
░ ░
:color fc=PaleGray bc=Black.
1200000000053 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
Die eingegebene Zahl
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=Cyan bc=Black.
1200000000053:color fc=PaleGray bc=Black.,
:color fc=Black bc=Black.
▒ ░
.br
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
die in ihre Primfaktoren zerlegt werden soll, ist selbst eine Primzahl.
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=default bc=default.
:lm margin=1.
:p.:p.:p.:p.
:color fc=darkgreen.
:font facename='Tms Rmn' size=36x32.
.ce Beispiele für erfolgreiche Zerlegungen:
:color fc=default bc=default.
:font facename=default size=0x0.
:p.
Die Eingabe-Kette
:lm margin=25.
:p.
Prim 39 442 372 387 147 114 006 181 929 906 022 200
:lm margin=1.
:p.
erzeugt die folgende Ausgabe:
:p.:p.
:color fc=Black bc=Black.
:lm margin=5.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Die Zahl, die in Primfaktoren zerlegt werden soll,
:color fc=Black bc=Black.
▒ ▒
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
▒ ░
.br
▓ ░
:color fc=Cyan bc=Black.
39442372387147114006181929906022200
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Primfaktor Exponent
:color fc=Black bc=Black.
▒ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
2 3
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
5 2
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
11 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
13 2
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
17 3
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
23 3
:color fc=Black bc=Black.
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
29 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
4871 3
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
23011 2
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
Der Wert des Produktes,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
dessen Faktoren die einzelnen Potenzen
:color fc=Green bc=Black.
"Primfaktor hoch Exponent"
:color fc=PaleGray bc=Black.
sind,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=Cyan bc=Black.
39442372387147114006181929906022200
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=default bc=default.
:lm margin=1.
:p.
In dieser Darstellung ist zunächst die um etwaige Leerstellen reduzierte eingegebene ganze Zahl zu sehen, die in ihre
Primfaktoren zerlegt werden soll. Wird keine ganze Zahl eingegeben, erscheint eine diesbezügliche Fehlermeldung.
Darunter wird der Betrag jedes Primfaktors und seines Exponenten angegeben. Der Exponent besagt, wie oft dieser
Primfaktor in dieser Zahl vorhanden ist.
.br
Zur Kontrolle werden alle ermittelten Primfaktoren mit einander multipliziert, um eine Kontrolle zu haben, ob auch alle
Primfaktoren ermittelt worden sind (Produkt, dessen Faktoren die einzelnen Potenzen "Primfaktor hoch Exponent"
sind).
:p.
Ein Rechner mit einem Pentium Pro, 200 MHz Taktgeschwindigkeit und ausreichend Hauptspeicher führt die hier
dargestellte Berechnung in 2 Sekunden aus.
:p.:p.
Die Eingabe-Kette
:lm margin=24.
.br
Prim 1 969 911 333 706 466 162 042 672 657 103
:lm margin=1.
:p.
als nächstes Beispiel erzeugt die folgende Ausgabe:
:p.
:color fc=Black bc=Black.
:lm margin=5.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Die Zahl, die in Primfaktoren zerlegt werden soll,
:color fc=Black bc=Black.
▒ ▒
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
▒ ░
.br
▓ ░
:color fc=Cyan bc=Black.
1969911333706466162042672657103
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Primfaktor Exponent
:color fc=Black bc=Black.
▒ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
3 3
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
11 2
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
1459 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
4261 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
4871 2
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
448631 1
:color fc=Black bc=Black.
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
9111821 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
Der Wert des Produktes,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
dessen Faktoren die einzelnen Potenzen
:color fc=Green bc=Black.
"Primfaktor hoch Exponent"
:color fc=PaleGray bc=Black.
sind,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=Cyan bc=Black.
1969911333706466162042672657103
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=default bc=default.
:lm margin=1.
:p.:p.
Ein Rechner mit einem Pentium Pro, 200 MHz Taktgeschwindigkeit und ausreichend Hauptspeicher führt die hier
dargestellte Berechnung in 26 Sekunden aus.
:p.:p.
Die Eingabe-Kette
:lm margin=24.
Prim 18 363 498 557 203 867 896 295 861 193
451 655 574 494 195 634 077 086 553
:lm margin=1.
:p.
als nächstes Beispiel erzeugt die folgende Ausgabe:
:p.:p.
:color fc=Black bc=Black.
:lm margin=5.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Die Zahl, die in Primfaktoren zerlegt werden soll,
:color fc=Black bc=Black.
▒ ▒
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
▒ ░
.br
▓ ░
:color fc=Cyan bc=Black.
18363498557203867896295861193451655574494195634077086553
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
Primfaktor Exponent
:color fc=Black bc=Black.
▒ ░
.br
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
7 9
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
13 6
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
113 4
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
1471 3
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
3491 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
5501 2
:color fc=Black bc=Black.
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
811819 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=PaleGray bc=Black.
2118209 1
:color fc=Black bc=Black.
░ ░
.br
░ ░
.br
░ ▒
:color fc=PaleGray bc=Black.
Der Wert des Produktes,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
dessen Faktoren die einzelnen Potenzen
:color fc=Green bc=Black.
"Primfaktor hoch Exponent"
:color fc=PaleGray bc=Black.
sind,
:color fc=Black bc=Black.
░ ░
.br
▒ ░
:color fc=PaleGray bc=Black.
ist:
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=Cyan bc=Black.
18363498557203867896295861193451655574494195634077086553
:color fc=Black bc=Black.
░ ░
.br
░ ░
:color fc=default bc=default.
:lm margin=1.
:p.:p.
Ein Rechner mit einem Pentium Pro, 200 MHz Taktgeschwindigkeit und ausreichend Hauptspeicher führt die hier
dargestellte Berechnung in 45 Sekunden aus.
:p.
Man erkennt an diesen Beispielen, daß auch eine 56-stellige ganze Zahl in ihre Primfaktoren vollständig zerlegt
werden kann, wenn diese nicht zu groß sind.
:p.
Man kann also immerhin den Versuch unternehmen, eine unbekannte vielstellige Zahl mit prim.CMD in ihre
Primfaktoren zu zerlegen.
:p.:p.
.* Ende
:h1 res=10000.Anhang
:p.
Im Anhang sind die einzelnen mathematischen Funktionen, die von kzr.CMD verwendet werden können, in
.br
individuellen Unterabschnitten erklärt.
:p.
.* Ende
:h2 res=10001.Sinusfunktion
:p.
Die Sinusfunktion sin(x)
.br
kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10002.Cosinusfunktion
:p.
Die Cosinusfunktion cos(x)
.br
kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10003.Tangensfunktion
:p.
Die Tangensfunktion tan(x)
.br
kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10004.Cotangensfunktion
:p.
Die Cotangensfunktion cot(x)
.br
kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10005.Hyperbel-Sinusfunktion
:p.
Die Hyperbel-Sinusfunktion sinh(x)
.br
ist definiert als
:lm margin=20.
.br
:p.
exp(+x) - exp(-x)
:lm margin=7.
.br
sinh(x) = ────────────── .
:lm margin=27.
.br
2
:lm margin=1.
:p.
Sie kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10006.Hyperbel-Cosinusfunktion
:p.
Die Hyperbel-Cosinusfunktion cosh(x)
.br
ist definiert als
:lm margin=20.
.br
:p.
exp(+x) + exp(-x)
:lm margin=7.
.br
cosh(x) = ────────────── .
:lm margin=27.
.br
2
:lm margin=1.
:p.
Sie kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10007.Hyperbel-Tangensfunktion
:p.
Die Hyperbel-Tangensfunktion tanh(x)
.br
ist definiert als
:lm margin=20.
:p.
exp(+x) - exp(-x)
:lm margin=7.
.br
tanh(x) = ────────────── .
:lm margin=20.
.br
exp(+x) + exp(-x)
:lm margin=1.
:p.
Sie kann im Bereich |x| < 1.0E+8
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
.* Ende
:h2 res=10008.Hyperbel-Cotangensfunktion
:p.
Die Hyperbel-Cotangensfunktion coth(x)
.br
ist definiert als
:lm margin=20.
:p.
exp(+x) + exp(-x)
:lm margin=7.
.br
coth(x) = ────────────── .
:lm margin=20.
.br
exp(+x) - exp(-x)
:lm margin=1.
:p.
Sie kann im Bereich |x| < 1.0E+8
.br
- der Wert x=0 ist aber nicht erlaubt -
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10009.Arcus-Sinusfunktion
:p.
Der Hauptwert der Funktion arcsin(x)
.br
kann im Bereich |x| ≤ 1
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10010.Arcus-Cosinusfunktion
:p.
Der Hauptwert der Funktion arccos(x)
.br
kann im Bereich |x| ≤ 1
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10011.Arcus-Tangensfunktion
:p.
Der Hauptwert der Funktion arctan(x)
.br
kann im Bereich |x| < ∞
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10012.Arcus-Cotangensfunktion
:p.
Der Hauptwert der Funktion arccot(x)
.br
kann in den Bereichen
.br
-∞ < x < 0 und 0 < x +∞
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
Anmerkung:
:p.
Der Hauptwert der Funktion arccot(x)
.br
geht für x ─> -∞ gegen -0
.br
und für x ─> -0 gegen -π/2.
.br
An der Stelle x = 0
.br
ist die Funktion arccot(x)
.br
- und daher auch deren Hauptwert -
.br
nicht erklärt.
:artwork name='E:\rexx\vv\kzrbitmap\arccot.BMP'.
Der Hauptwert der Funktion arccot(x)
.br
geht für x ─> +0 gegen +π/2
.br
und für x ─> +∞ gegen +0.
:p.
Diese Definion des Hauptwertes
.br
der Funktion arccot(x) ist offenbar
.br
die jüngste Festlegung [3].
:p.
In der Literatur findet man
.br
gelegentlich eine andere Definition,
.br
zum Beispiel in [2].
:p.
.* Ende
:h2 res=10013.Area-Sinusfunktion
:p.
Der Hauptwert der Funktion arsinh(x)
.br
kann im Bereich -∞ < x < +∞
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 400) berechnet werden.
:p.
.* Ende
:h2 res=10014.Area-Cosinusfunktion
:p.
Der Hauptwert der Funktion arcosh(x)
.br
kann im Bereich x ≥ 1
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 400) berechnet werden.
:p.
.* Ende
:h2 res=10015.Area-Tangensfunktion
:p.
Der Hauptwert der Funktion artanh(x)
.br
kann im Bereich |x| < 1
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 400) berechnet werden.
:p.
.* Ende
:h2 res=10016.Area-Cotangensfunktion
:p.
Der Hauptwert der Funktion arcoth(x)
.br
kann im Bereich |x| > 1
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 400) berechnet werden.
:p.
.* Ende
:h2 res=10017.Exponentialfunktion
:p.
Die Exponentialfunktion exp(x)
.br
kann im Bereich |x| < 1.0E+9
.br
mit fast beliebiger Genauigkeit
.br
berechnet werden.
:p.
.* Ende
:h2 res=10018.Potenzfunktion
:p.
Die Potenz-Funktion pot(x,y)
.br
-- x hoch y --
.br
kann im Bereich |y*ln(|x|)| < 1.0E+9
.br
mit einer Genauigkeit
.br
von maximal 400
.br
Dezimalstellen berechnet werden.
:p.
.* Ende
:h2 res=10019.Funktion 2. Wurzel
:p.
Die zweite Wurzel sqrt(x)
.br
kann im Bereich
.br
1.0E-10000 < x < 1.0E+10000
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10020.Funktion 3. Wurzel
:p.
Die dritte Wurzel root3(x)
.br
kann im Bereich
.br
1.0E-10000 < x < 1.0E+10000
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10021.Logarithmus zur Basis e
:p.
Der natürliche Logarithmus ln(x)
.br
kann im Bereich
.br
1.0E-100000 < x < 1.0E+100000
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10022.Logarithmus zur Basis 10
:p.
Der Logarithnus zur Basis 10: log(x)
.br
kann im Bereich
.br
1.0E-100000 < x < 1.0E+100000
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10023.Logarithmus zur Basis 2
:p.
Der Logarithmus zur Basis 2: ld(x)
.br
kann im Bereich
.br
1.0E-100000 < x < 1.0E+100000
.br
mit fast beliebiger Genauigkeit
.br
(ND <= 450) berechnet werden.
:p.
.* Ende
:h2 res=10024.Fakultätsfunktion n!
:p.
Die Fakultätsfunktion n!(u)
.br
kann im Bereiche 0 < u <= 6000
.br
für ganzzahlige Werte von u
.br
berechnet werden.
:p.
Für u > 6000
.br
werden die Rechenzeiten zu groß.
:p.
.* Ende
:h2 res=10025.Fakultätsfunktion n!!
:p.
Die Fakultätsfunktion n!!(u)
.br
:artwork name='E:\REXX\VV\kzrBitMap\00n!!.BMP'.
.br
kann im Bereiche 0 < u <= 6000
.br
für ganzzahlige Werte von u berechnet werden.
.br
Für u > 6000 werden die Rechenzeiten zu groß.
:p.
.* Ende
:h2 res=10026.Gammafunktion
:p.
Die Gamma-Funktion Γ(x)=ga(x) ist definiert als
.br
:artwork name='E:\rexx\vv\kzrbitmap\gamma.bmp'.
.br
Für x=0 und negative ganzzahlige Werte von x
.br
hat die Gammafunktion Pole und ist dort nicht definiert.
.br
Sie kann im Bereich -3000 < x < +3000
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen berechet werden.
.br
Für |x| > 3000 werden die Rechenzeiten zu groß.
:p.
.* Ende
:h2 res=10027.Binomialkoeffizient
:p.
Für einen Binomialkoeffizienten
:lm margin=25.
:p.
u!
:lm margin=10.
.br
bin(u,v) = ───────
:lm margin=20.
.br
v!(u-v)!
:lm margin=1.
:p.
müssen die Bereiche 0 < u <= 2000
:lm margin=19.
.br
und 0 < v <= u
:lm margin=1.
:p.
eingehalten werden.
:p.
Die Variablen u und v
.br
müssen ganze Zahlen sein.
:p.
.* Ende
:h2 res=10028.Gaußsche Fehlerfunktion
:p.
Die Gaußsche Fehlerfunktion Φ(x)=phi(x)
.br
:artwork name='e:\rexx\vv\kzrbitmap\phi.bmp'.
.br
kann im Bereich -∞ < x < +∞
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen
.br
berechnet werden.
:p.
.* Ende
:h2 res=10029.Fehlerfunktion p_(x)
:p.
Die Fehlerfunktion p_(x)=(1+Φ(x))/2
.br
kann im Bereich -∞ < x < +∞
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen
.br
berechet werden.
:p.
Zur Definition von Φ(x)
.br
siehe die Erläuterunge zu phi(x)
:p.
.* Ende
:h2 res=10030.Fehlerfunktion q_(x)
:p.
Die Fehlerfunktion q_(x)=(1-Φ(x))/2
.br
kann im Bereich -∞ < x < +∞
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen
.br
berechet werden.
:p.
Zur Definition von Φ(x)
.br
siehe die Erläuterunge zu phi(x)
:p.
.* Ende
:h2 res=10031.Error-Funktion
:p.
Die Error-Funktion erf(x)
.br
:artwork name='e:\rexx\vv\kzrbitmap\erf.bmp'.
.br
kann im Bereich -∞ < x < +∞
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen
.br
berechet werden.
:p.
.* Ende
:h2 res=10032.Komplementäre Error-Funktion
:p.
Die komplementäre Error-Funktion erfc(x)
.br
:artwork name='e:\rexx\vv\kzrbitmap\erfc.bmp'.
.br
kann im Bereich -∞ < x < +∞
.br
mit einer Genauigkeit
.br
von maximal 50 Dezimalstellen
.br
berechet werden.
:p.
.* Ende
:h2 res=10033.Modulo-Funktion
:p.
Die Modulo-Funktion wird häufig mit der divrest-Funktion von kzr (in einer REXX-Datei das Doppelsymbol //)
.br
verwechselt. Sie ist nicht identisch mit der divrest-Funktion von kzr , wenn u und v unterschiedliche Vorzeichen
.br
haben.
.br
Hier ein Beispiel mit u = -235
.br
und v = 17:
:p.
mod(u, v) = 3
:p.
u divrest v = -14
:p.
Die Modulo-Funktion ist folgendermaßen definiert
.br
(Siehe [6], Seite XV, oben):
:p.
x = u mod(v) bedeutet: x = m*v + u
:p.
mit x, m, und u aus der Menge der ganzen Zahlen
.br
···-3,-2,-1, 0, +1, +2, +3,···
.br
und v aus der Menge der natürlichen Zahlen 0, 1, 2, 3,···,
.br
mit Ausnahme der Null.
:p.
Die Funktion x = m*v + u
:p.
ist unendlich vieldeutig. Daher hat man den am dichtesten bei Null liegenden Wert als eine Art "Hauptwert" festgelegt.
:p.
Die Funktion u mod(v) ist in der Form mod(u,v) programmiert; sie liefert als Ergebnis den "Hauptwert".
:p.
.* Ende
:h2 res=10034.Kleinster gemeinsamer Teiler
:p.
Um den kleinsten gemeinsamen Teiler
.br
zweier Zahlen u und v zu ermitteln,
.br
wird der bekannte Algorithmus von
.br
Euclid verwendet.
:p.
Siehe hierzu die Seiten 28 oder 33
.br
in [7].
:p.
.* Ende
:h2 res=10035.pi()
:p.
Die Konstante π = pi() = 3.14159....
.br
kann mit fast beliebiger Genauigkeit
.br
berechet werden.
:p.
.* Ende
:h2 res=10036.e()
:p.
Die Konstante e = e() = 2.71828.....
.br
kann mit fast beliebiger Genauigkeit
.br
berechet werden.
:p.
.* Ende
:euserdoc.