Funktionen und Variablen für Zahlen (Maxima Manual)

Previous: Einführung in Zahlen, Up: Zahlen [Contents][Index]

#### 5.1.2 Funktionen und Variablen für Zahlen

Funktion: bfloat (expr)

  Konvertiert alle Zahlen im Ausdruck expr in große Gleitkommazahlen. Die Anzahl der Stellen wird durch die Optionsvariable `fpprec` spezifiziert.

  Hat die Optionsvariable `float2bf` den Wert `false`, gibt Maxima eine Warnung aus, wenn eine Gleitkommazahl mit doppelter Genauigkeit in eine große Gleitkommazahl umgewandelt wird.

  Siehe auch die Funktion und den Auswertungsschalter `float` sowie die Optionsvariable `numer` für die Umwandlung von Zahlen in Gleitkommazahlen mit doppelter Genauigkeit.

  Beispiele:

      (%i1) bfloat([2, 3/2, 1.5]);
      (%o1)                 [2.0b0, 1.5b0, 1.5b0]
      (%i2) bfloat(sin(1/2));
      (%o2)                  4.79425538604203b-1
      (%i3) bfloat(%pi),fpprec:45;
      (%o3)    3.1415926535897932384626433832795028841971694b0

Funktion: bfloatp (number)

  Gibt den Wert `true` zurück, wenn das Argument number eine große Gleitkommazahl ist, ansonsten den Wert `false`.

  Siehe auch die Funktionen `numberp`, `floatnump`, `ratnump` und `integerp`.

  Beispiele:

      (%i1) bfloatp(1.5b0);
      (%o1)                         true
      (%i2) a:bfloat(%e);
      (%o2)                  2.718281828459045b0
      (%i3) bfloatp(a);
      (%o3)                         true
      (%i4) bfloatp(1.5);
      (%o4)                         false

Optionsvariable: bftorat

  Standardwert: `false`

  Die Optionsvariable `bftorat` kontrolliert die Umwandlung von großen Gleitkommazahlen in rationale Zahlen. Hat `bftorat` den Wert `false`, wird die Genauigkeit der Umwandlung von der Optionsvariablen `ratepsilon` kontrolliert. Hat dagegen `bftorat` den Wert `true`, wird die große Gleitkommazahl exakt durch die rationale Zahl repräsentiert.

  Hinweis: `bftorat` hat keinen Einfluss auf die Umwandlung in rationale Zahlen mit der Funktion `rationalize`.

  Beispiel:

      (%i1) ratepsilon:1e-4;
      (%o1)                         1.e-4
      (%i2) rat(bfloat(11111/111111)), bftorat:false;
      `rat' replaced 9.99990999991B-2 by 1/10 = 1.0B-1
                                     1
      (%o2)/R/                       --
                                     10
      (%i3) rat(bfloat(11111/111111)), bftorat:true;
      `rat' replaced 9.99990999991B-2 by 11111/111111 = 9.99990999991B-2
                                   11111
      (%o3)/R/                     ------
                                   111111

Optionsvariable: bftrunc

  Standardwert: `true`

  Hat die Optionsvariable `bftrunc` den Wert `true`, werden bei der Ausgabe einer großen Gleitkommazahl nachfolgende Nullen nicht angezeigt.

  Beispiele:

      (%i1) bftrunc:true;
      (%o1)                         true
      (%i2) bfloat(1);
      (%o2)                         1.0b0
      (%i3) bftrunc:false;
      (%o3)                         false
      (%i4) bfloat(1);
      (%o4)                  1.000000000000000b0

Funktion: evenp (expr)

  Ist das Argument expr eine gerade ganze Zahl, wird `true` zurückgegeben. In allen anderen Fällen wird `false` zurückgegeben.

  `evenp` gibt für Symbole oder Ausdrücke immer den Wert `false` zurück, auch wenn das Symbol als gerade ganze Zahl deklariert ist oder der Ausdruck eine gerade ganze Zahl repräsentiert. Siehe die Funktion `featurep`, um zu testen, ob ein Symbol oder Ausdruck eine gerade ganze Zahl repräsentiert.

  Beispiele:

      (%i1) evenp(2);
      (%o1)                         true
      (%i2) evenp(3);
      (%o2)                         false
      (%i3) declare(n, even);
      (%o3)                         done
      (%i4) evenp(n);
      (%o4)                         false
      (%i5) featurep(n, even);
      (%o5)                         true

