Как узнать квадратный корень из числа? Я использую вавилонский метод, но он возвращает неправильный ответ для числа от 0 до 1 - PullRequest
1 голос
/ 23 марта 2012

Я использую код ниже, это в основном вавилонский метод, как я могу изменить его так, чтобы он возвращал правильное значение для чисел с ч / б 0 и 1. Более того, кто-нибудь может сказать мне, как я могу найти кубический корень изномер

int main(){
    double n;
    cin>>n;
    double e= 0.0000001;
    double x = n;
    double r = 1;
    while(x-r >0.0000001){
        x = (x+r)/2;
        r = n/x;
    }
    printf("%f",x);
    return 0;
}

1 Ответ

2 голосов
/ 23 марта 2012

I.Не используйте разницу, но ее абсолютную ценность.Например,

  while((x-r >0.0000001)||(r-x>0.0000001)){ ...

II.Используйте следующую итерацию для y = x ^ (1 / n): y '= ((n-1) * y ^ n + x) / (n * y ^ (n-1))

РЕДАКТИРОВАТЬ

II.описывает шаг итерации для n-го корня из x.Для корня куба используйте

y '= (2y ^ 3 + x) / (3y ^ 2)

Подход основан на методе Ньютона, см. http://en.wikipedia.org/wiki/Newton%27s_method

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...