Funktionstests, 5000-stelliger Rechner

Werbung
Test der Funktionen im 5000-stelligen Taschenrechner
Die Funktionen sind in alphabetischer Reihenfolge der DM-Funktionsnamen aufgeführt, wobei einige
Funktionen, z. B. SIN, COS und TAN unter dem ersten Namen zusammengefasst sind und auch BINK, BINV
und KBNV stehen hintereinander. Auch die hier noch nicht aufgeführten Funktionen sind natürlich getestet
worden, jedoch hier noch nicht dokumentiert.
Die Basis des 5000-stelligen Taschenrechners ist ein Programms von David M. Smith. Neben den
Standardoperationen sind in diesem Programm auch eine Reihe von Standardfunktionen enthalten.
Berechnungen in DM werden immer in der vorgegebenen Weise durchgeführt. DM ist nicht in der Lage,
Vereinfachungen, z. B. bei LN(EXP(X))-1, durchzuführen. Das gefundene Ergebnis 0 für den Ausdruck ist
daher ein Test für den Logarithmus und die Exponentialfunktion.
Die Berechnungen wurden mit dem für das gewünschte Ergebnis notwendigen Einstellungen für die
Rechengenauigkeit durchgeführt.
Die Zusammenstellung beschreibt in der angegebenen Reihenfolge:
BINK:
BINV:
KBNV:
DIV:
LEG:
ALEG:
NPRI:
PIPR:
POCH:
POIS:
SIN:
COS:
TAN:
STIE:
STIZ:
SUM:
TEFU:
TEZA:
PTZA:
Binomialkoeffizienten
Binomialverteilung
Kumulierte Binomialverteilung
Ganzzahldivision
Legendre-Polynome
Assoziierte Legendre-Polynome
N-te Primzahl
Zahl der Primzahlen bis zum Argument
Pochhammersymbol
Poissonverteilung
Sinus
Cosinus
Tangens
Stirlingzahlen 1. Art
Stirlingzahlen 2. Art
Endliche und unendliche Summen
Teilerfunktion
Teilerzahl
Primteilerzahl
BINK(N,K)
Berechnet die Binomialkoeffizienten N über K. Aufruf BINK(N,K).
Definition: BINK(N,K) = N!/(K! (N-K)!)
Beschränkungen: N und K ganzzahlig und größer gleich 0, sonst Fehlermeldung.
In Übereinstimmung mit Mathematica ist:
BINK(5,0) = 1 wegen 5!/(0! 5!) = 5!/5 = 1
BINK(0,5) = 0. Das ist nicht ohne weiteres ersichtlich.
BINK(0,0) = 1 wegen 0!/(0! 0!) = 1
BINK(5,5) = 1 wegen 5!/(5 0!) = 1
Fall K > N BIN K in Übereinstim m u ng m it M a them a tica = 0. Für diese Argumente sind die
Binomialkoeffizienten nicht definiert (siehe z. B. Num. Rec. S. 208).
Mathematica gibt auch Binomialkoeffizienten für den Fall N < 0 aus. Dies erfolgt nicht in DM in
Übereinstimmung mit der Nichtausgabe von Fakultäten für Argumente < 0.
Zur Berechnung wird eine Rekursion aus Num. Rec. S. 209, Gl. 6.1.7 benutzt.
In diesem Ausdruck wird k durch k - 1 ersetzt:
Sie gestattet die Berechnung von N über K ausgehend von N über 0 = 1. Für die Berechnung wird weiterhin die
Symmetrie ausgenutzt. Das Pascalsche Dreieck ist symmetrisch zur Mitte, d. h. man darf mit K oder N - K
rechnen - dies folgt auch aus der obigen Definition. Da die Rekursion über K läuft, kann dies eine wesentliche
Erhöhung der Geschwindigkeit und Genauigkeit nach sich ziehen.
Einige Werte mit kleineren Argumenten wurden manuell nachgerechnet:
BINK(5,3) = 10
BINK(8,4) = 70
BINK(9,4) = 126
Einige größere Werte in Übereinstimmung mit Mathematica. Es sind nur der Anfang and das Ende der ganzen
Zahlen angegeben.
BINK(120,40) = 114556.....471
BINK(300,123) = 7193.....99288000 (7. ... @10 86)
BINK(1030,515) = 285964........9057400 (2.8..... @ 10 308)
BINV
Berechnet den Wert der Binomialverteilung mit der Definition
Die Berechnung erfolgt entsprechend dieser Definition, wobei für zur Berechnung von N über K die Routine aus
der Funktion BINK verwendet wird. Probleme bei der Berechnung durch sich weitgehend aufhebende Terme
sind hier nicht zu befürchten.
Beschränkungen: N und K ganzzahlig und größer gleich 0, p zwischen 0 und 1, K kleiner gleich N, sonst
Fehlermeldung.
Zwei Sonderfälle für N=1 und größer müssen wegen 0^0 gesetzt werden:
BINV(N,0,0) = 1
BINV(N,N,1) = 1
Sonderfall so gesetzt:
BINV(0,0,p) = 1 für alle p.
Ein mit Hand nachgerechneter Wert:
BINV(5,3,0.3) = 10 @ 0.3 3 @ 0.7 2 = 0.132300000....
BINV(15,5,0.2) - 3003 * 0.2 5 * 0.8 10 = 0
BINV(1030,515,0.2) - BINK(1030,515)*0.16^515 = 0
Die Summe der Binomialverteilungen über alle K muss 1 ergeben:
SUM(0,30,BINV(30,MIN(30,J),0.34567))-1 = 0; auch mit 300 und entsprechender Stellenzahl wird eine Null
berechnet. Der Term MIN(30,J) an Stelle von J ist notwendig, um J nicht auf 31 wachsen zu lassen: siehe
Bemerkung bei SUM in der DM-Hilfe.
KBNV
Berechnet den Wert der kumulierten Binomialverteilung mit der Definition
Die Berechnung erfolgt entsprechend dieser Definition, wobei für N über M die Routine aus der Funktion BINK
verwendet wird. Probleme bei der Berechnung durch sich weitgehend aufhebende Terme sind hier nicht zu
befürchten.
Beschränkungen: N und K ganzzahlig und größer gleich 0, p zwischen 0 und 1, K kleiner gleich N, sonst
Fehlermeldung.
Zwei so gesetzte Sonderfälle für N=1 und größer:
KBNV(N,0,0) = 1
KBNV(N,N,1) = 1
Sonderfall so gesetzt:
KBNV(0,0,p) = 1 für alle p.
Einige mit Hand nachgerechnete Werte:
KBNV(5,3,0.3) = 0.96922000000
KBNV(5,5,0.3) = 1
KBNV(15,5,0.2) = 0.9389485703823360000000.....
Weiterhin wurden einige Werte mit dem Taschenrechner entsprechend ihrer Definition überprüft. Z. B.
KBNV(15,5,0.2)-SUM(0,5,BINK(15,J)*0.2^J*(1-0.2)^(15-J))
oder ähnlich
KBNV(15,5,0.2)-SUM(0,5,BINV(15,J,0.2))
Ergebnis: 0
KBNV(1030,1030,0.2) = 1.
DIV(N,M )
Ergibt die Ganzzahldivision von N/M.
N und M müssen ganzzahlig sein, M ungleich 0; andernfalls Fehlermeldung.
Einige Ergebnisse:
DIV(12,3) = 4
DIV(13,3) = 4
DIV(14,3) = 4
DIV(-13,3) = -4
DIV(13,-3) = -4
DIV(-13,-3) = 4
SQRT(DIV(1234567890123456789^2*123456789012345678+1,123456789012345678)) ergibt
1234567890123456789
d. h. SQRT(DIV(X^2*Y+1,Y)) = X
LEG(l,X)
Berechnet den Funktionswert des Legendre-Polynoms P l(x). Der Index l muss ganzzahlig und 0 # l #
2147483647 sein.
Für die Berechnung des Funktionswertes gibt es explizite Gleichungen, die bei großen l und X große Terme mit
wechselnden Vorzeichen aufweisen und daher zu groben Fehlern bei beschränkter Rechengenauigkeit führen.
Besser ist die Verwendung der stabilen Rekursion
die auch für die assoziierten Legendre-Polynome verwendet werden kann. Hier wird m = 0 gesetzt. Die
Startwerte sind P 0(x) = 1 und P 1(x) = x.
Einige Werte:
LEG(0,1.7) = 1
LEG(1,1.7) = 1.7
LEG(1,-1.7) = -1.7
LEG(2,SQRT(2)) = 0.5*(3*2-1) = 2.5
LEG(10,2) = 96060.5195312500000
LEG(100,3) = 2053716. . . . 43041
LEG(1000,50) = 1614. . . . .070329.8
in Übereinstimmung mit Mathematica
Ergebnis ist ganzzahlig
(.2 @10 75)
bei 2000-stelliger Ausgabe (.1.6 @10 1998)
ALEG(l,m,X)
Berechnet den Funktionswert des assoziierten Legendre-Polynoms P lm(x). Die Indices l und m müssen
ganzzahlig und 0 # l,m # 2 147 483 647 sein. Das absolute Argument *X* muss # 1 sein.
Für die Berechnung des Funktionswertes gibt es explizite Gleichungen, die bei großen l und X große Terme mit
wechselnden Vorzeichen aufweisen und daher zu groben Fehlern bei beschränkter Rechengenauigkeit führen.
Besser ist die Verwendung der stabilen Rekursion
Die Startwerte sind Pmm(x) und P m+1m(x), für die es einfache Ausdrücke gibt.
ALEG(1,1,SQRT(0.5)) = -(1 - 0.5)^0.5 = - 0.7071068 . . . . .
ALEG(2,1,SQRT(0.5)) = -3 (1 - 0.5)^0.5*0.5^0.5 = - 3*0.5^0.5*0.5^0.5 = - 3*0.5^1 = -1.5
ALEG(2,3,X) = 0
ALEG(10000,10,0.7) = - 5.819 062 432 628 616 . . . @10 37 in Übereinstimmung mit Mathematica
NPRI(N)
NPRI(N) ergibt die N. Primzahl, ist also quasi invers zu PIPR(N). Ein direktes Berechnungsverfahren für diese
Funktion gibt es nicht; es muss leider die Zahl der Primzahlen ausgezählt werden. Das Ergebnis ist auf den
Bereich der INTEGER*4-Zahlen, d. h. auf 2147483647, beschränkt; dementsprechend darf das Argument von
NPRI höchstens 105097565 betragen.
Auch für diesen Zahlenbereich würden die Berechnungen sehr lange dauern. In DM gibt es daher das File
PRIM.DAT, das B(N) für 1000000 und Vielfache davon enthält. Der Algorithmus liest dieses File und
vergleicht mit N. Der Algorithmus benutzt dann diese Stützstelle, bzw. die vorangehende, und zählt von dort ab.
Weiterhin werden Ergebnisse von vorgehenden Berechnungen für kleinere N benutzt.
Zur Feststellung, ob eine Zahl eine Primzahl ist oder nicht, wird wie folgt vorgegangen. Beim Start wird mit
Hilfe des Siebs des Eratosthenes eine Liste der Primzahlen bis 1000000 angelegt. Dann wird die Teilbarkeit der
untersuchten Zahl durch die Primzahlen dieser Liste bis zur der Primzahl untersucht, die größer als die Wurzel
aus der gegebenen Zahl ist.
N muss ganzzahlig und 1 # N # 105097565 sein.
NPRI(0) = Fehlermeldung
NPRI(1) = 2
NPRI(2) = 3
NPRI(100) = 541
NPRI(1000) = 7919
NPRI(10000) = 104729
NPRI(78498) = 999983
NPRI(78499) = 1000003
NPRI(78498) = 1000033
Sprung über eine Stützstelle. Dass diese Zahlen aufeinander folgende PrimZahlen sind, kann man sich in Mathematik/Mengen aus der Zahlentheorie/Primzahlen/Primzahlen ansehen.
NPRI(100000) = 1299709
NPRI(300000) = 4256233
NPRI(1000000) = 15485863
NPRI(10000000) = 179424673
NPRI(105097565) = 2147483647
NPRI(105097564) = 2147483629
PIPR(100) =
PIPR(101) =
PIPR(102) =
PIPR(103) =
PIPR(102) =
PIPR(101) =
541
547
557
563
557
547
PIPR(NPRI(X)) -X = 0
Benutzung von vorangehenden Berechnungen
X ganzzahlig und $ 1
PIPR(N)
PIPR(N), üblicherweise als B(N) bezeichnet, gibt die Zahl der Primzahlen kleiner gleich N aus. Ein direktes
Berechnungsverfahren für diese Funktion gibt es nicht; die Zahl der Primzahlen bis zu einem bestimmten N
muss leider gezählt werden. Für den Bereich der INTEGER*4-Zahlen, d. h. bis 2147483647, würde dies für
größere Zahlen sehr lange dauern. In DM gibt es daher das File PRIM.D AT , das B(N) für 1000000 und
Vielfache davon enthält, so dass nur jeweils vom nächst kleineren Vielfachen von 1000000 aus gezählt werden
muss. Weiterhin werden Ergebnisse von vorgehenden Berechnungen für kleinere N benutzt.
Zur Feststellung, ob eine Zahl eine Primzahl ist oder nicht, wird wie folgt vorgegangen. Beim Start wird mit
Hilfe des Siebs des Eratosthenes eine Liste der Primzahlen bis 1000000 angelegt. Dann wird die Teilbarkeit der
untersuchten Zahl durch die Primzahlen dieser Liste bis zur der Primzahl untersucht, die größer als die Wurzel
aus der gegebenen Zahl ist.
N darf in DM auch nicht ganzzahlig sein; es darf jedoch 2147483647 nicht überschreiten. Größere Werte für
N würden zu nicht akzeptablen Rechnezeiten führen. Im Prinzip wird daher nur die Routine aus dem normalen
Taschenrechner benutzt.
Einige Ergebnisse, die in DM und Mathematica übereinstimmen.
PIPR(1) = 0
PIPR(2) = 1
PIPR(3) = 2
PIPR(4) = 2
PIPR(5) = 3
PIPR(6) = 3
PIPR(7) = 4
PIPR(7.0001) = 4
PIPR(6.9999) = 3
PIPR(50000) = 5133
PIPR(999998) = 78498
Zählung der Primzahlen von 2 ab
PIPR(999999) = 78498
Zählung der Primzahlen von 2 ab
PIPR(1000000) = 78498
Nutzung der Stützstelle bei 1000000
PIPR(1000010) = 78499
Nutzung der Stützstelle bei 1000000 und Weiterzählung (1000003 ist prim)
PIPR(1000101) = 78504
Nutzung der Stützstelle bei 1000000 und Weiterzählung
PIPR(2000000) = 148933
Nutzung der Stützstelle bei 2000000
PIPR(20000000) = 1270607
PIPR(200000000) = 11078937
PIPR(2147483647) = 105097565
PIPR(2147483646) = 105097564
PIPR(2147483629) = 105097564
PIPR(2147483627) = 105097563
PIPR(N#0) = 0
PIPR(NPRI(X)) -X = 0
PIPR(200) =
PIPR(240) =
PIPR(280) =
PIPR(320) =
PIPR(280) =
PIPR(240) =
46
52
59
66
59
52
X ganzzahlig und $ 1
Berechnung unter Zuhilfenahme des vorigen Ergebnisses
Berechnung unter Zuhilfenahme des vorigen Ergebnisses
Berechnung unter Zuhilfenahme des vorigen Ergebnisses
Neuberechnung
Neuberechnung
PIPR(X)/LI(X) strebt für große X gegen 1.
PIPR(NPRI(X)) -X = 0
X ganzzahlig und $ 1
Die Primzahlmenge kann man sich auch bei Mathematik/Mengen aus der Zahlentheorie/Primzahlen/Primzahlen
ansehen. Hier wird neben der Zahl auch die Primzahlmenge selbst ausgegeben.
POCH(X,N)
Das Pochhammersymbol ergibt die aufsteigende Fakultät beginnend mit dem Glied X. Das zweite Argument N
beschreibt die Gliedzahl, d. h.
X*(X+1)*(X+2)* . . . *(X+N-1)
X ist eine beliebige REAL-Zahl; N ist ganzzahlig und absolut # 100 000 000. Für negative N benutzt man die
auch für positive N gültige Definition '(X+N)/'(X). Dies ergibt für negative N den Reziprokwert der
absteigenden Fakultät von X-1 bis X+N, d. h. POCH(17,-2) = 1/(16*15).
Wird für negative Argumente X ein Produktterm Null, so ist POCH Null. Wird für negative N ein Divisionsterm
Null, erfolgt eine Fehlermeldung.
POCH(17.3,0) = 1 So gesetzt.
POCH(17.3,1) = 17.3
POCH(3,4) = 360
POCH(22.2,154) = 3.346592715260669288684 . . .@10 298
POCH(-5,2) = 20
POCH(-5,3) = -60
POCH(-6,8) = 0
POCH(5,-2) = 1/(4*3) = 0.0833333
POCH(5,-6):
Fehlermeldung: Division durch Null
POCH(-10,-3) = 1/{(-11) (-12) (-13)} = -0.000582750 . (____ = Periode)
POIS(N, ARG2)
Poissonverteilung, ergibt ARG2^N*EXP(-ARG2)/N! mit einer rekursiven Berechnung. N ganzzahlig und 0 #
N # 2 147 483 647, Mittelwert/Varianz ARG2 > 0.
Die rekursive Berechnung wurde gewählt, da man mit sehr großen ARG2^N und N! aus dem Bereich der
Bereich der REAL-Zahlen herauslaufen kann. Die Rekursion ist
POIS(N+1,X) = X/(N+1)*POIS(N,X) mit dem Startwert POIS(0,X) = EXP(-X)
Tests:
Vergleich mit der Definition
POIS(0,3) - EXP(-3) = 0
POIS(3,2.3) - 2.3^3*EXP(-2.3)/FAK(3) = 0
POIS(50,50)-POIS(49,50) = 0
POIS(600,590)-590^600/FAK(600)*EXP(-590) = -1.36 @ 10 -1528 mit 1500-stelliger Genauigkeit
SIN, COS und TAN
Berechnet die trigonometrischen Funktionen des Arguments. Hier werden die Funktionen des Programms von
David M. Smith benutzt, das die Basis des 5000-stelligen Taschenrechner bildet. Steht die Checkbox auf Grad,
so wird in der Klammer mit GRADBOG multipliziert.
In DM findet man korrekt entsprechend der eingestellten Genauigkeit
SIN(PI/2) = 1
SIN(-PI/2) = -1
SIN(5*PI/2) = 1
ASIN(SIN(X)) - X = 0 mit X = krummer Wert größer/kleiner als 0
COS(PI) = 1
COS(-PI) = -1
COS(5*PI) = -1
TAN(PI/4) = 1
SIN(45) - SQRT(2)/2 = 0 Im Gradmaß
COS(45) - SQRT(2)/2 = 0
SIN(60) - SQRT(3)/2 = 0
COS(30) - SQRT(3)/2 = 0
SIN(X)^2 + COS(X)^2 = 1 X = krumme Gradzahl
TAN(X) - SIN(X)/COS(X) = 0
SIN(2*X) - 2*SIN(X)*COS(X) = 0
SIN(10000*PI) = 0
Der Tangens ergibt bei 90° keinen Absturz, sondern:
Bei Berechnung im Bogenmaß mit 50 Stellen: TAN(PI/2) = 2.2*10 77
Bei Berechnung im Gradmaß mit 50 Stellen:
TAN(90) = keine Ausgabe, wegen Nichtweiterverarbeitung
einer internen Fehlermeldung.
STIE(N,K)
STIE(N,K) berechnet die Stirlingschen Zahlen 1. Art mit Vorzeichen. N muss # 2147483647 sein; K muss #
500 sein; sie müssen ganzzahlig sein und den Bedingungen 1 # N und 1 # K # N genügen. Die Grenze 500 für
K hängt mit der Maximalzahl von Zwischenspeicherungen für die Rekursion zusammen.
Die Stirlingschen Zahlen 1. Art werden mit der folgenden programmierten Rekursion berechnet:
STIE(N,K) = STIE(N-1,K-1) - (N-1)*STIE(N-1,K)
Einige Werte sind in der folgenden T abelle zusammengestellt, die man mit Mathematica erhält oder auch
anderswo findet.
K
N
1
2
3
4
5
6
1
2
3
4
5
6
1
-1
2
-6
24
-120
1
-3
11
-50
274
1
-6
35
-225
1
-10
85
1
-15
1
Einige größere Werte, mit Mathematica überprüft:
STIE(10,5) = -269325
STIE(15,5) = 159721605680
STIE(18,5) = -909299905844112
STIE(40,21) = -66803578934102519403022344228441000
STIE(100,50) = +318322278235296438474435412072968606417560943939705506371757/
8668769227113071836382198739697421125692626030268475
Einige Zusammenhänge:
In DM: PROD(0,9,X-J) - SUM(1,10,STIE(10,J)*X^J) ergibt Null für verschiedene X.
In DM: SUM(1,X,(-1)^J*STIE(X,J)) - (-1)^X*FAK(X) mit verschiedenen ganzen X ergibt Null.
Die vorzeichenlosen Stirlingschen Zahlen 1. Art erhält man mit ABS(STIE(N,K)).
STIZ(N,K)
STIZ(N,K) berechnet die Stirlingschen Zahlen 2. Art. N und K müssen kleiner gleich 2147483647 sein; sie
müssen ganzzahlig sein und den Bedingungen 0 <= N und 0 <= K <= N genügen.
Der Fall N = 0, K = 0 (Ergebnis 1) wird gesondert gesetzt. Die restlichen Stirlingschen Zahlen 2. Art werden
mit der expliziten Gleichung
berechnet:
Einige Werte sind in der folgenden Tabelle zusammengestellt, die man mit Mathematica erhält oder auch
anderswo findet.
K
N
0
1
2
3
4
5
6
0
1
2
3
4
5
6
1
0
0
0
0
0
0
1
1
1
1
1
1
1
3
7
15
31
1
6
25
90
1
10
65
1
15
1
Einige größere Werte, mit Mathematica überprüft:
STIZ(10,6) = 22827
STIZ(15,5) = 210766920
STIE(22,11) = 366282500870286
STIE(100,55) = 4475. . . . 44000
(4.4@10 95)
STIE(200,100) = 22839 . . . . . 07556
(2.2@10 234)
Einige Zusammenhänge:
In DM: STIZ(X,X-1) - BINK(X,2) ergibt Null für verschiedene ganze X. X = 109 ergibt die Null nur mit
entsprechend vielen Stellen bei der Berechnung oder man rechnet mit Stellenanpassung.
In DM: STIZ(X,2)-(2^(X-1)-1) ergibt Null für verschiedene ganze X.
Die Rekursionsformel
In DM: STIZ(100,X) - (STIZ(100-1,X-1) + X*STIZ(100-1,X)) und z. B. X = 10 ergibt Null bei entsprechend
großer Stellenzahl oder mit Stellenanpassung.
SUM (NU,NO,F(J))
Berechnet endliche und unendliche Summen, Aufruf SUM(NU,NO,F(J)), untere Summengrenze NU und obere
Summengrenze NO, F(J) ist eine beliebige Funktion der Laufzahl J.
Die Summengrenzen müssen ganzzahlig sein; die obere Grenze NO muss größer gleich der unteren NU sein.
Test einiger endlicher Summen:
SUM(1,50,FAK(J)*J)-(FAK(51)-1) = 0
SUM(1,100,J^3)-(100*101/2)^2 = 0
Test mit einigen unendlichen Summen:
Summe über 1/N! von 0 bis unendlich = e
SUM(0,1000,1/FAK(J))-EXP(1) = -2@10 -2571
5000-stellige Genauigkeit, Restfehler durch endliche Summe
Summe über 1/N! alternierend 1 - 1/1! + 1/2! von 0 bis unendlich = 1/e
SUM(0,1000,(-1)^J/FAK(J))-1/EXP(1) = 2@10 -2571
5000-stellige Genauigkeit, Restfehler durch endliche Summe
1 - 1/2 + 1/3 - 1/4 ..... = ln 2
SUM(1,10000,-(-1)^J/J - LN(2) = -4.99975@10 -5.
Stimmt mit normalem Taschenrechner überein.
1 + 1/2 + 1/4 + 1/8 ..... = 2
SUM(0,1000,1/2^J) - 2 = -9.3@10 -302 und 0 mit oberer Summengrenze 10000.
1 + 1/2^4 + 1/3^4 + 1/4^4 ..... = B 4/90
SUM(1,10000,1/J^4) - PI^4/90 = -3.3@10 -13 und -2.7@10 -13 mit normalem Taschenrechner.
Test: Ausdrücke als untere und obere Grenze, Verwendung von SUM in komplexeren Ausdrücken
SUM(4-3,NINT(PI)+1,1/J) = 2.08333333
PI+SUM(4-3,NINT(PI)+1,1/J) = 5.224925
SUM(4-3,NINT(PI)+1,1/J)+SUM(4-3,NINT(PI)+1,1/J) = 4.16666666
TEFU(N,K)
Die Divisorfunktion TEFU(N,K) bestimmt alle positiven Teiler T von N und berechnet die Summe über alle
T^K. Für K = 0 wird dadurch die Zahl der Teiler festgestellt, d. h. man erhält das gleiche Ergebnis wie mit
TEZA(N). N und K sind ganzzahlig und im ganzen INTEGER*4-Bereich erlaubt, d. h. -2147483647 # N,K #
2147483647. N darf jedoch nicht Null betragen.
TEFU(1,K) = 1, da es nur den Teiler 1 gibt
TEFU(0,K):
Fehlermeldung
TEFU(-N,K) = TEFU(N,K), da die Teiler identisch sind
TEFU(10,0) = 4 = nämlich 1, 2, 5 und 10
TEFU(10,2) = 130 = 1^2 + 2^2 + 5^2 + 10^2
TEFU(10,-1) = 1.8 = 1/1 +1/ 2 + 1/5 + 1/10
TEFU für einige größere Argumente in Übereinstimmung mit Mathematica
TEFU(10000000,1) = 24902280
TEFU(10000000,-1) = 2.490228000000000
TEFU(350377,2)
= 122764042130
Sonderfall im Algorithmus: Primzahl > 46341
TEFU(3*350377,-1) = 1.333337138758156. . .
Sonderfall: Nach Division durch eine kleine
Primzahl verbleibt eine Primzahl > 46341
TEFU(2*3*5*7*11*350377,5) = 359793116835833326161219124948592665870803456
X*TEFU(X,-1)-TEFU(X,1) = 0
X^2*TEFU(X,-2)-TEFU(X,2) = 0
für verschiedene natürliche X; die “Null” in
Abhängigkeit von der Rechengenauigkeit
TEZA(N)
Gibt die Zahl der positiven Teiler von N aus. Zur Berechnung wird N in seine Primfaktoren zerlegt:
Die Teilerzahl ist dann:
N muss ganzzahlig und ABS(N) kleiner gleich 10^6 sein.
TEZA(17) = 2 (1,17)
TEZA(20) = TEZA(2^2*5^2) = (2+1)*(1+1) = 6 (1,2,4,5,10,20)
TEZA(1)
=1
TEZA(1000) = TEZA(2^3*5^3) = 4*4 = 16
TEZA(3^4*13^2*17^4) = (4+1)*(2+1)*(4+1) = 75
TEZA(-N) = TEZA(N)
TEZA(0) = 0, so gesetzt in Übereinstimmung mit der Ausgabe bei Mathematik/Mengen aus der Zahlentheorie
TEZA(10^11) = 144 in Übereinstimmung mit Mathematica
PTZA(N)
Gibt die Zahl der positiven Primteiler von N aus. Zur Berechnung wird N in seine Primfaktoren zerlegt und die
Zahl der unterschiedlichen Faktoren bestimmt.
N muss ganzzahlig und ABS(N) kleiner gleich 10^12 sein.
PTZA(1)
=0
PTZA(2)
= 1 (2)
PTZA(3)
= 1 (3)
PTZA(1000) = TEZA(2^3*5^3) = 2
PTZA(3^4*11^2*17^2) = 3
PTZA(-N) = PTZA(N)
PTZA(0)
=0
PTZA(3*2147483647) = 2
Sonderfall: Nach Division durch eine kleine Primzahl verbleibt eine
Primzahl > 1000000
PTZA(2147483647) = 1
Sonderfall im Algorithmus: Primzahl > 1000000
Herunterladen