Funktion: float (expr)
Optionsvariable: float

  Die Funktion `float` konvertiert ganze, rationale und große Gleitkommazahlen, die im Argument expr enthalten sind, in Gleitkommazahlen mit doppelter Genauigkeit.

  `float` ist auch eine Optionsvariable mit dem Standardwert `false` und ein Auswertungsschalter für die Funktion `ev`. Erhält die Optionsvariable `float` den Wert `true`, werden rationale und große Gleitkommazahlen sofort in Gleitkommazahlen umgewandelt. Als Auswertungsschalter der Funktion `ev` hat `float` denselben Effekt, ohne dass die Optionsvariable `float` ihren Wert ändert. Im Unterschied zur Funktion `float` werden durch das Setzen der Optionsvariablen oder bei Verwendung als Auswertungsschalter keine ganze Zahlen in Gleitkommazahlen umgewandelt. Daher können die beiden Kommandos `ev(expr, float)` und `float(expr)` ein unterschiedliches Ergebnis haben.

  Siehe auch die Optionsvariable `numer`.

  Beispiele:

  In den ersten zwei Beispielen werden die Zahlen `1/2` und `1` in eine Gleitkommazahl umgewandelt. Die Sinusfunktion vereinfacht sodann zu einem numerischen Wert. Das Auswertungsschalter `float` wandelt ganze Zahlen nicht in eine Gleitkommazahl um. Daher wird `sin(1)` nicht zu einem numerischen Wert vereinfacht.

      (%i1) float(sin(1/2));
      (%o1)                   0.479425538604203
      (%i2) float(sin(1));
      (%o2)                   .8414709848078965
      (%i3) sin(1/2),float;
      (%o3)                   0.479425538604203
      (%i4) sin(1),float;
      (%o4)                        sin(1)

Optionsvariable: float2bf

  Standardwert: `true`

  Hat die Optionsvariable `float2bf` den Wert `false`, wird eine Warnung ausgegeben, wenn eine Gleitkommazahl in eine große Gleitkommazahl umgewandelt wird, da die Umwandlung zu einem Verlust an Genauigkeit führen kann.

  Beispiele:

      (%i1) float2bf:true;
      (%o1)                         true
      (%i2) bfloat(1.5);
      (%o2)                         1.5b0
      (%i3) float2bf:false;
      (%o3)                         false
      (%i4) bfloat(1.5);
      bfloat: converting float 1.5 to bigfloat.
      (%o4)                         1.5b0

Funktion: floatnump (number)

  Gibt den Wert `true` zurück, wenn das Argument number eine Gleitkommazahl ist. Ansonsten wird `false` zurückgegeben. Auch wenn number eine große Gleitkommazahl ist, ist das Ergebnis `false`.

  Siehe auch die Funktionen `numberp`, `bfloatp`, `ratnump` und `integerp`.

  Beispiele:

      (%i1) floatnump(1.5);
      (%o1)                         true
      (%i2) floatnump(1.5b0);
      (%o2)                         false

Optionsvariable: fpprec

  Standardwert: 16

  `ffprec` ist die Zahl der Stellen für das Rechnen mit großen Gleitkommazahlen. `ffprec` hat keinen Einfluß auf das Rechnen mit Gleitkommazahlen in doppelter Genauigkeit. Siehe auch `bfloat` und `fpprintprec`.

  Beispiele:

      (%i1) fpprec:16;
      (%o1)                          16
      (%i2) bfloat(%pi);
      (%o2)                  3.141592653589793b0
      (%i3) fpprec:45;
      (%o3)                          45
      (%i4) bfloat(%pi);
      (%o4)    3.1415926535897932384626433832795028841971694b0
      (%i5) sin(1.5b0);
      (%o5)   9.97494986604054430941723371141487322706651426b-1

