sqrt(1/eps) als Abschätzung eines Grenzwertes - warum?



  • Hello.

    Ich habe hier ein Programm, welches eine Summe berechnet: 1/k^2 für k von 1 bis unendlich. Dafür gibt es ein sehr effektives C-Programm, welches diese Summe von oben nach unten aufsummiert. Und zwar so rum, damit die sehr sehr kleinen Summanden nicht weggerundet werden. Jedenfalls wird der obere Startwert für k mit sqrt(1/DBL_EPSILON) bestimmt. DBL_EPSILON ist dabei eine Systemkonstante und ist eine winzige Zahl: Der maximale Abstand zweier Double-Zahlen. Damit wird diese Summe sehr schnell auf 16 Nachkommastellen berechnet (es erfolgt dabei noch eine Restabschätzung, aber das ist jetzt nicht mein Problem).

    Nun frage ich mich warum gerade sqrt(1/eps). Ich habe nach dieser Formel gegoogled, und sie taucht auch in vielen Quelltexten auf. Aber leider habe ich bisher noch keine Erklärung gefunden, warum das so ist. Es hat jedenfalls nichts damit zu tun, dass in der Summenformel k zum Quadrat steht, sondern hat irgendeinen "allgemeinen" Grund. Kann mir vielleicht jemand weiterhelfen?

    Dankeschön!

    flowschi



  • flowschi schrieb:

    Jedenfalls wird der obere Startwert für k mit sqrt(1/DBL_EPSILON) bestimmt. DBL_EPSILON ist dabei eine Systemkonstante und ist eine winzige Zahl: Der maximale Abstand zweier Double-Zahlen.

    Der dürfte irgendwo bei 10^308 liegen 😉
    Epsilon ist die kleinste Zahl, für die 1 + Epsilon ungleich 1 ist.

    Nun frage ich mich warum gerade sqrt(1/eps). Ich habe nach dieser Formel gegoogled, und sie taucht auch in vielen Quelltexten auf. Aber leider habe ich bisher noch keine Erklärung gefunden, warum das so ist. Es hat jedenfalls nichts damit zu tun, dass in der Summenformel k zum Quadrat steht, sondern hat irgendeinen "allgemeinen" Grund. Kann mir vielleicht jemand weiterhelfen?

    Oh, ich glaube schon. Du summierst ja 1/k^2. Wenn du mit Sqrt(1/Epsilon) anfängst ist also das erste Summenglied Epsilon. Der Grenzwert dieser Reihe ist ja bekanntlich (harhar) pi^2/6, also größenordnungsmäßig etwa 1...



  • Ja, mit DBL_EPSILON hast du recht. Hatte die falsche Definition im Kopf.

    Aber unser Lehrender, der die Aufgabe stellte, sagte dass bei sqrt(1/DBL_EPSILON) die Wurzel nicht drin ist, weil k in der Formel wieder quadriert wird. Es soll wohl eine andere, allgemeinere Erklärung geben.



  • flowschi schrieb:

    Ja, mit DBL_EPSILON hast du recht. Hatte die falsche Definition im Kopf.

    Aber unser Lehrender, der die Aufgabe stellte, sagte dass bei sqrt(1/DBL_EPSILON) die Wurzel nicht drin ist, weil k in der Formel wieder quadriert wird. Es soll wohl eine andere, allgemeinere Erklärung geben.

    In was für Schritten summierst du denn?

    Und nur weil dein Lehrer das sagt muss es noch lange nicht richtig sein, dazu kommt, dass dein Lehrer evt. was ganz anderes gesagt/gemeint hat und du es evt. nur falsch verstanden hast.



  • Die "Lösung" habe ich nun oberflächlich mitbekommen, aber die ganze Erklärung habe ich noch nicht erfasst. Jedenfalls: Mein kleinster Wert E (Epsilon), den ich in der Genauigkeit von double noch haben möchte, ergibt sich aus:

    E = 1/n - 1/(n+1)

    Der Subtrahend steht dabei für den Reihenrest, angenähert durch den nächsten, kleineren Summanden der Summe. Bringe ich die Brüche zusammen, ergibt sich:
    1/(n(n+1)), was dann im Nenner n^2 + n gibt und man das n einfach vernachlässigen darf. Übrig bleibt dann 1/n^2.

    Diese Herleitung habe ich schriftlich, aber die dazugehörige Erklärung (noch) nicht ganz mitbekommen.


Log in to reply