Gleitkommazahlen

Aufrufe: 792     Aktiv: 26.04.2020 um 12:20

0

Guten Morgen,

ich soll folgende Aufgabe in Python realisieren. Das ist vermutlich weniger das Problem.

Leider verstehe ich nicht, was man hier von mir möchte. Wie soll ich die Menge in einem Plot darstellen? Außerdem ist mir unklar, wie ich die Maschinengenauigkeit berechnen kann.

Ich hoffe, jemand hat eine Idee, was hier verlangt wird.

Vielen Dank!

Diese Frage melden
gefragt

Student, Punkte: 247

 
Kommentar schreiben
1 Antwort
0

Erst einmal zur Machinengenauigkeit: In der Literatur wird die Maschinengenauigkeit wie folgt definiert:

\( \epsilon_x = \frac{1}{2} b^{1-i} \).

ABER: Diese Definition sieht vor, dass die Maschinenzahlen die Struktur \( 0.f_1f_2... \) haben. Du hast hier aber immer eine 1 vor dem Komma, also eine Art Bit-Shift um eine Stelle. Da die Umwandlung deiner Maschinenzahlen in die andere Struktur durch

\( x = \pm m_i \cdot 2 \cdot 2^{\pm e} = \pm m_i 2^{1 \pm e} \)

erfolgt, können wir die definierten Maschinenzahlen auch so beibelassen und stattdessen die Maschinengenauigkeit wie folgt definieren:

\( \epsilon_x = \frac{1}{2} b^{1-(i+1)} = \frac{1}{2} b^{-i} \).

Das bedeutet du erhältst die Maschinengenauigkeiten \( \frac{1}{4}, \frac{1}{8}\) und \(\frac{1}{16}\) für i=1,2,3. Hier würde ich aber an deiner Stelle nochmal in deinen Unterlagen nachschauen, da der Begriff Maschinengenauigkeit immer etwas Interpretationsspielraum lässt, z.B. wird in MATLAB die Maschinengenauigkeit als Abstand von der 1 zur nächstgelegenen Maschinenzahl definiert.

Mit Python kannst du dir nun die Mengen \(A_1\), \(A_2\) und \(A_3\) berechnen:

Zum Beispiel hättest du für \(A_1\) die Menge

\( \{ \pm (1+ f_1 \cdot \frac{1}{2}) \cdot 2^{\pm e} \lvert\, f_1 \in \{0,1\}, e \in \{0,1,2\} \} \).

Da könntest du jetzt mit passenden for-Schleifen die Maschinenzahlen durchgehen und diese z.B. in einem Array speichern (die Null nicht vergessen hinzuzufügen). Das gleiche machst du dann für \(A_2\) und \(A_3\). 
Maschinenzahlen stellt man in der Regel auf einer Zahlengeraden dar. Wie man das jetzt sinnvoll plotten soll, wenn alle drei Mengen gleichzeitig in einem Plot dargestellt werden sollen, erschließt sich mir da leider auch nicht. Man könnte z.B. die Elemente in den Mengen \(A_i\) als x-Werte interpretieren und als y-Wert immer i verwenden. So hätte man die Zahlengeraden "übereinander" dargestellt. Inwiefern das sinnvoll ist sei aber mal dahingestellt. Eine sinnvolle Lösung,die Maschinengenauigkeit zu plotten, erschließt sich mir überhaupt nicht. Das ist meiner Meinung nach ein anzugebener Wert und keiner, der geplottet werden sollte (man könnte den höchstens im Plot in der Legende erwähnen).

 

Diese Antwort melden
geantwortet

Student, Punkte: 662

 

Vielen Dank für die umfangreiche Antwort! So ähnlich, wie du das beschreibst, habe ich das auch "geplottet". Das kam mir allerdings seltsam vor. Die Maschinengenauigkeit wird tatsächlich so ähnlich im Skript beiläufig erwähnt. Scheint also richtig zu sein. :)   ─   tisterfrimster 26.04.2020 um 12:20

Kommentar schreiben