2013-09-06 23 views
7

Tôi sử dụng phương pháp dưới đây để tính Nth Root của giá trị kép, nhưng phải mất rất nhiều thời gian để tính toán gốc thứ 240. Tôi phát hiện ra phương pháp Newton, nhưng không thể thực hiện nó thành một phương pháp với kỹ năng lập trình hạn chế của tôi, sẽ đánh giá cao bất kỳ sự giúp đỡ nào.C# tìm 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

bạn đã có một cái nhìn lúc này? http://en.wikipedia.org/wiki/Newton%27s_method#Pseudocode không quá khó để dịch sang mã thực – DrCopyPaste

+1

Câu hỏi thực sự ở đây là gì? Bạn có muốn nó nhanh hơn không? Hay bạn rõ ràng muốn xem phương thức newton sẽ trông như thế nào trong mã thực? – DrCopyPaste

+0

Tôi đã gặp POW, nhưng vì một lý do nào đó tôi mặc dù nó giống như phương pháp tôi đã đăng ở trên. Tôi không phải là lập trình viên, và sẽ không đăng câu hỏi ở đây trừ khi tôi không thể tự mình tìm ra. Cảm ơn bạn – illusion

Trả lời

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

Từ Wikipedia:

Trong giải tích, rễ được coi là trường hợp đặc biệt của lũy thừa, nơi số mũ là một phần nhỏ:

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

Nhưng tôi muốn root thứ 3 sử dụng 1.0/3 == 0.333333333! = 1/3 – lindexi

+4

Số học máy tính luôn bị ràng buộc bởi độ chính xác của kiểu dữ liệu nằm bên dưới. Trong đủ số chữ số chính xác, nó bằng nhau. –

Các vấn đề liên quan