Complex Library / Referenz

 Omikron Basic im Internet: http://www.berkhan.de

Allgemeines -blättern- Inhaltsverzeichnis





2. Complex Library Referenz

2.1 An- und Abmelden der Library
2.2 Funktionen zum Umwandeln zwischen reellem und komplexem Format
2.3 Eingabefunktionen
2.4 Ausgabefunktionen
2.5 Grundrechenarten
2.6 Wichtige nichtanalytische Funktionen
2.7 Transzendente Funktionen
2.8 Polynom-Funktionen
2.9 Matrix-Funktionen
2.10 Komplexes Kurvenintegral




In diesem Kapitel werden alle Funktionen und Prozeduren der Library beschrieben. Der theoretische Hintergrund der einzelnen Prozeduren kann hier natürlich nicht erklärt werden. Sie müssen sich schon mit der Theorie der komplexen Zahlen auskennen, um die Library sinnvoll nutzen zu können.




2.1 An- und Abmelden der Library
 
Cinit
Rufen Sie diese Prozedur zu Beginn Ihres Programms einmal auf. Vorher kann die Complex Library nicht benutzt werden.
Wichtig: Diese Prozedur verändert die DATA-Zeiger. Wenn Sie also Ihre eigenen Daten einlesen wollen nachdem Sie Cinit aufgerufen haben, müssen Sie vorher den DATA-Zeiger mit RESTORE auf die gewünschten Daten setzen.
 
 
Cexit
Rufen Sie diese Prozedur am Ende Ihres Programms einmal auf. Danach können Sie die Complex Library nicht mehr benutzen.
 
 
Complex
Es wird nur eine Copyright-Meldung der Complex Library ausgegeben.
 
 





2.2 Funktionen zum Umwandeln zwischen reellem und komplexem Format
 
