Ansicht
Dokumentation

MILL_MATH_CONV_TO_FRACT - Umwandlung einer Zahl in einen Bruch mit max. z-stelligen Zähler/Nenner

MILL_MATH_CONV_TO_FRACT - Umwandlung einer Zahl in einen Bruch mit max. z-stelligen Zähler/Nenner

Fill RESBD Structure from EBP Component Structure   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Eine Zahl in Bruch- oder Dezimaldarstellung wird in einen Bruch u / v mit maximal z-stelligen Zähler und Nenner umgewandelt.

Methode

Eine Zahl x wird als regulärer Kettenbruch mit ganzzahligen Partialquotienten A() entwickelt:

                               1
   X = A(0) +  ------------------------------------
                                    1
                A(1) +  ---------------------------
                                        1
                        A(2) +  -------------------

                                           ...

                                     --------------
                                                1
                                     A(n-1) +  ----
                                               A(n)

Die Kettenbruchentwicklung wird abgebrochen, wenn das Ende des Kettenbruchs erreicht ist (X = x) oder der neu errechnete Zähler oder Nenner nicht mehr darstellbar ist (X ist eine Näherung für x).

Im letzteren Fall ist die ausgegebene Darstellung die beste in der Form u / v darstellbare Zahl bezüglich "medianter Rundung".
D.h. sind u / v und u' / v' zwei benachbarte darstellbare Zahlen
mit u / v < x < u' / v', so wird

- abgerundet                                &lt;
- aufgerundet                     falls  x  >  (u + u') / (v + v')
- zum kleineren Nenner gerundet             =

Beispiel

Die Kettenbruchentwicklung des Umrechnungsfaktors

   FT2      145161
   ---  =  -------  =  0,09290304  =  x
    M2     1562500

mit der Beschränkung auf einen max. 5-stelligen Zähler und Nenner führt zu der endlichen Folge

   ( 0, 10, 1, 3, 4, 4, 8, 1, 2, 1, 1, 1 )

für die Partialquotienten A() bzw. nach Umwandlung in einen echten Bruch zu der Näherung

          7099
   X  =  -----  =  0,09290304005863...
         76413

Hinweise

  • u und v sind immer relativ prim zueinander, d.h. die Darstellung des Ergebnisses als echter Bruch ist immer gekürzt.
  • Jede rationale Zahl besitzt eine endliche Kettenbruchentwicklung. Wird diese Kettenbruchentwicklung nicht abgebrochen, so entspricht der Nenner des letzten Partialquotienten A(n) dem größten gemeinsamen Teiler von Zähler und Nenner der ursprünglichen rationalen Zahl x (euklidscher Algorithmus).
  • Nur bei Datenhaltung (Speicherung) der Mengen als rationale Zahl:
    Es kann als optionaler Parameter ein Pol p mitgegeben werden, so daß die Bedingung x + r = p (mit Rest r = p - x und r = MILL_MATH_CONV_TO_FRACT(r) ) erfüllt ist, d.h. alle Zähler und Nenner von x, r, p sind maximal z-stellig.

    Beispiel:
    Eine Menge p wird in zwei Teile x und r geteilt.

    Es läßt sich zeigen, daß im Fall eines vorgegebenen Poles p nur die Vielfachen des Nenners von p als Kandidaten für die Nenner von x und r die obige Bedingung erfüllen können.

    Da in die Kettenbruchentwicklung von x der bereits vorhandene Nenner von p nicht eingeht, muß die Näherung wie folgt berechnet werden:
  • Bestimme für alle Vielfachen des Nenners von p die x und r so, daß die obige Bedingung erfüllt ist.

  • Berechne für alle Näherungen die relative Abweichung zur ursprünglichen Zahl x.

  • Kürze Zähler und Nenner der besten Näherung (u und v sind im Gegensatz zur Kettenbruchentwicklung nicht immer teilerfremd).

Weiterführende Informationen

Knuth, D.E.: The Art of Computer Programming, Volume 2, Seminumerical Algorithms, Second Edition. Reading: Addison-Wesley 1981. S. 313-315, 339-341, 363 (40. u. 43.).

bzw.

Knuth, D.E.: Arithmetik. Übers. von R. Loos. Originaltitel: The Art of Computer Programming. Berlin; Heidelberg: Springer 2001. S. 148-150, 176-180, 200 (40. u. 43.).





Parameter

E_DENOM
E_ERROR_ABS
E_ERROR_REL
E_GCD
E_NUMER
E_VALUE
I_DENOM
I_DENOM_POLE
I_FRACT_LENGTH
I_NUMER
I_NUMER_POLE

Ausnahmen

CONVERSION_OVERFLOW
E_FACTORS_INVALID
E_VALUE_INVALID
I_FACTORS_INVALID
I_POLE_FACTORS_INVALID

Funktionsgruppe

MILL_MATH

CL_GUI_FRONTEND_SERVICES - Frontend Services   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8713 Date: 20240523 Time: 151459     sap01-206 ( 65 ms )