Optionsvariable: fpprintprec

  Standardwert: 0

  `fpprintprec` ist die Anzahl der Stellen, die angezeigt werden, wenn eine Gleitkommazahl ausgegeben wird.

  Hat `fpprintprec` einen Wert zwischen 2 und 16, ist die Anzahl der angezeigten Stellen für einfache Gleitkommazahlen gleich dem Wert von `fpprintprec`. Hat `fpprintprec` den Wert 0 oder ist größer als 16 werden 16 Stellen angezeigt.

  Hat für große Gleitkommazahlen `fpprintprec` einen Wert zwischen 2 und `fpprec`, ist die Anzahl der angezeigten Stellen gleich `fpprintprec`. Ist der Wert von `fpprintprec` gleich 0 oder größer als `fpprec` werden `fpprec` Stellen angezeigt.

  `fpprintprec` kann nicht den Wert 1 erhalten.

  Beispiele:

      (%i1) fpprec:16;
      (%o1)                          16
      (%i2) fpprintprec:5;
      (%o2)                           5
      (%i3) float(%pi);
      (%o3)                        3.1416
      (%i4) bfloat(%pi);
      (%o4)                       3.1415b0
      (%i5) fpprintprec:25;
      (%o5)                          25
      (%i6) bfloat(%pi);
      (%o6)                  3.141592653589793b0
      (%i7) bfloat(%pi);
      (%o7)                  3.141592653589793b0
      (%i8) fpprec:45;
      (%o8)                          45
      (%i9) bfloat(%pi);
      (%o9)             3.141592653589793238462643b0
      (%i10) fpprintprec:45;
      (%o10)                         45
      (%i11) bfloat(%pi);
      (%o11)   3.1415926535897932384626433832795028841971694b0

Funktion: integerp (number)

  Hat den Rückgabewert `true`, wenn das Argument number eine ganze Zahl ist. In allen anderen Fällen gibt `integerp` den Wert `false` zurück.

  `integerp` gibt für Symbole oder Ausdrücke immer den Wert `false` zurück, auch wenn das Symbol als ganze Zahl deklariert ist oder der Ausdruck eine ganze Zahl repräsentiert. Siehe die Funktion `featurep`, um zu testen, ob ein Symbol oder Ausdruck eine ganze Zahl repräsentiert.

  Beispiele:

      (%i1) integerp (1);
      (%o1)                         true
      (%i2) integerp (1.0);
      (%o2)                         false
      (%i3) integerp (%pi);
      (%o3)                         false
      (%i4) declare (n, integer)$
      (%i5) integerp (n);
      (%o5)                         false

Optionsvariable: m1pbranch

  Standardwert: `false`

  Die Optionsvariable `m1pbranch` kontrolliert die Vereinfachung der Exponentiation von `-1` für den Fall, dass die Optionsvariable `domain` den Wert `complex` hat. Hat `m1pbranch` für diesen Fall den Wert `true`, wird die Exponentiation von `-1` zu einem Ausdruck vereinfacht, der dem Hauptwert entspricht. Die Auswirkung der Optionsvariable `m1pbranch` ist in der folgenden Tabelle gezeigt.

                    domain:real

      (-1)^(1/3):      -1
      (-1)^(1/4):   (-1)^(1/4)

                   domain:complex

      m1pbranch:false          m1pbranch:true
      (-1)^(1/3)               1/2+%i*sqrt(3)/2
      (-1)^(1/4)              sqrt(2)/2+%i*sqrt(2)/2

  Siehe auch die Optionsvariable `numer_pbranch`.

Funktion: nonnegintegerp (number)

  Gibt den Wert `true` zurück, wenn `number` eine ganze positive Zahl oder Null ist. Siehe auch `integerp`.

  Beispiele:

      (%i1) nonnegintegerp(2);
      (%o1)                         true
      (%i2) nonnegintegerp(-2);
      (%o2)                         false

