Как вычислить логарифм: Посчитать логарифм — онлайн калькулятор

Как быстро найти любой логарифм с помощью обычного цикла

На прошлой неделе мы рассказали, что такое логарифм и зачем он нужен. Сегодня найдём логарифм с помощью программирования. 

Вот короткая версия теории:

  1. Логарифм — это в какую степень нужно возвести одно число, чтобы получить другое число.
  2. То, число, которое возводят в степень, называется основанием логарифма.
  3. Логарифм обозначается словом log.
  4. Например, log(10) 100 = 2, потому что 10² = 100.
  5. Есть ещё обозначение lg — это то же самое, что log(10). И есть ln — это то же самое, что log(e), где e — это число Эйлера, важная математическая константа. 
  6. Логарифмы используются в каждой значимой области нашей жизни, от биологии до физики.

Теперь, когда мы знаем достаточно про логарифм, то можем написать программу, которая нам найдёт любой логарифм по любому основанию.

В чём идея

Мы уже выяснили, что логарифм — это степень, в которую нужно возвести основание логарифма, чтобы получить нужное число.

Получается, что нам нужно подобрать такую степень, чтобы при возведении она давала такое же число — это и будет ответом к решению логарифма.

Алгоритм поиска будет таким: 

  1. Найдём минимальное значение степени, возведение в которую ещё не превысит наше число.
  2. Это значит, что следующее за ним целое число — уже перебор, и основание в этой степени точно превысит наше число.
  3. Будем делить этот промежуток пополам нужное количество раз, пока не получим нужную точность ответа после запятой.
  4. Когда цикл закончится, середина оставшегося промежутка и будет ответом.

Мы так уже делили границы пополам в задаче про то, как угадать число за 7 попыток, поэтому, если алгоритм показался немного непонятным, — перечитайте то решение и возвращайтесь сюда.

Готовим переменные

Для работы программы пользователь должен будет указать три вещи:

  1. Основание логарифма.
  2. Число, от которого мы берём этот логарифм.
  3. Точность решения.
    Точность указываем в количестве точно вычисленных знаков после запятой.

Выделим переменные для этого: 

# на старте границы поиска значения логарифма все равны нулю
start = 0
end = 0
middle = 0
# логарифм какого числа мы ищем
num = 600
# основание логарифма
base = 10
# сколько нужно знаков после запятой
accuracy = 4

Вычисляем границы

Поиск делаем так: начинаем считать от нуля и на каждом шаге увеличиваем это значение на единицу. Как только мы превысили аргумент (то, от чего берём логарифм) — это наша конечная граница. Соответственно, предыдущее значение, которое на единицу меньше, будет стартовой границей.

# пока основание в очередной степени не превысило само число — 
while base**end <= num:
    # увеличиваем конечную границу поиска на единицу
    end += 1
# откатываемся на один шаг назад от конечной границы, чтобы найти начальную границу
start = end - 1

Проверяем, вдруг мы сразу нашли решение

На всякий случай перед тем, как идти дальше, проверим, будет ли решением наша стартовая граница — это сразу может сэкономить нам много сил в дальнейшем:

Проверяем, вдруг мы сразу нашли решение
На всякий случай перед тем, как идти дальше, проверим, будет ли решением наша стартовая граница — это сразу может сэкономить нам много сил в дальнейшем:
# если сразу нашли целое значение степени
if base**start == num:
    # выводим решение
    print('log(' + str(base) + ')' + str(num) + ' = ' + str(start))
    # останавливаем программу
    exit(0)

Считаем логарифм

Мы будем считать логарифм не классическим способом из высшей математики, а простым приближением — найдём ответ с приемлемой точностью. За точность отвечает переменная accuracy, но в цикле мы её умножим на 4. Это неочевидный ход, поэтому сейчас объясним, в чём тут дело.

На каждом шаге цикла мы делим границу пополам, но если деление выпадает на чётную значимую цифру, то при делении у нас не увеличится количество знаков после запятой. Например, если нам нужна точность 2 знака после запятой, то если вторым шагом цикла мы разделим 0,4 на 2, то у нас останется один знак после запятой (0,2). Таких делений может быть 4 подряд, прежде чем мы доберёмся до следующего знака: 8 → 4 → 2 → 1, поэтому мы и умножаем требуемую точность на 4 — чтобы гарантированно получить нужную точность.

Теперь запишем этот цикл на языке программирования. Его можно было сделать изящнее, например, вложив условные операторы друг в друга или используя оператор множественного выбора, но так получается нагляднее:

