home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
kmpl9803.zip
/
kmpl.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1998-03-14
|
35KB
|
416 lines
ΓòÉΓòÉΓòÉ 1. Allgemeines ΓòÉΓòÉΓòÉ
!!! kmpl.CMD !!!
(FБr die OS/2-Kommandozeile)
Zweite Version vom MДrz 1998
kmpl.CMD ist ein auf der OS/2-Kommandozeile sowohl unter dem klassischen REXX
als auch unter Object REXX anwendbarer REXX-Rechner fБr kompexe Zahlen fБr die
folgenden elementaren Rechenoperationen:
Rechenoperation Kommandozeilen-
Operator
Addition (+)
Subtraktion (-)
Multiplikation (*)
Division (/)
Potenzierung (# fБr ^)
Da das Symbol ^ fБr den Potenzierungs-Operator Бber die OS/2-Kommandozeile
nicht eingegeben werden kann, muс stellvertretend das Symbol # eingegeben
werden, das dann intern fБr die geeignete Bildschirm-Anzeige in das Symbol ^
umgewandelt wird.
Der durch das Symbol # einzugebende Potenzierungs-Operator ^, der als
Exponenten auch eine komplexe Zahl zulДсt, ist nur auf der ersten
Bildschirm-Anzeige von kmpl.CMD verfБgbar.
Die Rechengenauigkeit ist einstellbar und kann bis zu 54 Dezimalstellen hinter
hinter dem Dezimalpunkt betragen; die Anzeige ist exponentiell.
kmpl.CMD 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 mit zwei komplexen Zahlen eine Rechenaufgabe
mit den oben erklДrten Rechenoperationen ausfБhren mФchte.
Das Ergebnis einer dieser Rechenoperationen kann man sehr bequem als das (im
allgemeinen) komplexe Argument einer oder mehrerer von derzeit (Stand MДrz
1998) dreizehn Mathematischen Funktionen Funktionen verwenden.
Auсerdem beansprucht die "Kernfunktion" kmpl.CMD nur etwa 45 Kilobyte und die
Hilfs-Startfunktion kmplStart.CMD weniger als 1 Kilobyte auf der Festplatte.
Hinzu kommen fБr jede der acht mathematischen Funktionen (0_arctan.cmd,
0_cos.cmd, 0_cosh.cmd, 0_exp.cmd, 0_ln.cmd, 0_sin.cmd, 0_sinh.cmd, und
0_sqrt.cmd) jeweils etwa 0.6 bis 2 Kilobyte hinzu.
Auf die acht mathematischen Funktionen kann man von der OS/2-Kommandozeile
nicht zugreifen; sie werden intern fБr die hier speziell definierten
Rechenoperationen mit komplexen Zahlen gebraucht.
Allerdings werden zusДtzlich fast 70 Kilobyte fБr Daten in erweiterten
Attributen belegt.
kmpl.CMD und kmplStrt.CMD sowie die REXX-Dateien fБr die mathematischen
Funktionen (0_arctan.cmd, 0_cos.cmd, 0_cosh.cmd, 0_exp.cmd, 0_ln.cmd,
0_sin.cmd, 0_sinh.cmd, und 0_sqrt.cmd) sind "Cardware".
kmpl.CMD ist zwar von der OS/2-Kommandozeile aus anzuwenden, aber im Gegensatz
zu kzr.CMD (im Internet als kzr1297.ZIP verfБgbar) kein echter
Kommandozeilen-Rechner, da kmpl.CMD eine Eingabemaske fБr die komplexen Zahlen
bereitstellt.
FБr eine spДtere Version von kmpl.CMD versuche ich eine Zerlegungs-Prozedur zu
entwerfen, die in der Lage ist, Eingabeketten und deren Teil-Strings, die
komplexe Zahlen enthalten, so zu zerlegen, daс deren Real- und ImaginДrteile
sicher erkannt werden. Dann wДre es vielleicht mФglich, einen
Kommandozeilen-Rechner fБr komplexe Zahlen zu entwerfen.
Ъber eine Nachricht (auch Fax oder e-mail), daс dieser REXX-Rechner fБr
komplexe Zahlen auch angewendet wird, wБrde ich mich freuen.
Auch Mitteilungen Бber gefundene Fehler sind jederzeit willkommen.
Diese INF-Datei wurde erstellt mit Hilfe von Phelsuma/2, Version 1.31 vom
01.02.1997, 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
MДrz 1998,
Hermann Mahr
Kafkastraсe 14
64291 Darmstadt
Telefon: 06151 373802
Telefax: 06151 373805 (von 09.00 Uhr bis 22.00 Uhr)
Internet: Hermann.Mahr@t-online.de
ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
Die Installation des
REXX-Rechners kmpl.CMD fБr komplexe Zahlen
geschieht dadurch, daс man die Dateien
kmpl.CMD, kmpl.INF, und
kmplStrt.CMD
und die acht mathematischen Funktionen
0_arctan.CMD, 0_cos.CMD,
0_cosh.CMD, 0_exp.CMD, 0_ln.CMD,
0_sin.CMD, 0_sinh.CMD und
0_sqrt.CMD
in ein gemeinsames Verzeichnis kopiert, das Бber den Pfad erreichbar ist.
Wer den durch die CONFIG.SYS einzustellenden Pfad nicht mit dem Verzeichnis
belasten will, in das die vorstehend genannten Dateien hineinkopiert worden
sind, der kann zum Aufruf der kmpl.CMD die dem Programm beigefБgte Stapeldatei
kmplStrt.CMD verwenden.
Diese Stapeldatei muс zunДchst die fБr kmpl.CMD erforderliche Umgebung setzen
und anschlieсend die kmpl.CMD starten.
Der Anwender muс nur, bevor er die Stapeldatei kmplStrt.CMD verwendet, den
vollen Namen des Verzeichnisses, in das alle zu kmpl.CMD gehФrenden Dateien
hineinkopiert worden sind, eintragen.
In der Stapeldatei kmplStrt.CMD erlДutern die Zeilen Nr. 6 bis Nr. 11
einen Eintrag, der in der Zeile Nr. 12 korrigiert werden muс.
Sind zum Beispiel alle zu KMPL gehФrenden Dateien in das Verzeichnis
E:\REXX\KMPL
hineinkopiert worden, so muс die Zeile Nr. 12 der Stapeldatei kmplStrt.CMD wie
folgt
kmplpath="E:\REXX\KMPL;"
aussehen. Das Semikolon am Ende dieser Pfadangabe ist wichtig !
Der Aufruf von kmplStrt.CMD muс dann mit dem vollen absoluten Pfad erfolgen,
also mit
E:\REXX\KMPL\kmplStrt.CMD
im vorliegenden Beispiel.
Ist das Verzeichnis fБr KMPL beim Aufruf von kmpl.CMD das aktuelle
Verzeichnis, so wird die Stapeldatei kmplStrt.CMD nicht gebraucht; man kann
die kmpl.cmd direkt aufrufen.
Da die Ausgaben von kmpl.CMD farbig erfolgen sollen, ist es erforderlich, daс
ANSI aktiviert ist, was eigentlich die default-Einstellung sein sollte. Die
Eingabe ANSI auf der OS/2-Kommandozeile zeigt an, ob ANSI aktiv ist. Wenn
nicht, genБgt es, dort ANSI ON einzugeben.
Die Anwendung des kmpl.CMD erfolgt natБrlich von der OS/2-Kommandozeile aus.
ΓòÉΓòÉΓòÉ 3. Anwendung ΓòÉΓòÉΓòÉ
Die
Anwendung
der kmpl.CMD ist denkbar einfach:
FБr den Aufruf von kmpl.CMD aus demjenigen Verzeichnis, in dem sich alle zu
kmpl.CMD gehФrenden Dateien befinden, so gibt man dort den String kmpl ein und
betДtigt die Eingabetaste.
(FБr den Aufruf von einer Kommandozeile aus einem beliebigen Verzeichnis,
siehe den Abschnitt Installation)
Es erscheint nun eine Eingabe-Aufforderung fБr den Realteil Re1 und den
ImaginДrteil Im1 der ersten von zwei komplexen Zahlen.
Nach Eingabe von Re1 und Im1 erscheint eine Eingabe-Aufforderung fБr den
Realteil Re2 und den ImaginДrteil Im2 der zweiten von zwei komplexen Zahlen.
Nach Eingabe von Re2 und Im2 erscheint die Aufforderung, den gewБnschten
Operator (+,-,*,/ ode # fБr ^) fБr die gewБnschte elementare arithmetische
Operation einzugeben.
Anschlieсend muс noch eine Zahl zwischen 4 und 54 fБr die gewБnschte
Genauigkeit des Ergebnisses eingegeben werde.
Danach gibt es die MФglichkeit, jede der sechs eingegebenen Positionen zu
korrigieren.
Ist alles korrekt eingegeben worden, einfach die Eingabetaste drБcken.
Zwei Beispiele:
Werden die Werte Re1=2, Im1=3, Re2=4, Im2=5, als Operator das Symbol / fБr
Division und 9 als die Anzahl der gewБnschten Dezimalstellen eingegeben, so
erscheint als Ergebnis der Rechenaufgabe
Re + i*Im = (Re1 + i*Im1)/(Re2 + i*Im2)
mit
Re = 5.609756098E-1
Im = 4.878048780E-2
Werden die Werte Re1=2, Im1=3, Re2=4, Im2=5, als Operator das Symbol # fБr
Potenzierung und 9 als die Anzahl der gewБnschten Dezimalstellen eingegeben,
so erscheint als Ergebnis der Rechenaufgabe
Re + i*Im = (Re1 + i*Im1)^(Re2 + i*Im2)
mit
Re = -7.530458367E-1
Im = -9.864287886E-1
| Anmerkung: |
Will man nicht das Ergebnis einer elementare Rechenoperation (+,
-, *, /, oder # fБr ^) als komplexes Funktionsargument
verwenden, sondern eine bestimmte komplexe Zahl direkt, ohne daс
erst gerechnet werden muс, so gehe man wie folgt vor.
Man gibt man Real- und ImaginДrteil der komplexen Zahl, die das
Funktionsargument sein soll, beispielsweise als Re1 und Im1
ein und setzt Re2 und Im2 gleich Null. (Man kann natБrlich
auch Re1 und Im1 gleich Null setzen und fБr Re2 und Im2
die entsprechenden Zahlenwerte eingeben.)
Der Operator muс + sein und die erforderliche Genauigkeit
mindstens so groс wie die der fБr Re1 und Im1 eingegebenen
Zahlenwerte. Alles weitere, wie weiter oben beschrieben.
Hat man Re1=1, Im1=2, Re2=0, Im2=0 und 6 als Anzahl der zu
verarbeitenden Dezimalstellen eingegeban, so erscheint als
Ergebnis:
(Re + i*Im)=(Re1 + i*Im1)+(Re2 + i*Im2)
Re=1.000000
Im=2.000000
| Ende der Anmerkung. |
Wenn nun das im allgemeinen komplexe Ergebnis (Re + i*Im) als Agument
einiger Funktionen zur Funktionsberechnung verwendet werden sollen, f oder F
eingeben und die Eingabetaste (oder auch nur diese) drБcken, sonst v eingeben,
wenn das Programm verlassen werden soll.
Sollen in einer neuen Berechnung andere Werte Re1, Im1, Re2, Im2 verwendet
werden, so ist a oder A einzugeben und die Eingabetaste zu drБcken.
Im nДchsten Bild erscheinen | Re | und | Im | des zuvor berechneten
Ergebnisses nochmals, und zwar links am oberen Bildschirmrand.
Darunter maximal sind 19 (derzeit aber nur 13 implementierte) Funktionen
wДhlbar. Mit Ausnahme der Positionen (3) und (5) werden Real- und ImaginДrteil
des berechneten komplexen Funktionsergebnisses sofort angezeigt. Es wird
gefragt, ob eine weitere Funktion der gleichen am oberen Bildschirmrand
abgebildeten komplexen Zahl berechnet werden soll.
Die Funktionen z = (Re + i*Im)^y, Nr. (3), und z=b^(Re + i*Im), Nr. (5),
erfordern noch die Eingabe des Exponenten y beziehungsweise der Basis b.
Hierbei dБrfen die GrФсen y und b elementare algebraische AusdrБcke sein.
So sind also zum Beispiel AusdrБcke
1/17 - 23/47
oder auch
1/02**3+161/197
sowohl fБr y als auch fБr b erlaubt.
In dem Ausdruck 16.1/02**3+161/197 wird intern der in REXX gБltige Operator
** fБr die Potenzierung mit ganzen reellen Exponenten verwendet.
Das Symbol # dagegen, das, | auf dem ersten Bildschirm | eingegeben, intern
einen speziellen Potenzierungs-Operator, der auch komplexe Exponenten zulДсt,
aktivieren kann, ist | auf dem zweiten Bildschirm | weder im Exponenten y noch
in der Basis b wirksam.
ΓòÉΓòÉΓòÉ 4. Mathematische Funktionen ΓòÉΓòÉΓòÉ
FБr die folgenden mathematischen Funktionen kФnnen fБr komplexe Argumente die
komplexen Funktionswerte berechnet werden.
Potenzfunktion (Re + i*Im)^y
Exponentialfunktion exp(Re + i*Im)
Potenzfunktion b^(Re + i*Im)
NatБrlicher Logarithmus ln(Re + i*Im)
Logarithmus zur Basis 10 log(Re + i*Im)
Sinusfunktion sin(Re + i*Im)
Cosinusfunktion cos(Re + i*Im)
Tangensfunktion tan(Re + i*Im)
Cotangensfunktion cot(Re + i*Im)
Hyperbolische Sinusfunktion sinh(Re + i*Im)
Hyperbolische Cosinusfunktion cosh(Re + i*Im)
Hyperbolische Tangensfunktion tanh(Re + i*Im)
Hyperbolische Cotangensfunktion coth(Re + i*Im)
Da einige Funktionen, deren Argument komplex ist, mehrdeutig sind, kann man
bei solchen mehrdeutigen Funktionen die mit diesem Programm berechneten
Funktionswerte als die sogenannten Hauptwerte dieser Funktionen betrachten.
Literatur
[1] I. S. GRADSHTEYN and I. M. RYZHIK
 Table of Integrals, Series and Products 
ACADEMIC PRESS New York and London 1965
[2] Milton Abramowitz & Irene A. Stegun
 Handbook of Mathematical Functions 
DOVER PUBLICATIONS, INC., NEW YORK 1970
[3] JEROME SPANIER and KEITH B. OLDHAM
 AN ATLAS OF FUNCTIONS 
HEMISPHERE PUBLISHING CORPORATION, Washington New York London 1987;
ebenfalls: Springer-Verlag Berlin
[4] I. N. BRONSTEIN und K. A. SEMENDJAJEW
 TASCHENBUCH DER MATHEMATIK 
Verlag Harri Deutsch, Thun und Frankfurt, 19. Auflage 1980
ΓòÉΓòÉΓòÉ 5. Anhang ΓòÉΓòÉΓòÉ
In diesem Anhang werden
ΓòÉΓòÉΓòÉ 5.1. (Re + i*Im)_hoch_y ΓòÉΓòÉΓòÉ
Die Funktion (Re + i*Im)^y kann
im Inhaltsverzeichnis nur in der Form
(Re + i*Im)_hoch_y
dargestellt werden.
ΓòÉΓòÉΓòÉ 5.2. exp(Re + i*Im) ΓòÉΓòÉΓòÉ
FБr die Funktion exp(Re + i*Im) gilt:
ΓòÉΓòÉΓòÉ 5.3. b_hoch_(Re + i*Im) ΓòÉΓòÉΓòÉ
Die Funktion b^(Re + i*Im) kann im
Inhaltsverzeichnis nur in der Form
b_hoch_(Re + i*Im)
dargestellt werden.
Es ist
ΓòÉΓòÉΓòÉ 5.4. ln(Re + i*Im) ΓòÉΓòÉΓòÉ
ln(Re + i*Im)
ΓòÉΓòÉΓòÉ 5.5. log(Re + i*Im) ΓòÉΓòÉΓòÉ
log(Re + i*Im)
ΓòÉΓòÉΓòÉ 5.6. sin(Re + i*Im) ΓòÉΓòÉΓòÉ
z = sin(Re + i*Im)
z = sin(Re)*cosh(Im) + i*cos(Re)*sinh(Im)
ΓòÉΓòÉΓòÉ 5.7. cos(Re + i*Im) ΓòÉΓòÉΓòÉ
z = cos(Re + i*Im)
z = cos(Re)*cosh(Im) - i*sin(Re)*sinh(Im)
ΓòÉΓòÉΓòÉ 5.8. tan(Re + i*Im) ΓòÉΓòÉΓòÉ
z = tan(Re + i*Im)
sin(2*Re) + i*sinh(2*Im)
z = ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
cos(2*Re) + cosh(2*Im)
ΓòÉΓòÉΓòÉ 5.9. cot(Re + i*Im) ΓòÉΓòÉΓòÉ
cot(Re + i*Im)
sin(2*Re) - i*sinh(2*Im)
z = ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
cosh(2*Im) - cos(2*Re)
ΓòÉΓòÉΓòÉ 5.10. sinh(Re + i*Im) ΓòÉΓòÉΓòÉ
z = sinh(Re + i*Im)
z = sinh(Re)*cos(Im) + i*cosh(Re)*sin(Im)
ΓòÉΓòÉΓòÉ 5.11. cosh(Re + i*Im) ΓòÉΓòÉΓòÉ
z = cosh(Re + i*Im)
z = cosh(Re)*cos(Im) + i*sinh(Re)*sin(Im)
ΓòÉΓòÉΓòÉ 5.12. tanh(Re + i*Im) ΓòÉΓòÉΓòÉ
z =tanh(Re + i*Im)
sinh(2*Re) + i*sin(2*Im)
z = ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
cosh(2*Re) + cos(2*Im)
ΓòÉΓòÉΓòÉ 5.13. coth(Re + i*Im) ΓòÉΓòÉΓòÉ
z = coth(Re + i*Im)
sinh(2*Re) - i*sin(2*Im)
z = ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
cosh(2*Re) - cos(2*Im)