2013-11-08 4 views
-3

Может кто-нибудь объяснить следующий код? Что такое использование переменной ort?Требуется код C

void squart_root(double a) 
{ 
if (a>0.0){ 
    double root = 1, ort = 0; 
    while(ort!=root) 
    { 
     ort = root; 
     root = ((a/root) + root)/2; 
    } 
    printf("Root is : %lf",root); 
}else if(a==0.00000){ 
    printf("Root is : %lf",a); 
}else{ 
    printf("Cannot find the square root of a negative number"); 
    } 
} 
+0

Похоже, что он вычисляет квадратный корень из числа. С чем вы столкнулись? – paddy

+2

http://en.wikipedia.org/wiki/Methods_of_computing_square_roots, первое «большое» уравнение, более подробно объясняемое ниже. «While» продолжает последовательность, пока вычисление не превысит точность «double». –

+0

да, я могу это понять. Мне нужен алгоритм и как он выполняется по строкам? – user2967429

ответ

0

Это похоже на метод вычисления Ньютона методом квадратного корня (полученный из метода Ньютона-Рафсона).

Вы можете узнать больше об этом here.

Это выглядит следующим образом:

X(n+1) = (A/X(n) + X(n))/2 
    It converges when X(n) = X(n+1) (that is in your case) or under some precision. 

На каждой итерации, X (п) должен приблизиться к реальному корню.

Целью ort является хранение X (n) и проверка на эту сходимость. Когда корень сходится, цикл завершается. Вот почему ort здесь.

Вы можете прочитать о методе Ньютона-Рапсона (просто Google), и вы сможете получить это уравнение.