# организуем цикл, чтобы получить нужную точность после запятой
for i in range(accuracy*4):
    # увеличиваем счётчик цикла
    i += 1
    # находим серединное значение
    middle = (start + end) / 2
    # если основание в этой степени больше нашего числа, то сдвигаем к середине конечную границу
    if base**middle > num:
        end = middle
    # если основание в этой степени больше нашего числа, то сдвигаем к середине начальную границу
    if base**middle < num:
        start = middle
    # если основание в этой степени равно нашему числу
    if base**middle == num:
        # выводим ответ и выходим из цикла
        print('log(' + base + ')' + num + ' = ' + start)
        break

Выводим ответ

Это самая простая часть алгоритма:

# когда цикл закончился — выводим ответ
print('log(' + str(base) + ')' + str(num) + ' = ' + str(middle))

Проверяем работу

Для проверки посчитаем log(10) 600 с помощью нашей программы:

Ответ программы — 2,77815 с точностью 5 знаков после запятой

Теперь запустим калькулятор и проверим наше решение:

Первые 5 знаков после запятой — те же самые, значит? Алгоритм работает верно
# на старте границы поиска значения логарифма все равны нулю
start = 0
end = 0
middle = 0
# логарифм какого числа мы ищем
num = 600
# основание логарифма
base = 10
# сколько нужно знаков после запятой
accuracy = 5
# пока основание в очередной степени не превысило само число — 
while base**end <= num:
    # увеличиваем конечную границу поиска на единицу
    end += 1
# откатываемся на один шаг назад от конечной границы, чтобы найти начальную границу
start = end - 1
# если сразу нашли целое значение степени
if base**start == num:
    # выводим решение
    print('log(' + str(base) + ')' + str(num) + ' = ' + str(start))
    # останавливаем программу
    exit(0)
# организуем цикл, чтобы получить нужную точность после запятой
for i in range(accuracy*4):
    # увеличиваем счётчик цикла
    i += 1
    # находим серединное значение
    middle = (start + end) / 2
    # если основание в этой степени больше нашего числа, то сдвигаем к середине конечную границу
    if base**middle > num:
        end = middle
    # если основание в этой степени больше нашего числа, то сдвигаем к середине начальную границу
    if base**middle < num:
        start = middle
    # если основание в этой степени равно нашему числу
    if base**middle == num:
        # выводим ответ и выходим из цикла
        print('log(' + base + ')' + num + ' = ' + start)
        break
# когда цикл закончился — выводим ответ
print('log(' + str(base) + ')' + str(num) + ' = ' + str(middle))

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

1 логарифм

Вы искали 1 логарифм? На нашем сайте вы можете получить ответ на любой математический вопрос здесь. Подробное решение с описанием и пояснениями поможет вам разобраться даже с самой сложной задачей и 2 в степени логарифм 2 по основанию 3, не исключение. Мы поможем вам подготовиться к домашним работам, контрольным, олимпиадам, а так же к поступлению в вуз. И какой бы пример, какой бы запрос по математике вы не ввели — у нас уже есть решение. Например, «1 логарифм».