FN Cmplx$(Real#,Imag#)
Real# Realteil der complexen Zahl.
Imag# Imaginärteil der complexen Zahl.
Die Funktion liefert einen String zurück, der die komplexe Zahl darstellt.
 
 
FN Re#(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den Realteil der komplexen Zahl Z$ als reelle Zahl zurück.
 
 
FN Im#(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den Imaginärteil der komplexen Zahl Z$ als reelle Zahl zurück.
Beispiel:
PRINT "Der Imaginärteil der Zahl ist: ";FN Im#(Z$)
 
 
FN Re$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den Realteil der komplexen Zahl Z$ als komplexe Zahl zurück.
 
 
FN Im$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den Imaginärteil der komplexen Zahl Z$ als komplexe Zahl zurück.
 
 





2.3 Eingabefunktionen
 
Cinput(T$,R Z$)
T$ Dieser String wird zunächst auf dem Bildschirm ausgegeben. Ist T$ leer, so erfolgt die Abfrage mit "x+iy=? ".
Z$ Enthält nach der Rückkehr die eingegebene komplexe Zahl.
Diese Prozedur dient zur Eingabe von komplexen Zahlen auf dem Bildschirm. Es werden zwei durch Kommata getrennte reelle Zahlen erwartet; zuerst der Realteil, dann der Imaginärteil. Die Eingabe muß mit [Return] abgeschlossen werden.
 
 
Cread(R Z$)
Z$ Enthält nach der Rückkehr die eingelesene komplexe Zahl.
Diese Prozedur dient zum Einlesen komplexer Zahlen aus DATA-Zeilen. Die komplexen Zahlen müssen als je zwei Fließkommazahlen (Realteil, Imaginärteil) in den DATA-Zeilen abgelegt sein.
Beispiel:
Die Zahl
0.3,0.7i soll aus DATA-Zeilen eingelesen werden:

Cinit
RESTORE Cdaten
Cread A$
'
'Hier wird A$ von Ihrem Programm verarbeitet.
'
INPUT "Ende mit [Return]";Dummy
Cexit
END
-Cdaten
DATA 0.3,0.7
 
 
Cmat_Read(&A$(,),M,N)
A$(0:M,0:N) In dieses Feld werden die komplexen Zahlen eingelesen.
M Dimension der Zeilen.
N Dimension der Spalten.
Diese Prozedur liest eine ganze Matrix mit den Dimensionen (M,N) aus DATA-Zeilen ein. Die komplexen Zahlen müssen als je zwei Fließkommazahlen (Realteil, Imaginärteil) in den DATA-Zeilen abgelegt sein.
Es werden zunächst alle Elemente der nullten Zeile, dann die Elemente der ersten Zeile usw. eingelesen.
Beispiel:
Die Matrix
Demo$(2,1) soll eingelesen werden:

Cinit
RESTORE Demo_Daten
DIM Demo$(1,2)
Cmat_Read &Demo$(,),1,2
'
'Hier wird Demo$(,) von Ihrem Programm 'verarbeitet.
'
INPUT "Ende mit [Return]";Dummy
Cexit
END
-Demo_Daten
DATA 3,7,1,-1,5,6.7:'Elemente der nullten Zeile.
DATA 1.3,2,-7.3,4,5,6:'Elemente der ersten Zeile.
 
 
Cpoly_Read(&A$(),N)
A$(0:N) In dieses Feld werden die komplexen Polynom-Koeffizienten eingelesen.
N Grad des Polynoms (höchste Potenz).
Dieses Feld dient zum Einlesen der Koeffizienten eines komplexen Polynoms. Der Grad des Polynoms (höchste Potenz) wird durch den Parameter N angegeben. Zuerst wird der Koeffizient für Z^0 eingelesen, dann der für Z^1 usw.. Sie müssen natürlich vorher mit RESTORE den DATA-Zeiger auf die gewünschten Daten setzen.
Beispiel:
Ein Beispiel finden Sie bei
Cpoly_Add.
 
 
Cinput_File(Handle,R Z$)
Handle Das ist die logische Dateinummer, die bei OPEN angegeben wurde (1 bis 16).
Z$ Enthält nach der Rückkehr die eingelesene komplexe Zahl.
Mit dieser Prozedur kann eine komplexe Zahl aus einer zuvor mit OPEN "I" geöffneten Datei gelesen werden. Die Zahl muß zuvor mit Cwrite_File gespeichert worden sein.
Beispiel:
Einladen von 10 komplexen Zahlen in das Feld
C$(0:9). Die Datei "Complex.DAT" muß natürlich vorher angelgt worden sein:

Cinit
DIM C$(9)
OPEN "I",3,FN Get_Fsspec$(0,0,"Complex.DAT")
FOR I=0 TO 9
 Cinput_File 3,C$(I)
NEXT I
'
'Hier wird Demo$(,) von Ihrem Programm 'verarbeitet.
'
CLOSE 3
INPUT "Ende mit [Return]";Dummy
Cexit
END
 
 






2.4 Ausgabefunktionen
 
Cwrite_File(Handle,Z$)
Handle Das ist die logische Dateinummer, die bei OPEN angegeben wurde (1 bis 16).
Z$ Muß die komplexe Zahl enthalten, die geschrieben werden soll.
Es wird eine komplexe Zahl in eine Datei geschrieben. Die Datei muß zuvor mit OPEN "O" oder OPEN "A" geöffnet worden sein.
Beispiel:
Das Beispiel zeigt, wie man eine Zahl
Z$ mit der Complex Library abspeichert und mit Cinput_File wieder einliest:

Cinit
OPEN "O",1,FN Get_Fsspec$(0,0,"Demo.DAT")
Z$=FN Cmplx$(5.5,-3.14)
Cwrite_File 1,Z$
CLOSE 1
OPEN "I",1,FN Get_Fsspec$(0,0,"Demo.DAT")
Cinput_File 1,X$

Cprint X$
CLOSE 1
INPUT "Ende mit [Return]";Dummy
Cexit
END
 
 
Cprint(Z$)
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur unformatierten Ausgabe einer komplexen Zahl in der Form " Re+iIm". Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 
Cprint_(Z$)
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur unformatierten Ausgabe einer komplexen Zahl in der Form " Re+iIm". Nach der Ausgabe steht der Schreibzeiger direkt hinter der ausgegebenen Zahl.
 
 
Cprint(T$,Z$)
T$ In dieser Variablen kann ein Text übergeben werden, der vor der komplexen Zahl ausgegeben wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur unformatierten Ausgabe einer komplexen Zahl in der Form " Re+iIm" mit vorangestelltem Text. Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 
Cprint_(T$,Z$)
T$ In dieser Variablen kann ein Text übergeben werden, der vor der komplexen Zahl ausgegeben wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur unformatierten Ausgabe einer komplexen Zahl in der Form " Re+iIm" mit vorangestelltem Text. Nach der Ausgabe steht der Schreibzeiger direkt hinter der ausgegebenen Zahl.
 
 
Cprint_Using(F$,Z$)
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahl verwendet wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur formatierten Ausgabe einer komplexen Zahl. Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 
Cprint_Using_(F$,Z$)
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahl verwendet wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur formatierten Ausgabe einer komplexen Zahl. Nach der Ausgabe steht der Schreibzeiger direkt hinter der ausgegebenen Zahl.
 
 
Cprint_Using(T$,F$,Z$)
T$ In dieser Variablen kann ein Text übergeben werden, der vor der komplexen Zahl ausgegeben wird.
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahl verwendet wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur formatierten Ausgabe einer komplexen Zahl mit vorangestelltem Text. Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 
Cprint_Using_(T$,F$,Z$)
T$ In dieser Variablen kann ein Text übergeben werden, der vor der komplexen Zahl ausgegeben wird.
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahl verwendet wird.
Z$ Muß die komplexe Zahl enthalten, die ausgegeben werden soll.
Diese Prozedur dient zur formatierten Ausgabe einer komplexen Zahl mit vorangestelltem Text. Nach der Ausgabe steht der Schreibzeiger direkt hinter der ausgegebenen Zahl.
 
 
Cmat_Print_Using(F$,&A$(,),M,N)
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahlen verwendet wird.
A$(0:M,0:N) Dieses Feld muß die komplexen Elemente der Matrix enthalten, die ausgegeben werden soll.
M Dimension der Zeilen.
N Dimension der Spalten.
Diese Prozedur dient zur formatierten Ausgabe einer Matrix aus komplexen Zahlen. Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 
Cpoly_Print_Using(F$,&A$(),N)
F$ In dieser Variablen kann ein Format-String wie bei PRINT USING übergeben werden, der dann für die Formatierung der komplexen Zahlen verwendet wird.
A$(0:N) Dieses Feld muß die komplexen Koeffizienten des Polynoms enthalten, das ausgegeben werden soll.
N Grad des Polynoms (höchste Potenz).
Diese Prozedur dient zur formatierten Ausgabe eines komplexen Polynoms. Nach der Ausgabe steht der Schreibzeiger am Anfang der nächsten Zeile.
 
 






2.5 Grundrechenarten
 
FN Cadd$(Z1$,Z2$)
Z1$ Komplexe Zahl.
Z2$ Komplexe Zahl.
Die Funktion gibt die Summe der beiden Zahlen zurück (Z1$+Z2$).
 
 
FN Csub$(Z1$,Z2$)
Z1$ Komplexe Zahl.
Z2$ Komplexe Zahl.
Die Funktion gibt die Differenz der beiden Zahlen zurück (Z1$-Z2$).
 
 
FN Cmul$(Z1$,Z2$)
Z1$ Komplexe Zahl.
Z2$ Komplexe Zahl.
Die Funktion gibt das Produkt der beiden Zahlen zurück (Z1$*Z2$).
 
 
FN Cdiv$(Z1$,Z2$)
Z1$ Komplexe Zahl.
Z2$ Komplexe Zahl.
Die Funktion gibt den Quotienten der beiden Zahlen zurück (Z1$/Z2$).
 
 
FN Rmul$(Re#,Z$)
Re# Reelle Zahl.
Z$ Komplexe Zahl.
Die Funktion gibt das Produkt der beiden Zahlen zurück (Re#*Z$).
 
 
FN Rdiv$(Z$,Re#)
Z$ Komplexe Zahl.
Re# Reelle Zahl.
Die Funktion gibt den Quotienten der beiden Zahlen zurück (Z$/R#).
 
 
FN Imul$(Im#,Z$)
Im# Imaginäre Zahl.
Z$ Komplexe Zahl.
Die Funktion gibt das Produkt der beiden Zahlen zurück (Im#*Z$).
 
 
FN Idiv$(Z$,Im#)
Z$ Komplexe Zahl.
Im# Imaginäre Zahl.
Die Funktion gibt den Quotienten der beiden Zahlen zurück (Z$/Im#).
 
 
FN Cmul_I$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt das Produkt aus der komplexen Zahl und i zurück (i*Z$).
 
 
FN Cdiv_I$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den Qutienten aus der komplexen Zahl und i zurück (Z$/i).
 
 
FN Cch_S$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den negativen Wert der komplexen Zahl zurück (-Z$).
 
 




2.6 Wichtige nichtanalytische Funktionen
 
FN Cconj$(Z$)
Z$ Komplexe Zahl.
Die Funktion gibt den komplex-konjugierten Wert der komplexen Zahl zurück.
 
 
FN Cabs$(Z$)
Z$ Komplexe Zahl.
Die Funktion berechnet den Betrag der komplexen Zahl (SQR(Re^2+Im^2)). Das Ergebnis wird als komplexe Zahl zurückgegeben.
 
 
FN Cabs#(Z$)
Z$ Komplexe Zahl.
Die Funktion berechnet den Betrag der komplexen Zahl (SQR(Re^2+Im^2)). Das Ergebnis wird als reelle Zahl zurückgegeben.
 
 
FN Cabs_Sqrd$(Z$)
Z$ Komplexe Zahl.
Die Funktion berechnet das Quadrat des Betrags der komplexen Zahl (Re^2+Im^2). Das Ergebnis wird als komplexe Zahl zurückgegeben. Die Funktion ist etwas schneller als FN Cabs$(Z$).
 
 
FN Cabs_Sqrd#(Z$)
Z$ Komplexe Zahl.
Die Funktion berechnet das Quadrat des Betrags der komplexen Zahl (Re^2+Im^2). Das Ergebnis wird als reelle Zahl zurückgegeben. Die Funktion ist etwas schneller als FN Cabs#(Z$).
 
 
Cart_To_Polar(Z$,R A#,R P#)
Z$ Komplexe Zahl.
A# Absoluter Betrag der komplexen Zahl Z$ (Abstand vom Ursprung).
P# Phase der komplexen Zahl Z$ (Winkel mit der reellen Achse).
Die Prozedur berechnet Betrag und Phase der komplexen Zahl Z$. Der Wert der Phase ist abhängig vom eingestellten Winkelmodus (DEG bzw. RAD)
 
 
FN Polar_To_Cart$(A#,P#).
A# Absoluter Betrag einer komplexen Zahl (Abstand vom Ursprung).
P# Phase einer komplexen Zahl (Winkel mit der reellen Achse).
Wenn Sie dieser Funktion die Polarkoordinaten einer komplexen Zahl übergeben, erhalten Sie die Zahl als String zurück.
 
 





2.7 Transzendente Funktionen


Bei einigen der folgenden Funktionen sind Intervallgrenzen angegeben. Dabei bedeutet z.B. [100,200] das Intervall, das die Punkte 100 und 200 mit einschließt und [100,200[ einschließlich 100 aber ausschließlich 200.

Einige Funktionen (etwa der Logarithmus) kommen zweimal vor. Dies hängt damit zusammen, daß diese Funktionen erst durch einen Schnitt in der komplexen Ebene eindeutig bestimmt werden. Bei der Wahl dieses Schnitts hat man verschiedene Möglichkeiten, i.a. wählt man ihn so, daß sich die komplexe Funktion als maximale analytische Fortsetzung der entsprechenden reellen Funktion ergibt. Der so bestimmte Schnitt ist in der Complex Library mit dem Standardnamen, den auch die reelle Funktion hat, benannt. Wenn ein anderer Schnitt gewählt wurde, so ist das an der Extension "
_P" hinter dem Prozedur- oder Funktionsnamen zu erkennen. "_P" soll auf den Schnitt [0,INF] hinweisen (Positiv).
Als Benutzer wird man im allgemeinen die Hauptzweige wählen, also die Namen ohne Extension. Die Definition der Funktionen auf den Schnitten ist allerdings eine Frage derKonvention, und deswegen können sich die Implementierungen in der Complex Library von denen auf anderen Systemen unterscheiden.
 

FN Cexp$(Z$)
Z$ Komplexe Zahl.
Exponential-Funktion mit komplexem Argument zur Basis e.
 
 
FN Iexp$(Im#)
Im# Imaginäre Zahl.
Exponential-Funktion mit rein imaginärem Argument zur Basis e.
 
 
FN Rexp$(Re#)
Re# Reelle Zahl.
Exponential-Funktion mit rein reellem Argument zur Basis e.
 
 
FN Csin$(Z$)
Z$ Komplexe Zahl.
Sinus mit komplexem Argument.
 
 
FN Ccos$(Z$)
Z$ Komplexe Zahl.
Kosinus mit komplexem Argument.
 
 
FN Ctan$(Z$)
Z$ Komplexe Zahl.
Tangens mit komplexem Argument.
 
 
FN Ccot$(Z$)
Z$ Komplexe Zahl.
Kotangens mit komplexem Argument.
 
 
FN Csec$(Z$)
Z$ Komplexe Zahl.
Secans mit komplexem Argument.
 
 
FN Ccosec$(Z$)
Z$ Komplexe Zahl.
Kosecans mit komplexem Argument.
 
 
FN Csinh$(Z$)
Z$ Komplexe Zahl.
Sinus Hyperbolicus mit komplexem Argument.
 
 
FN Ccosh$(Z$)
Z$ Komplexe Zahl.
Kosinus Hyperbolicus mit komplexem Argument.
 
 
FN Ctanh$(Z$)
Z$ Komplexe Zahl.
Tangens Hyperbolicus mit komplexem Argument.
 
 
FN Ccoth$(Z$)
Z$ Komplexe Zahl.
Kotangens Hyperbolicus mit komplexem Argument.
 
 
FN Csech$(Z$)
Z$ Komplexe Zahl.
Secans Hyperbolicus mit komplexem Argument.
 
 
FN Ccosech$(Z$)
Z$ Komplexe Zahl.
Kosecans Hyperbolicus mit komplexem Argument.
 
 
FN Cln$(Z$)
Z$ Komplexe Zahl.
Hauptzweig des natürlichen Logarithmus mit Schnitt [-INF,0]
 
 
FN Cln_P$(Z$)
Z$ Komplexe Zahl.
Natürlicher Logarithmus mit Schnitt [0,+INF]
 
 
FN Casin$(Z$)
Z$ Komplexe Zahl.
Arcus Sinus mit Schnitt [-INF,-1[ und ]1,+INF]
 
 
FN Cacos$(Z$)
Z$ Komplexe Zahl.
Arcus Cosinus mit Schnitt [-INF,-1[ und ]1,+INF]
 
 
FN Catan$(Z$)
Z$ Komplexe Zahl.
Arcus Tangens mit Schnitt und [-INF*i,-i[ und ]i,INF*i]
 
 
FN Cacot$(Z$)
Z$ Komplexe Zahl.
Arcus Kotangens mit Schnitt [-i,i]
 
 
FN Casinh$(Z$)
Z$ Komplexe Zahl.
Area Sinus Hyperbolicus mit Schnitt [-INF*i,-i] und [i,INF*i]
 
 
FN Cacosh$(Z$)
Z$ Komplexe Zahl.
Area Kosinus Hyperbolicus mit Schnitt [-INF,1]
 
 
FN Catanh$(Z$)
Z$ Komplexe Zahl.
Area Tangens Hyperbolicus mit Schnitt [-INF,-1] und [1,INF]
 
 
FN Cacoth$(Z$)
Z$ Komplexe Zahl.
Area Cotangens Hyperbolicus mit Schnitt [-1,1]
 
 
FN Crecp$(Z$)
Z$ Komplexe Zahl.
Reziprokwert (1/Z$).
 
 
FN Crecp2$(Z$,A$)
Z$ Komplexe Zahl.
A$ Komplexe Zahl um die der Wert Z$ verschoben werden soll.
Verschobener Reziprokwert (1/(Z$-A$)).
 
 
FN Csqr$(Z$)
Z$ Komplexe Zahl.
Die Quadratwurzel des Hauptzweigs, Schnitt [-INF,0]
 
 
FN Csqr_P$(Z$)
Z$ Komplexe Zahl.
Quadratwurzel, Schnitt [0,INF]
 
 
FN Csqrd$(Z$)
Z$ Komplexe Zahl.
Das Quadrat der komplexen Zahl Z$.
 
 
FN Rpower$(Z$,E#)
Z$ Komplexe Zahl.
E# Reeller Exponent.
Berechnet Z$^E#.
 
 
FN Cpower$(Z$,E$)
Z$ Komplexe Zahl.
E$ Komplexer Exponent.
Berechnet Z$^E$.
 
 
FN C1_P_Sqrd$(Z$)
Z$ Komplexe Zahl.
Berechnet 1+Z$^2.
 
 
FN C1_M_Sqrd$(Z$)
Z$ Komplexe Zahl.
Berechnet 1-Z$^2.
 
 
FN Cm1_P_Sqrd$(Z$)
Z$ Komplexe Zahl.
Berechnet -1+Z$^2.
 
 
FN Cm1_M_Sqrd$(Z$)
Z$ Komplexe Zahl.
Berechnet -1-Z$^2.
 
 
CFN C1_P_Sqrd$(Z$)
Z$ Komplexe Zahl.
Berechnet 1+Z$^2.
 
 
Croots(Z$,&A$(),N)
Z$ Komplexe Zahl.
A$(0:N) In dieses Feld werden die Wurzeln der komplexen Zahl Z$ eingetragen.
N Gibt den Grad der Wurzelberechnung an.
Berechnet die (N+1)-te Wurzel aus Z$. Weil eine komplexe Zahl genau N N-te Wurzeln hat, berechnet die Prozedur auch N Werte. Diese werden in dem Stringfeld A$() abgelegt, das mindestens auf N-1 dimensioniert sein muß.
Beispiel:
Als Beispiel sollen die 3-ten Wurzeln von -7 berechnet werden.


Cinit
DIM R$(2)
Z$=FN Cmplx$(-7,0)
Croots Z$,&R$(),2
Cprint R$(0):Cprint R$(1):Cprint R$(2)
INPUT "Ende mit [Return]";Dummy
Cexit
END
 
 





2.8 Polynom-Funktionen


Die Complex Library stellt diverse Funktionen bereit, die das Arbeiten mit Polynomen mit komplexen Koeffizienten vereinfachen. Ein solches Polynom ist durch seine Koeffizienten vollständig bestimmt, also durch eine Anzahl komplexer Zahlen (einen Vektor). In der Complex Library wird ein Polynom aus diesem Grund durch ein eindimensionales String-Array dargestellt. Dabei enthält das erste Element (also z.B.
Poly$(0)) den konstanten Koeffizienten, Poly$(N) den Koeffizienten von Z$^N.
 
Cpoly_Clear(&A$(),N)
A$(0:N) Komplexe Koeffizienten des Polynoms.
N Grad des Polynoms (höchste Potenz).
Nach der Dimensionierung enthalten die Elemente eines Stringfeldes Leerstrings und der Leerstring repräsentiert nicht die komplexe Null. Diese Prozedur setzt die Elemente des Feldes A$(0:N) auf komplexe Nullen.
Beispiel:
Wir wollen mit einem Polynom arbeiten, für das wir den Namen
Polynom$() gewählt haben. Die maximale Potenz, die in unserem Polynom vorkommt, sei Z$^15. Wir wollen das Polynom zunächst einrichten und auf Null setzen:

Cinit
DIM Polynom$(15)
Cpoly_Clear &Polynom$(),15
Cpoly_Print_Using "",&Polynom$(),15
INPUT "Ende mit [Return]";Dummy
Cexit
END
 
 
Cpoly_Equal(&A$(),&C$(),N)
A$(0:N) Komplexe Koeffizienten des Quell-Polynoms.
C$(0:N) Komplexe Koeffizienten des Ziel-Polynoms.
N Grad des Polynoms (höchste Potenz).
Diese Prozedur weist das Polynom A$(0:N) dem Polynom C$(0:N) zu. Sie entspricht also dem BASIC-Befehl C=A, nur daß hier ein ganzes Polynom zugewiesen wird und nicht nur eine einzelne Zahl.
 
 
Cpoly_Add(&A$(),&B$(),&C$(),M,N)
A$(0:M) Komplexe Koeffizienten des ersten Summanden.
B$(0:N) Komplexe Koeffizienten des zweiten Summanden.
C$(0:MAX(M,N)) Komplexe Koeffizienten des Summen-Polynoms.
M Grad des Polynoms A$() (höchste Potenz).
N Grad des Polynoms B$() (höchste Potenz).
Diese Prozedur addiert das Polynom A$() zum Polynom B$() und legt das Ergebnis in C$() ab (C$()=A$()+B$()). Das geschieht durch Aufaddieren der Koeffizienten gleicher Potenzen.
Beispiel:
Als Beispiel sollen die Polynome
Poly1$(0:3) und Poly2$(0:8) addiert und das Ergebnis in Poly3$() abgelegt werden:

Cinit
DIM Poly1$(3),Poly2$(8),Poly3$(8)
RESTORE Polynoms
Cpoly_Read &Poly1$(),3
Cpoly_Read &Poly2$(),8
Cpoly_Add &Poly1$(),&Poly2$(),&Poly3$(),3,8
Cpoly_Print_Using "",&Poly3$(),8
INPUT "Ende mit [Return]";Dummy
Cexit
END
-Polynoms
DATA 1.2,-1,7.5,-2,3.14,3,5.3,7.2
DATA -5.7,-22.13,1,2.5,7,-2.77,11.23,0.123,5.6
DATA 5.4,-2.2,1.3,2,7,-2.33,11.1,2.123,4.56
 
 
Cpoly_Sub(&A$(),&B$(),&C$(),M,N)
A$(0:M) Komplexe Koeffizienten des Summanden.
B$(0:N) Komplexe Koeffizienten des Subtrahenden.
C$(0:MAX(M,N)) Komplexe Koeffizienten des Differenz-Polynoms.
M Grad des Polynoms A$() (höchste Potenz).
N Grad des Polynoms B$() (höchste Potenz).
Diese Prozedur subtrahiert das Polynom B$() vom Polynom A$() und legt das Ergebnis in C$() ab (C$()=A$()-B$()). Das geschieht durch Subtraktion der Koeffizienten gleicher Potenzen.
 
 
Cpoly_Mul(&A$(),&B$(),&C$(),M,N)
A$(0:M) Komplexe Koeffizienten des Multiplikanden.
B$(0:N) Komplexe Koeffizienten des Multiplikators.
C$(0:M+N) Komplexe Koeffizienten des Produkt-Polynoms.
M Grad des Polynoms A$() (höchste Potenz).
N Grad des Polynoms B$() (höchste Potenz).
Diese Prozedur multipliziert das Polynom A$() mit dem Polynom B$() und legt das Ergebnis in C$() ab (C$()=A$()*B$()). Das geschieht durch komponentenweise Multiplikation mit anschließender Summation gleicher Potenzen.
 
 
Cpoly_S_Mul(&A$(),Z$,&C$(),N)
A$(0:N) Komplexe Koeffizienten des Multiplikanden.
Z$ Komplexe Zahl als Multiplikator.
C$(0:N) Komplexe Koeffizienten des Produkt-Polynoms.
N Grad des Polynoms A$() (höchste Potenz).
Diese Prozedur multipliziert das Polynom A$() mit der komplexen Zahl Z$ und legt das Ergebnis in C$() ab (C$()=A$()*Z$). Man bezeichnet diese Operation auch als skalare Multiplikation.
 
 
Cpoly_Div(&A$(),&B$(),&C$(),&D$(),L,M,R N,R O)
A$(0:L) Komplexe Koeffizienten des Dividenden.
B$(0:M) Komplexe Koeffizienten des Divisors.
C$(0:N) Komplexe Koeffizienten des Quotient-Polynoms.
D$(0:O) Komplexe Koeffizienten des Rest-Polynoms.
L Grad des Polynoms A$() (höchste Potenz).
M Grad des Polynoms B$() (höchste Potenz).
N Grad des Polynoms C$() (höchste Potenz).
O Grad des Polynoms D$() (höchste Potenz).
Diese Prozedur dividiert das Polynom A$() durch das Polynom B$() und legt das Ergebnis in C$() und den Rest der Division in D$() ab (C$()=A$()/B$() und D$()=A$() MOD B$()). Wenn O=0 ist, ist die Division aufgegangen.
 
 
Cpoly_S_Div(&A$(),Z$,&C$(),N)
A$(0:N) Komplexe Koeffizienten des Dividenden.
Z$ Komplexe Zahl als Divisor.
C$(0:N) Komplexe Koeffizienten des Quotient-Polynoms.
N Grad des Polynoms A$() (höchste Potenz).
Diese Prozedur dividiert das Polynom A$() durch eine komplexe Zahl Z$ und legt das Ergebnis in C$() ab (C$()=A$()/Z$). Man bezeichnet diese Operation auch als skalare Division.
 
 
FN Cpoly_Value$(&A$(),Z$,N)
A$(0:N) Komplexe Koeffizienten des Polynoms.
Z$ Komplexe Zahl.
N Grad des Polynoms A$() (höchste Potenz).
Diese Funktion berechnet den Funktionswert des Polynoms A$() an der Stelle Z$ und gibt das Ergebnis als komplexe Zahl zurück.
 
 
Cpoly_Zeros(&A$(),&C$(),N,R E,R E$)
A$(0:N) Komplexe Koeffizienten des Polynoms.
C$(0:N) In dieses Feld trägt die Prozedur die komplexen Nullstellen des Polynoms ein.
N Grad des Polynoms A$() (höchste Potenz).
E Diese Variable kann nach der Rückkehr folgende Werte enthalten:
E=0 : Kein Fehler
E=1 : Führender Koeffizient ist null.
E=2 : Nicht alle Nullstellen gefunden.
E$ Wenn ein Fehler aufgetreten ist, enthält diese String-Variable nach der Rückkehr einen der Fehlertexte aus dem vorherigen Feld, sonst wird ein Leerstring zurückgegeben.
Diese Prozedur berechnet die Nullstellen des Polynoms A$() und gibt das Ergebnis in C$() zurück.
Beispiel:
Als Beispiel wollen wir die Nullstellen des Polynoms

Z^3+(-3+i2)*Z^2+(-12-i12)*Z+30-i20

berechnen. Dazu werden zunächst zwei Felder dimensioniert, nämlich für die komplexen Koeffizienten und die Nullstellen. Danach werden die Koeffizienten in das Feld eingetragen. Wenn
Cpoly_Zeros keinen Fehler meldet, wird das Ergebnis auf dem Bildschirm dargestellt, ansonsten wird eine Fehlermeldung ausgegeben.
Cinit
DIM Poly$(3),Zeros$(2)
Poly$(0)=FN Cmplx$(30,-20):Poly$(1)=FN Cmplx$(-12,-12)
Poly$(2)=FN Cmplx$(-3,2):Poly$(3)=C_R$
Cpoly_Zeros &Poly$(0),&Zeros$(0),3,E,E$
IF E
 THEN PRINT "Fehler Nr:";E,E$
 ELSE PRINT "Nullstellen des Polynoms ";   
  PRINT "Z^3+(-3+i2)*Z^2+(-12-i12)*Z+30-i20"
  PRINT
  FOR I=0 TO 2
   PRINT I+1;". Nullstelle: ";:Cprint Zeros$(I)
  NEXT I
ENDIF
PRINT :INPUT "Beenden mit [Return]";E
Cexit
END
 
 





2.9 Matrix-Funktionen


Matrizen werden in der Complex Library durch 2-dimensionale String-Felder dargestellt. Eine Matrix beginnt beim Element (0,0). Die Matrix Z$ (3,3) ist also eine 4x4 Matrix und keine 3x3 Matrix!.
Wichtig ist auch, daß die Ergebnismatrix im allgemeinen NICHT mit einer der Argument-Matrizen identisch sein darf! Dies ist nur erlaubt, wenn es in einigen Ausnahmefällen explizit angegeben wird.
 

Cmat_Clear(&A$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Es werden alle Elemente der Matrix A$(,) aud null gesetzt.
Beispiel:
Als Beispiel soll die Matrix Z$(8,11) auf null gesetzt werden.

Cinit
DIM Z$(8,11)
Cmat_Clear &Z$(,),8,11
Cmat_Print_Using "",&Z$(,),8,11
INPUT "Ende mit [Return]";Dummy
Cexit
END
 
 
Cmat_Id(&A$(,),N)
A$(0:N,0:N) Die komplexen Elemente der Matrix.
N Höchste Zeilen- bzw. Spaltennummer (quadratische Matrix).
Diese Prozedur erzeugt aus A$(,) eine quadratische Einheitsmatrix. Es werden alle Elemente auf der Hauptdiagonalen auf eins und die restlichen auf null gesetzt.
 
 
Cmat_Equal(&A$(,),&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Quell-Matrix.
C$(0:M,0:N) Die komplexen Elemente der Ziel-Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Matrix A$(,) wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)). Die Prozedur kopiert also den Inhalt der Matrix A$(,) in die Matrix C$(,).
 
 
Cmat_Herm_Conj(&A$(,),&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Quell-Matrix.
C$(0:M,0:N) Die komplexen Elemente der hermitesch konjugierten Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Prozedur berechnet die hermitesch konjugierte Matrix zu A$(,) und weist das Ergebnis der Matrix C$(,) zu. Wenn A$(,) eine quadratische Matrix ist (N=M), darf A$(,) mit C$(,) übereinstimmen.
 
 
Cmat_Add(&A$(,),&B$(,),&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der ersten Summanden-Matrix.
B$(0:M,0:N) Die komplexen Elemente der zweiten Summanden-Matrix.
C$(0:M,0:N) Die komplexen Elemente der Summen-Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Matrix A$(,) wird zu der Matrix B$(,) addiert und das Ergebnis wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)+B$(,)). C$(,) darf mit A$(,) oder B$(,) übereinstimmen.
 
 
Cmat_Sub(&A$(,),&B$(,),&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Summanden-Matrix.
B$(0:M,0:N) Die komplexen Elemente der Subtrahenden-Matrix.
C$(0:M,0:N) Die komplexen Elemente der Differenz-Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Matrix B$(,) wird von der Matrix A$(,) subtrahiert und das Ergebnis wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)-B$(,)). C$(,) darf mit A$(,) oder B$(,) übereinstimmen.
 
 
Cmat_Mul(&A$(,),&B$(,),&C$(,),L,M,N)
A$(0:L,0:M) Die komplexen Elemente der Multiplikanten-Matrix.
B$(0:M,0:N) Die komplexen Elemente der Multiplikator-Matrix.
C$(0:L,0:N) Die komplexen Elemente der Produkt-Matrix.
L Höchste Zeilennummer von A$(,) und C$(,).
M Höchste Spaltennummer von A$(,) und höchste Zeilennummer von B$(,).
N Höchste Spaltennummer von B$(,) und C$(,).
Die Matrix A$(,) wird mit der Matrix B$(,) multipliziert und das Ergebnis wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)*B$(,)). Achten Sie darauf, daß die einzelnen Matrizen die richtigen Dimensionen haben.
 
 
Cmat_S_Mul(&A$(,),Z$,&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Multiplikanten-Matrix.
Z$ Komplexe Zahl als Multiplikator.
C$(0:M,0:N) Die komplexen Elemente der Produkt-Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Matrix A$(,) wird mit der komplexen Zahl Z$ multipliziert und das Ergebnis wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)*Z$. C$(,) darf mit A$(,) übereinstimmen. Man bezeichnet diese Operation auch als skalare Multiplikation.
 
 
Cmat_S_Div(&A$(,),Z$,&C$(,),M,N)
A$(0:M,0:N) Die komplexen Elemente der Dividenden-Matrix.
Z$ Komplexe Zahl als Divisor.
C$(0:M,0:N) Die komplexen Elemente der Quotient-Matrix.
M Höchste Zeilennummer.
N Höchste Spaltennummer.
Die Matrix A$(,) wird durch die komplexe Zahl Z$ dividiert und das Ergebnis wird der Matrix C$(,) zugewiesen (C$(,)=A$(,)/Z$. C$(,) darf mit A$(,) übereinstimmen. Man bezeichnet diese Operation auch als skalare Division.
 
 
Cmat_Inv_By_X(&A$(,),&C$(,),N)
A$(0:N,0:N) Die komplexen Elemente der Quell-Matrix.
C$(0:N,0:N) Die komplexen Elemente der inversen Matrix.
N Höchste Zeilen- bzw. Spaltennummer.
Diese Prozedur berechnet die inverse Matrix zu A$(,) und weist das Ergebnis der Matrix C$(,) zu. Für diese Prozedur muß der Realteil der Matrix A$(,) separat invertierbar sein, andernfalls erhalten Sie eine Fehlermeldung.