Funktion: numberp (number)

  Hat das Ergebnis `true`, wenn number eine ganze, rationale, eine Gleitkommazahl oder eine große Gleitkommazahl ist. Ansonsten ist das Ergebnis `false`.

  `numberp` gibt für ein Symbol immer das Ergebnis `false` zurück. Dies ist auch dann der Fall, wenn das Symbol eine numerische Konstante wie `%pi` ist oder wenn das Symbol mit der Funktion `declare` eine Eigenschaft wie `integer`, `real` oder `complex` erhalten hat.

  Beispiele:

      (%i1) numberp (42);
      (%o1)                         true
      (%i2) numberp (-13/19);
      (%o2)                         true
      (%i3) numberp (3.14159);
      (%o3)                         true
      (%i4) numberp (-1729b-4);
      (%o4)                         true
      (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
      (%o5)      [false, false, false, false, false, false]
      (%i6) declare(a,even, b,odd, c,integer, d,rational, e,real);
      (%o6)                         done
      (%i7) map (numberp, [a, b, c, d, e]);
      (%o7) [false, false, false, false, false]

Optionsvariable: numer

  Standardwert: `false`

  Hat die Optionsvariable `numer` den Wert `true`, werden rationale Zahlen und große Gleitkommazahlen in Gleitkommazahlen umgewandelt. Weiterhin werden Konstante wie zum Beispiel `%pi`, die einen numerischen Wert haben, durch diesen ersetzt. Mathematische Funktionen mit numerischen Argumenten vereinfachen zu einer Gleitkommazahl. Wird die Optionsvariable `numer` gesetzt, erhält die Optionsvariable `float` denselben Wert. Im Unterschied zur Optionsvariablen `float` vereinfachen auch mathematische Funktionen mit einem ganzzahligen Wert wie zum Beispiel `sin(1)` zu einem numerischen Wert.

  `numer` ist auch ein Auswertungsschalter der Funktion `ev`. Der Auswertungsschalter hat die gleiche Funktionsweise wie die Optionsvariable, ohne dass die Optionsvariable ihren Wert ändert.

  Siehe auch `float` und `%enumer`.

  Beispiele:

  Erhält `numer` den Wert `true`, werden rationale Zahlen, Konstante mit einem numerischen Wert und mathematische Funktionen mit numerischen Argumenten zu einer Gleitkommazahl ausgewertet oder vereinfacht.

      (%i1) numer:false;
      (%o1)                         false
      (%i2) [1, 1/3, %pi, sin(1)];
                                 1
      (%o2)                  [1, -, %pi, sin(1)]
                                 3
      (%i3) numer:true;
      (%o3)                         true
      (%i4) [1, 1/3, %pi, sin(1)];
      (%o4) [1, .3333333333333333, 3.141592653589793,
                                                     .8414709848078965]

  `numer` ist auch ein Auswertungsschalter der Funktion `ev`. Hier wird die Kurzschreibweise der Funktion `ev` verwendet.

      (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
                                              1
      (%o1)            [sqrt(2), sin(1), -----------]
                                         sqrt(3) + 1

      (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
      (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]

Optionsvariable: numer_pbranch

  Standardwert: `false`

  Die Optionsvariable `numer_pbranch` kontrolliert die Vereinfachung der Exponentiation einer negativen ganzen, rationalen oder Gleitkommazahl. Hat `numer_pbranch` den Wert `true` und ist der Exponent eine Gleitkommazahl oder hat die Optionsvariable `numer` den Wert `true`, dann berechnet Maxima den Hauptwert der Exponentiation. Ansonsten wird ein vereinfachter Ausdruck, aber nicht numerischer Wert zurückgegeben. Siehe auch die Optionsvariable `m1pbranch`.

  Beispiele:

      (%i1) (-2)^0.75;
      (%o1) (-2)^0.75

      (%i2) (-2)^0.75,numer_pbranch:true;
      (%o2) 1.189207115002721*%i-1.189207115002721

      (%i3) (-2)^(3/4);
      (%o3) (-1)^(3/4)*2^(3/4)

      (%i4) (-2)^(3/4),numer;
      (%o4) 1.681792830507429*(-1)^0.75

      (%i5) (-2)^(3/4),numer,numer_pbranch:true;
      (%o5) 1.189207115002721*%i-1.189207115002721

Funktion: numerval (x_1, val_1, …, var_n, val_n)

  Die Variablen x_1, …, x_n erhalten die numerischen Werte val_1, …, `val_n`. Die numerischen Werte werden immer dann für die Variablen in Ausdrücke eingesetzt, wenn die Optionsvariable `numer` den Wert `true` hat. Siehe auch `ev`.

  Die Argumente val_1, …, val_n können auch beliebige Ausdrücke sein, die wie numerische Werte für Variablen eingesetzt werden.

  Beispiele:

      (%i1) numerval(a, 123, b, x^2)$

      (%i2) [a, b];
      (%o2)                        [a, b]
      (%i3) numer:true;
      (%o3)                         true
      (%i4) [a, b];
                                         2
      (%o4)                       [123, x ]

Funktion: oddp (expr)

  Gibt `true` zurück, wenn das Argument expr eine ungerade ganze Zahl ist. In allen anderen Fällen wird `false` zurückgegeben.

  `oddp` gibt für Symbole oder Ausdrücke immer den Wert `false` zurück, auch wenn das Symbol als ungerade ganze Zahl deklariert ist oder der Ausdruck eine ungerade ganze Zahl repräsentiert. Siehe die Funktion `featurep`, um zu testen, ob ein Symbol oder Ausdruck eine ungerade ganze Zahl repräsentiert.

  Beispiele:

      (%i1) oddp(3);
      (%o1)                         true
      (%i2) oddp(2);
      (%o2)                         false
      (%i3) declare(n,odd);
      (%o3)                         done
      (%i4) oddp(n);
      (%o4)                         false
      (%i5) featurep(n,odd);
      (%o5)                         true

Optionsvariable: ratepsilon

  Standardwert: `2.0e-15`

  Die Optionsvariable `ratepsilon` kontrolliert die Genauigkeit, mit der Gleitkommazahlen in rationale Zahlen umgewandelt werden, wenn die Optionsvariable `bftorat` den Wert `false` hat. Für ein Beispiel siehe die Optionsvariable `bftorat`.

Funktion: rationalize (expr)

  Konvertiert alle Gleitkommazahlen einschließlich großer Gleitkommazahlen, die in dem Ausdruck expr auftreten, in rationale Zahlen.

  Es mag überraschend sein, dass `rationalize(0.1)` nicht das Ergebnis `1/10` hat. Dies ist nicht speziell für Maxima. Ursache ist, dass die gebrochene Zahl `1/10` in der internen Darstellung als binäre Zahl keine endliche Darstellung hat.

  Siehe auch die Funktionen `float` und `bfloat` sowie die Auswertungsschalter `float` und `numer`, um eine rationale Zahl in eine Gleitkommazahl umzuwandeln.

  Beispiele:

      (%i1) rationalize (0.5);
                                      1
      (%o1)                           -
                                      2
      (%i2) rationalize (0.1);
                              3602879701896397
      (%o2)                   -----------------
                              36028797018963968
      (%i3) fpprec : 5$
      (%i4) rationalize (0.1b0);
                                   209715
      (%o4)                        -------
                                   2097152
      (%i5) fpprec : 20$

      (%i6) rationalize (0.1b0);
                           236118324143482260685
      (%o6)                ----------------------
                           2361183241434822606848

      (%i7) rationalize (sin (0.1*x + 5.6));

                     3602879701896397 x   3152519739159347
      (%o7)      sin(------------------ + ----------------)
                     36028797018963968    562949953421312

      (%i8) float(%);
      (%o8)                          sin(0.1 x + 5.6)

Funktion: ratnump (number)

  Gibt `true` zurück, wenn number eine ganze oder rationale Zahl ist. In allen anderen Fällen ist das Ergebnis `false`.

  Siehe auch die Funktionen `numberp`, `integerp`, `floatnump` und `bfloatp`.

  Beispiele:

      (%i1) ratnump(1/2);
      (%o1)                         true
      (%i2) ratnump(3);
      (%o2)                         true
      (%i3) ratnump(3.0);
      (%o3)                         false

Previous: Einführung in Zahlen, Up: Zahlen [Contents][Index]