Was ist die Wurzel aus 899999999...

MorbusSchlatter

Neues Mitglied
Thread Starter
Dabei seit
08.10.2007
Beiträge
13
Reaktionspunkte
0
Moin.
Gibt es einen Internetrechner der 17 Stellen hinter dem Komma berechnen kann?
Oder hat jemand zufällig einen Taschenrechner oder ähnliches der mehr als 16 Stellen rechnen kann, mit dem er mir eine sehr lange Zahl sagen kann?
Ich brauch das Ergebniss aus 90 000 000 000 000 000 (16 Nullen) - 1 und daraus die Wurzel und danach geteilt durch 300 000 000 .

Also nochmal:

(Wurzel aus ( 90 000 000 000 000 000 -1) ) geteilt durch 300 000 000


Da müsste irgendwas mit 0,9999999999... rauskommen.
Ich will aber zumindest die erste Zahl hinter dem Komma die keine 9 ist noch zeigen, damit es noch drastischer aussieht. Fragt nicht wofür man sowas braucht...

(Wurzel aus (90 000 000 000 000 000 -4) ) geteilt durch 300 000 000
und
(Wurzel aus (90 000 000 000 000 000 -100) ) geteilt durch 300 000 000
wären auch nett.
 
Ähm, wenn Du weisst, dass die Änderung an der 17. Stelle ist, was brauchst Du dann noch.

Ansonsten: Terminal aufmachen "bc -l" eingeben, ausrechnen.

(Die Option ist ein kleines "ell", kein großes "ih")

Code:
sqrt( 90000000000000000-1)/300000000
.99999999999999999444
 
Ähm, wenn Du weisst, dass die Änderung an der 17. Stelle ist, was brauchst Du dann noch.

Ansonsten: Terminal aufmachen "bc -l" eingeben, ausrechnen.

(Die Option ist ein kleines "ell", kein großes "ih")

Code:
sqrt( 90000000000000000-1)/300000000
.99999999999999999444

Oh, wusste gar nicht dass es sowas gibt .
0.99999999999999999444 also.

Siehste, ist ja erst die 18. Stelle wo sich was ändert...
 
öhm, sowohl Ruby als auch PHP-Interpreter bekommen da genau 1 heraus ( und beide rechnen IMHO mit 32 Nachkommastellen). Dir ist schon klar das das Architekturspezifische Rundungsfehler der sog. Gleitkommaarithmetik sind?
 
Man kann auch die Methode von Al-Hwarizmi aus dem 9. Jahrhundert anwenden. Er entwickelte eine Näherungsformel für die Wurzel:

sqrt(a²+b) ist ungefähr a+b/2a. In unserem Fall ist a²=9e16 und b =-1.
Also:
sqrt(9x10e16-1)= 3e8-(1/6e8) = 3e8 - (1/6)e-8

Der Fehler hierbei ist von der Größenordnung 1e-16, also noch einmal 8 Stellen weiter. Man kann sich das klarmachen, wenn man die erste binomische Formel hinschreibt, etwas umformt und daraus die Wurzel zieht. Man braucht also nicht unbedingt einen Rechner dazu, sondern kann das schnell auf einem Bierdeckel ausrechnen.

sqrt(9e16-1)/3e8= (3e8-1/6e8)/3e8
= 1 - (1/18)e-16 = 1 - 0,05555...e-16 = 1 - 5,555...e-18

Es ändert sich also erst die 18. Stelle hinter dem Komma. Das Ergebnis in #3 ist also richtig und kein Rundungsfehler.

Die anderen beiden Wurzeln kannst du ja jetzt leicht selbst ausrechnen.
 
Gernot2 schrieb:
Man kann sich das klarmachen, wenn man die erste binomische Formel hinschreibt, etwas umformt

magst Du das nochmal erläutern? Ich habe nämlich Probleme darin:

sqrt(9e16-1)/3e8= (3e8-1/6e8)/3e8
= 1 - (1/18)e-16 = 1 - 0,05555...e-16 = 1 - 5,555...e-18

die erste binomische Formel wiederzuerkennen!
 
Für Big Integer Arithmetik gibt's auch nen Prima Taschenrechner-Programm:

LeanCalc: http://www.entropy.ch/software/macosx/#leancalc
 
(a+b)² = a² + 2ab +b²

Jetzt substituieren wir b durch b/2a, das kann man problemlos machen:

(a + b/2a)² = a² + b + b²/4a²

Wenn a viel größer als b ist, ist der Term b²/4a² sehr klein und wird einfach weggelassen. Man kann damit aber auch den Fehler der Näherung abschätzen.

(a + b/2a)² = a² + b

Wurzel ziehen:

a + b/2a = sqrt(a² + b)

Ich gebe zu, daß die Substitution sich nicht sofort aufdrängt, ich habe eben auch mal eben eine Seite vollschreiben müssen, bis es mir wieder eingefallen ist.

Das schöne bei der Näherungsmethode ist, daß man keinen Rechner braucht und die Ergebnisse irgendwelcher Programme auch in ein paar Minuten nachprüfen kann.
 
-hab nicht nachgedacht-
 
Gernot2 schrieb:
Ich gebe zu, daß die Substitution sich nicht sofort aufdrängt

Da bin ich beruhigt! Danke Dir für die Mühe der Erläuterung!
 
Bei 'bc' kann man mit 'scale=x' auch die angezeigten Nachkommastellen
einstellen. Im Fall von scale = 1000 waere das dann:

Code:
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
scale=1000
sqrt( 90000000000000000-1)/300000000
.9999999999999999944444444444444444290123456790123455932784636488340\
18609015393994817858499932259648766240264088581799296292464340663717\
44944474608980670092822572897096441354437707166011911130525875889977\
26320004012203439670758588782527646020700192851810182258347295551987\
53822541888059641663477190822490066171339096486920454025356321958609\
29963423995795881698322049632278148191165669183709828189155181729696\
68850033702528314890774319811536872418670760549871308552190525876856\
46734107471859674267642235735533493680498930800130106240821054239557\
61441719383535581972001857712374099753857099732176682125329273650618\
72813360052681703358515089537120272946359918431617628734110882573898\
29026416723481559044348797416591115206497303353662735304303578426497\
32672862051299667689358453156559675968020264974520552105649174718746\
39752640881502705565301648155438721330647166936012512353463550757340\
01200258855000500209024833537839427882310209392418608960506250328051\
2246039124061333670152023646848840043714630375238
 
Es geht noch einfacher. Für die Wurzel gibt es die Näherungsformel

sqrt(1+x) = 1 + x/2

Das sind die ersten beiden Glieder der Reihenentwicklung für die Wurzelfunktion. Das nächste Glied wäre (-x²/8), wieder gut für die Fehlerabschätzung. Für kleine x liefert schon die lineare Näherung gute Werte.

Also:

sqrt(9e16-1)/3e8 = sqrt(9e16-1)/sqrt(9e16)
=sqrt(9e16/9e16 - 1/9e16)
=sqrt(1 - 1/9e16)

mit der linearen Näherung ergibt sich dann

= 1- 1/18e16

also das gleiche Ergebnis wie oben. Der Fehler läßt sich abschätzen zu x²/8 = (1/9e16)²/8 = 1/27e32/8 = 1/216 e32

das sind etwa 0,005e-32 = 5e-35. Der Fehler wird also erst in der 35. Stelle auftreten.

P.S. wie man im oberen Post nachprüfen kann :)
 
Zurück
Oben Unten