Как рассчитать квадратный корень без использования библиотеки и встроенных методов в Javascript? - PullRequest
0 голосов
/ 23 сентября 2018

Пожалуйста, помогите мне написать функцию для вычисления квадратного корня из положительных действительных чисел по формуле:

x i+1 = (1/2) * (xi + (A / x1)),

где 'A' - введите действительное число.

На нулеитерация следующие операторы были приняты x0 = A Ошибка должна быть не менее 10-6

Вывод

sqrt (2) = 1.414
sqrt (9) = 3
sqrt (25) = 5

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы также можете использовать разделение пополам - более общий метод решения проблем:

var sqrt = function(n) {
    if (n<0) {
        throw "are you kidding?! we are REAL here.";
    }
    if (n === 0) {
        return 0;
    }
    var bisect = function(l,r) {
        var avg = (l+r)/2;
        if (r-l<0.00000001) {
            return (l+r)/2;
        }
        if (avg*avg > n) {
            return bisect(l, avg);
        } else if (avg*avg < n) {
            return bisect(avg, r);
        }
    }
    return bisect(0, n < 1 ? 1 : n);
}
0 голосов
/ 23 сентября 2018

Вы можете взять x i (x) и новое значение x i + 1 (x1) и проверить, равны ли значения.Затем завершите серию и верните это значение.

Для начала вам понадобится соответствующее значение, например половина заданного значения.

function sqrt(a) {
    var x,
        x1 = a / 2;
        
    do {
        x = x1;
        x1 = (x + (a / x)) / 2;
    } while (x !== x1);
    return x;
}

console.log(sqrt (2)); // 1.414
console.log(sqrt (9)); // 3
console.log(sqrt (25)); // 5
...