n Dezimalstellen von der Quadratwurzel aus 2 berechnen



  • Hallo,

    wie der Titel schon beschreibt, möchte ich gerne eine Funktion erstellen,
    mit der ich n Nachkommastellen von sqrt(2) berechnen kann. zB func(100), sollte mir 100 Nachkommastellen ausgeben können.

    Ich habe folgendes Javascript gefunden, doch sehe mich nicht dazu in der Lage, es in C/C++ zu übersetzen: http://www.arndt-bruenner.de/mathe/scripts/wurzelziehen.js

    Danke im Voraus!



  • Schau doch mal hier, das ist einfach geschrieben: http://www.diaware.de/html/wurzel.html



  • Ich hab es versucht, jedoch stößt das schnell an seine Grenzen, da ich integer overflows bekomme 🙂



  • Phew schrieb:

    Ich hab es versucht, jedoch stößt das schnell an seine Grenzen, da ich integer overflows bekomme 🙂

    Versuche es mit schriftlicher Arithmetik, also strings.



  • Ich kann mich dunkel an das schriftliche Wurzelziehen erinnern (es war ein Formalismus, der die 2. Bionomische Formel ausnutzte und dabei Stelle fuer Stelle berechnete). Ins Dunkele gefrage: Waere eine solche Umsetzung nicht ein Weg?



  • MBCS-CITP schrieb:

    Ich kann mich dunkel an das schriftliche Wurzelziehen erinnern (es war ein Formalismus, der die 2. Bionomische Formel ausnutzte und dabei Stelle fuer Stelle berechnete). Ins Dunkele gefrage: Waere eine solche Umsetzung nicht ein Weg?

    ich kann mich dunkel auch daran erinnern.
    das verfahren, an das ich mich dunkel erinnere, hatte den nachteil, daß mit ejder weiteren stelle die zwischenergebnisse auch um eine stelle wuchsen. es war sehr fein, um wurzeln aus 4-stelligen oder auch mal leicht größeren zahlen par hand zu berechnen und stand in einem buch mit dem titel "höhere mathematik", das schon alt war, als ich jung war.



  • vielleicht hilft das ja weiter:
    http://de.wikipedia.org/wiki/Quadratwurzel#Praktische_Bestimmung_von_Quadratwurzeln_aus_reellen_Zahlen, man muß mal schauen, wie sich die summenterme bei taylor verhalten. speichert man die ab, dann weiß man ja, auf welche nachkommastellen die noch einfluss haben. aber es kann da in den zwischenschritten probleme geben, z.B. bei xn oder 22*n-1. Den Faktor vor xn kann man ja einmalig berechnen und in 'ner tabelle speichern. bin gerad zu faul, das zu coden, um zu schauen, ob das klappt.

    Gruß H@ppy



  • oh, ich seh gerade, dass das mit taylor nur bei zahlen |x|<1 geht. aber dafür hab ich mal die ersten 50 faktoren von Matlab berechnen lassen, die wurzel lässt sich also berechnen mit

    wurzel(X-1)= 1+ Σ( faktor(n)*xn)

    faktoren:
    0.50000000000000
    -0.12500000000000
    0.06250000000000
    -0.03906250000000
    0.02734375000000
    -0.02050781250000
    0.01611328125000
    -0.01309204101563
    0.01091003417969
    -0.00927352905273
    0.00800895690918
    -0.00700783729553
    0.00619924068451
    -0.00553503632545
    0.00498153269291
    -0.00451451400295
    0.00411617453210
    -0.00377315998776
    0.00347527893609
    -0.00321463301589
    0.00298501637189
    -0.00278149252836
    0.00260009084172
    -0.00243758516412
    0.00229133005427
    -0.00215913793575
    0.00203918582821
    -0.00192994373027
    0.00183011905457
    -0.00173861310184
    0.00165448666143
    -0.00157693259917
    0.00150525384467
    -0.00143884558681
    0.00137718077595
    -0.00131979824362
    0.00126629290942
    -0.00121630766299
    0.00116952659903
    -0.00112566935157
    0.00108448632651
    -0.00104575467199
    0.00100927485785
    -0.00097486776043
    0.00094237216841
    -0.00091164264118
    0.00088254766327
    -0.00085496804879
    0.00082879555750
    -0.00080393169078

    Falls jemand noch 'ne idee hat, wie man wurzeln berechnen kann, das würd mich auch noch mal interessieren.



  • happyaura schrieb:

    Falls jemand noch 'ne idee hat, wie man wurzeln berechnen kann, das würd mich auch noch mal interessieren.

    damit haste aber viel zu rechnen, so scheint's.
    schnelle alternative ist verfahren des henon (in dem fall identisch mit f. des newton).



  • Mit hilfe des Gnu tools "bc", kann ich innerhalb von wenigen Sekunden tausende Nachkommastellen von sqrt(2) berechnen.
    Befehl: echo "scale=5000;sqrt(2)" | bc
    Gibt es davon eine .lib, die ich in mein Projekt einfügen kann?


Anmelden zum Antworten