2013-09-06 16 views
7

Ich benutze unten Methode, um Nth Wurzel des doppelten Wertes zu berechnen, aber es dauert eine Menge Zeit für die Berechnung der 240. Wurzel. Ich habe von der Newton-Methode erfahren, war aber nicht in der Lage, sie mit meinen begrenzten Programmierkenntnissen in eine Methode umzusetzen, würde mich über jede Hilfe freuen.C# finde Nth Root

static double NthRoot(double A, int N) 
      { 
       double epsilon = 0.00001d;// 
       double n = N; 
       double x = A/n; 
       while (Math.Abs(A-Power(x,N)) > epsilon) 
       { 
        x = (1.0d/n) * ((n-1)*x + (A/(Power(x, N-1)))); 
       } 
       return x; 

      } 
+0

hast du bei dieser einen Blick? http://en.wikipedia.org/wiki/Newton%27s_method#Pseudocode sollte nicht zu schwer in echten Code zu übersetzen sein – DrCopyPaste

+1

Was ist eigentlich die Frage hier? Willst du einfach, dass es schneller ist? Oder möchten Sie explizit sehen, wie die Newton-Methode in echtem Code aussehen würde? – DrCopyPaste

+0

Ich stieß auf Kriegsgefangene, aber aus irgendeinem Grund dachte ich, es ist dasselbe wie nach der Methode, die ich oben gepostet habe. Ich bin kein Programmierer und hätte hier keine Frage gestellt, wenn ich es nicht selbst herausfinden könnte. Danke – illusion

Antwort

27
static double NthRoot(double A, int N) 
{ 
    return Math.Pow(A, 1.0/N); 
} 

Von Wikipedia:

In Kalkül, sind Wurzeln als Sonderfälle von Potenzierung behandelt, wobei der Exponent eine Fraktion:

\sqrt[n]{x} \,=\, x^{1/n} 
+0

Aber ich möchte die 3. Wurzel, die 1.0/3 verwenden == 0.333333333! = 1/3 – lindexi

+4

Die Computerarithmetik ist immer an die Genauigkeit des zugrunde liegenden Datentyps gebunden, um innerhalb einer Genauigkeitsziffer gleich zu sein. –