Применение различных математических задач, калькуляторов, уравнений и функций широко распространено в нашей жизни. Они используются во многих расчетах, строительстве сооружений и даже спорте. Математику человек использовал еще в древности и с тех пор их применение только возрастает. Однако сейчас наука не стоит на месте и мы можем наслаждаться плодами ее деятельности, такими, например, как онлайн-калькулятор, который может решить задачи, такие, как 1 логарифм,2 в степени логарифм 2 по основанию 3,2 в степени логарифм 3 по основанию 2,3 в степени логарифм 2 по основанию 3,3 в степени логарифм 3 по основанию 2,log 0,log a x a,log a x y,log x,log x y,log в математике это,log что означает в математике,log что это такое в математике,log0,x log y,x y log,y a x log,выразить логарифм через логарифм,вычисление логарифмов,вычитание логарифмов,вычитание логарифмов с одинаковым основанием,действия над логарифмами,как выразить логарифм через логарифм,как вычислить логарифм числа,как вычислять логарифмы,как вычитать логарифмы с одинаковым основанием,как делать логарифмы,как из числа сделать логарифм,как логарифмировать число,как найти логарифм,как найти логарифм числа,как находить логарифмы,как понять логарифмы,как прологарифмировать число,как решать логарифм в степени,как решать логарифм в степени числа,как решать логарифмы в степени,как сделать логарифм из числа,как считается логарифм,как считать логарифм,как считать логарифмы,квадратный логарифм,когда логарифм равен 1,лог 1 по основанию 1,логарифм 0,логарифм 0 равен,логарифм 1 по основанию 1,логарифм 1 равен,логарифм 10,логарифм 10 по основанию 10 равен,логарифм 5,логарифм в квадрате формула,логарифм в степени как решать,логарифм в степени числа как решать,логарифм всегда положительный,логарифм дроби,логарифм как найти,логарифм как решается,логарифм как считается,логарифм как считать,логарифм нуля равен,логарифм от 0,логарифм от 1,логарифм от нуля,логарифм от числа,логарифм положительного числа b по основанию a,логарифм равен 0,логарифм равен 1,логарифм равен нулю,логарифм решение,логарифм с дробным основанием,логарифм числа 1 по основанию 1,логарифм числа логарифм степени,логарифмическая прогрессия,логарифмические,логарифмы как вычислить,логарифмы как находить,логарифмы как решать в степени,логарифмы решения,логарифмы сложение,логарифмы умножение,обратный логарифм,операции с логарифмами,основные свойства логарифмов формулы,перемножение логарифмов,преобразования логарифмов,преобразования логарифмов формулы,примеры логарифмов,пять в степени логарифм 8 по основанию 5,разложение логарифма,разность логарифмов с одинаковым основанием,решение логарифма,решение логарифмов натуральных,свойства логарифмов преобразование логарифмических выражений,сложение и вычитание логарифмов с одинаковыми основаниями,сложение логарифмов,сложение логарифмов с одинаковым основанием,сложение логарифмов с одинаковыми основаниями,сложение логарифмы,сумма логарифмов по одинаковому основанию,умножение логарифмов,умножение логарифмы,условия существования логарифма,формулы преобразования логарифмов,частное логарифмов,частное логарифмов с одинаковым основанием,чему равен log,чему равен логарифм 1,число в степени логарифма как решать,число в степени логарифма число,число перед логарифмом,что такое log в математике.

На этой странице вы найдёте калькулятор, который поможет решить любой вопрос, в том числе и 1 логарифм. Просто введите задачу в окошко и нажмите «решить» здесь (например, 2 в степени логарифм 3 по основанию 2).

Решить задачу 1 логарифм вы можете на нашем сайте https://pocketteacher.ru. Бесплатный онлайн решатель позволит решить онлайн задачу любой сложности за считанные секунды. Все, что вам необходимо сделать — это просто ввести свои данные в решателе. Так же вы можете посмотреть видео инструкцию и узнать, как правильно ввести вашу задачу на нашем сайте. А если у вас остались вопросы, то вы можете задать их в чате снизу слева на странице калькулятора.

Простой способ вычислить логарифмы без калькулятора?

спросил

Изменено 2 года, 10 месяцев назад

Просмотрено 179 тысяч раз

$\begingroup$

Мне нужно уметь вычислять логарифмы без использования калькулятора, только на бумаге. Результат должен быть дробным, чтобы он был наиболее точным. Например, я видел это на уроке математики, вычисленное одним из моих одноклассников без помощи калькулятора. 93)}=\dfrac{7\log_a2}{3\log_a2}=?$$

Ясно, что $\log_a2$ ненулевое конечное число для конечного вещественного $a>0,\ne1$

См. Законы логарифмов

$\endgroup$

$\begingroup$

Как вы уже видели, вычислить их вручную может быть уйма работы. Итак, в контексте «без калькулятора» я хотел бы отметить, что логарифмическая линейка была сделана почти точно для этого типа расчета!

$\endgroup$ 92 $ и так $\sqrt 2 \приблизительно 10 / 7 = 1,4 $

После некоторой практики вы сможете очень быстро получать приближения в пределах 1%, часто в уме.

При наличии карандаша и бумаги часто можно быстро удвоить точность за одну итерацию метода Ньютона. Например:

$\sqrt 2 / 1,4 \приблизительно 1,42857 $, поэтому более точное приближение равно $\sqrt 2 \приблизительно (1,4 + 1,42857)/2 = 1,414285 $.

Повторение снова дает $\sqrt 2 \приблизительно 1,41421356 $, что так же точно, как многие ручные калькуляторы. 98 = 25 600 000 000\\ \log_{20} 25 600 000 000 \приблизительно 8\\ \ln 25 600 000 000 \приблизительно 8 \cdot 3 = 24\\ \ln 34 627 486 221 = \ln 25 600 000 000 + \ln (34 627 486 221 / 25 600 000 000) \приблизительно 24 + \ln 1,35 \приблизительно 24,35$$

