Получение логарифма не используя Math.log()

от автора

Доброго времени суток.

Возник вопрос, как можно решить уравнение, не используя логарифмы:

$3^x = 2$


Решил методом перебора:

var a = +prompt("Какое основание логарифма (a)?", 3); var b = +prompt("Какого числа степень узнать (b)?", 2); var c = +prompt("Какова точность вычисления степени, знаков?", 5);  function log(a,b) // log 2 8 = 3 // Основание а = 2  // число b = 8 - результат // Известно основание и результат { var x = b; var i = 0; // целая часть степени  while ( x > a ) { x = x / a; i++;	 } x = b; // X - Осталась дробная часть, которая не поделилась нацело var j = 0; // дробная часть степени var f = 0; for (var m = 1; m < c; m++) {   var dekady = Math.pow(10,m);   while (Math.pow(a,i + f + j/dekady) < x)   {	   	  j++;   }   j--;   f = f + j / dekady;   j = 0; } return i + f; } var k = log(a,b); alert("log ("+a+") " + b + " = " + k + "\n Точность вычисления(знаков после запятой): " + c + "\n Абсолютная погрешность: " + (b - Math.pow(a, k)) + "\n Относительная погрешность: " + ((b - Math.pow(a, k)) / b) + "%"); 

Есть ли ещё какие-то методы для расчета таких уравнений без логарифмов? (немного абстрагироваться от привычного и посмотреть со стороны).

Спасибо за внимание!
ссылка на оригинал статьи https://habrahabr.ru/post/325150/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *