0 Daumen
903 Aufrufe

bei folgenden beiden Funktionen tritt Stellenauslöschung ab 10-14  auf:

f(x)= (ex-1)/x

g(x)=(ln(x+1)-x)/x2

Hat jemand eine Idee, wie man die beiden Funktionen so umschreiben kann, dass keine Stellenauslöschung mehr auftritt?

Avatar von

Ein Vorschlag: \(\dfrac{\mathrm e^x-1}x=1+\frac12x+\frac16x^2+\frac1{24}x^3+\frac1{120}x^4+\cdots\).
Zur numerischen Berechnung und um Auslöschung zu vermeiden, empfiehlt es sich wie folgt zu klammern:
\(\Big(\big((\frac1{120}\cdot x+\frac1{24})\cdot x+\frac16\big)\cdot x+\frac12\Big)\cdot x+1\).
Je nach Bedarf auch mehr oder weniger Summanden berücksichtigen.

2 Antworten

0 Daumen

Du sprichst in Rätseln. Die Funktionen sind für jedes x ihres Definitionsbereichs eindeutig und unauslöschbar definiert. Du hast möglicherweise irgendeinen numerischen Näherungsschnickschnack unter Verwendung irgendeines in seiner Genauigkeit limitierten Rechensystems im Hinterkopf.

Einzelheiten müsstest du schon offenlegen...


Auch aus einem anderen Grund ist

Stellenauslöschung ab 10-14  

unklar. Geht es um eine Grenze, die bei x=10-14 erreicht wird, oder spielen die Funktionswerte verrückt, wenn sie 10-14 erreichen?

Was heißt "ab"? Heißt es oberhalb oder unterhalb von 10-14?

Avatar von 53 k 🚀

ich muss die Funktionswerte von 1 bis 10-20 angeben. Von 10-14 bis 10-20 zeigt mein Python-Programm und der Taschenrechner 0,0 an. Wenn man sich aber die Funktion grafisch anschaut kann das nicht sein, daher bin ich auf Stellenauslöschung gekommen.

Die Funktion ex besitzt die Reihenentwicklung \(1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+\frac{x^4}{4!}+\cdots\)

ex-1 ist dann  \(x+\frac{x^2}{2!}+\frac{x^3}{3!}+\frac{x^4}{4!}+\cdots\), und wenn man das noch durch x teilt, erhält man  \(1+\frac{x}{2!}+\frac{x^2}{3!}+\frac{x^3}{4!}+\cdots\)

Wenn x=10-14 sein soll, erhält man \(1+\frac{10^{-14}}{2!}+\frac{10^{-28}}{3!}+\frac{10^{-42}}{4!}+\cdots\), also
1,0000000000000050000000... (jetzt kommen nochmal einige Nullen, bis \(\frac{10^{-28}}{3!}\) zur Wirkung kommt).

0 Daumen

Aloha :)

Dein Problem ist, dass der IEEE754-normierte Fließkommatyp "double" nur 12 bis 14 gültige Stellen hat. Da kannst du mit Umschreiben der Gleichungen wenig erreichen.

Avatar von 148 k 🚀

Nein.  Sein Problem bei der Aufgabe

ich muss die Funktionswerte von 1 bis 10-20 angeben

ist, dass er diese Aufgabe mit IEEE754-normierten Fließkommatyp-Krücken (Taschenrechner, Python) lösen will.

Wenn man diesen Weg nicht geht, ist deine Aussage

Da kannst du mit Umschreiben der Gleichungen wenig erreichen.

nicht richtig.

Deswegen ja das "Da"...

Ja, das sind die sprachlichen Feinheiten. Im gesprochenen Satz (mit deutlich betontem "DA") hätte ich dir nicht widersprochen. (Fettdruck oder Unterstreichung hätten den gleichen Effekt.)

Okay, Problem geklärt.

Und was kann ich jetzt in meinem Programm eingeben, damit dies nicht auftritt?

Hast du meinen Kommentar zur Anwendung der Reihenentwickluing nicht gelesen?
(Oder den Kommentar von Spacko?)


Auch für ln(1+x) gibt es eine Reihenentwicklung.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community