Ответ: скидка всего 0,13%, что очень точно.

Надеюсь, это поможет!

$\endgroup$

$\begingroup$

В учебнике Апостола «Исчисление», том 1, разработана формула вычисления логарифма. Приводится конкретный пример $\log 2$, в результате чего получается 0,69 доллара США{1/n} — 1 \right)$$

Если $n$ является степенью $2$, вы получите много квадратных корней. См. в материалах HHC 2018 статью о вычислении логарифмов.

Как правило, степенные ряды эффективны для натуральных логарифмов чисел, близких к $1$. Вы можете сделать что-нибудь, чтобы приблизить свое число к 1 доллару, например, умножить на степень десяти или извлечь квадратный корень, а затем скорректировать полученный логарифм.

Тем временем запомните число $0,4343$. Это приблизительный логарифм $e$. Используйте это, чтобы преобразовать натуральные журналы в десятичные журналы.

$\endgroup$

2

запрос ссылки — Самый эффективный способ численного вычисления логарифма?

Это… зависит. $\def\artanh{\operatorname{artanh} } \def\larr{\leftarrow}$

Является ли тот или иной подход хорошим выбором, зависит от многих факторов:

  • Какие арифметические действия/операции доступны/могут использоваться? Что их затраты в.р.т. время выполнения, использование памяти (статической и динамической, энергозависимая и энергонезависимая), потребление кремния, потребление тока.

  • Это абсолютная ошибка или относительная ошибка?

  • Это арифметика с фиксированной точкой или с плавающей запятой?

  • Известна ли заранее требуемая точность и какова она? Или это для какой-то библиотеки произвольной точности, такой как MPFR?

  • Диапазон известен заранее? Или это для какой-то универсальной библиотеки, которая должен обрабатывать любой диапазон ввода?

  • Если используется арифметика с фиксированной точкой, необходимо соблюдать особую осторожность, чтобы промежуточные результаты не переполнялись, соответственно. такие подходы, как ряд Тейлора, могут быть устаревшими. В этом случае рассмотрите полиномы Бернштейна, вычисленные с использованием алгоритма Де Кастельжо, который избегает промежуточного переполнения по замыслу, если контрольные точки представимы.

  • Какие показатели «оптимальны»? Точность? Скорость исполнения? Потребление кода? Потребление памяти? Простота реализации? . ..

Что касается аппаратного обеспечения, то CORDIC может оказаться подходящим вариантом. В программном обеспечении это зависит от какие инструкции доступны и как они выполняются. КОРДИК это обычно выгодно, если сдвиг намного на быстрее, чем умножение.

Несколько месяцев назад я реализовал двойную эмуляцию IEEE-754 для 8-битного микроконтроллер, и хотя эмулированное умножение очень дорогой (занимает около 1000 циклов), аппроксимация полиномами лучше CORDIC, который был реализован товарищем. Алгоритм идет в основном вот так:

  1. Сокращение диапазона до $[1,2]$, а затем до $[1/\sqrt2, \sqrt2]$. Это в основном без операции с двоичной плавающей запятой, потому что мантисса остается неизменной.

  2. Вычислить $$\ln x = 2\artanh\frac{x-1}{x+1}$$ Этот ряд намного лучше подходит, чем ряд Меркатора, разложение Тейлора $\ln$ около 1. Обратите внимание, что скорость сходимости ряда Маклорена для $\artanh$ с приведенным выше аргументом в основном то же самое, когда $x$ заменен на $1/x$. 2 \приблизительно 0,029k) — k\ln2$ все нам нужно добавить целое число, кратное $\ln2$.

Помимо уменьшения дальности, требуется 9 дополнений, 9 умножение и 1 деление.


Гораздо более элементарным подходом является следующий алгоритм, похожий на патрубок. Обратите внимание, что

  • Возведение числа в квадрат сдвигает его показатель степени по основанию 2 на единицу влево.

  • Деление числа на 2 уменьшает его показатель степени по основанию 2 на 1.

  • $\log_2x$ числа $x$ имеет представление 92$

  • Если $x\geqslant2$, то $b_n\larr 1$, иначе $b_n\larr0$

  • Если $x \geqslant2$, то $x \larr x/2$

  • $n\larr n+1$

  • перейти к 3


  • Еще несколько замечаний:

    • Полиномы MiniMax работают лучше, чем ряды Тейлора той же степени. Преимущество Тейлора в том, что его легко найти для большинства функций. вам может понадобиться.

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

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