ЗАЧЕМ НУЖНЫ ЭТИ ... логарифмы! Математика на QWERTY
Всем привет! Прошлый раз мы с вами начали рубрику "Зачем нам нужны эти?". Нужно подчеркнуть, правда, с легкой руки многих пользователей она уже переименована в "А на хрена нам? Да нахрена!". И сегодня мы поговорим, зачем же нам логарифмы.
Я не буду сегодня касаться всяческих применений в природе, которые вы найдете по первой ссылке в гугле: улитки, там ракушка завита в форме логарифмической спирали, еще много где, там галактика. Примерно так — это все замечательно, и это очень полезно, но это такие применения довольно редкие. Я хочу рассказать о том, что применялось и применяется с точки зрения логарифмов часто и не только в математике. Вот об этом сегодня и поговорим.
Для начала, что вообще такое логарифм? Откуда он появился? Зачем он нужен? Все мы знаем, что в математике часто какому-то действию есть противоположное, да? От расположения обратных мы вычитание, умножение, к нему деление. Точно так же есть действие возведения в степень, когда мы фиксируем не саму степень, а основание. Ну, допустим, 2 в какой-то степени. В клубе а2 в 4, 2 в 5, да 7, 2 высасывать.
Вот иногда бывает полезно этот x находить, то есть понять, при каком x 2 выказывает, допустим, равно 16. Понятно, при каком? При 4. А вот при каком x 2 x вы равным 2, 3 руб? А бог его знает. Вот для этого ввели логарифм.
Что такое логарифм? Это такая степень, в которую надо возвести вот эту самую двойку, чтобы получить тройку. Как такой древний шахтерский ребус: скажи пароль, и проходи. Пару, скажем, на роль и проходить. А как в спаян фриске будет пароль? Д-р пароль. Так же здесь: в какую степень надо возвести 2, чтобы получить 3.
Степень, в которую надо возвести 2, чтобы получить 3, она и есть логарифм 3 по основанию 2. Зачем же эти логарифмы нужны, кроме того, чтобы просто решать подобные уравнения? На самом деле с их помощью можно проводить вычисления. В частности, одно из главных преимуществ логарифма — что мы можем умножение перевести в сложение.
Вот посмотрите на такую табличку. Теперь вопрос: сколько будет, ну, например, 16 умножить на 64? Сходу пнуть, может, посчитать? Калькуляторов среди нас нет, действительно эта проблема. Так вот, для того чтобы посчитать, вот такой таблички, смотрим: 16 — четверочка, смотрим 64 — шестерочка, складываем числа сверху, получаем десятку. Какое число написано под десяткой? 1024 — это есть ответ. Кто хочет, может проверить. Так будет работать для любых чисел из этой таблицы.
Конечно, таблица несовершенное, некоторые заметили, что внизу стоят исключительно степени двойки. Поэтому по данному правилу смогу перемножать только степени двойки. Объясню, причем в степени двойки и при чем здесь вообще логарифм. На самом деле то, что написано сверху — это просто логарифм того, что написано снизу, по основанию 2.
А теперь представьте себе, что у вас есть таблица, огромная таблица всех логарифмов всех чисел, ну, допустим, по какому-то фиксированному основанию, скажем, 10, раз с десятичной системы счисления. Так тогда по этой таблице я смогу довольно точно перемножать любые два числа. Допустим, чтобы перемножить на что 23 и 247, я беру в таблице логарифмы этих чисел, складываю их, нахожу в таблице тот логарифм, который равен сумме, и смотрю, какое число ему соответствует.
Примерно так все делали еще буквально 50 лет назад. То есть нормального механизма для перемножения больших чисел не было, делали через вот такие логарифмические свойства. Почему и как это работает? На самом деле мы здесь пользуемся важнейшим свойством логарифмов, что логарифм произведения равен сумме логарифмов.
Вот на базе этого свойства как раз все и получается. Более того, с помощью этого же метода можно и сравнивать какие-нибудь, ну, допустим, произведение чисел. Да, у меня есть произведения, оно боится, надо a, b, c, d. Они довольно большие, да, например, миллионы и миллиарды. Сравнить сами числа трудно, сравнить логарифм каждого даст, сложите, сравнить вот эти суммы гораздо проще.
Конечно, сейчас мало кто это делает же вручную, то есть если бы нам сильно понадобилось, мы могли бы использовать таблицы, которые просто битов. Компьютер, но компьютер сейчас уже умеет проводить подобные вычисления. Тем не менее, на каком-то уровне это тоже используется.
Где еще используются логарифмы? На самом деле начнем с издалека, с такой задачки. Надо с ней многие сталкивались в детстве. Допустим, я загадал какое-то число от 1 до 100, и вам нужно его угадать, задавая мне вопросы в стиле: "Я больше, меньше, равно?". Вот за какое количество вопросов вы сможете точно угадать, какое число я задумал? Что целые? На самом деле многие знают алгоритм, что алгоритм самый оптимальный здесь — половина и отделение.
То есть вы делите промежуток пополам, спрашиваете изначально про 50. Допустим, игру больше, тогда вы спрашиваете про серединку между 50 и сотней и так далее. За сколько вопросов вы угадаете? Оказывается, что это количество вопросов — это то количество раз, которое вам надо разделить число 100 на 2. Вы можете разделить на 2, будет 50, еще на 2, будет 25, еще на 2, будет 12 целых, потом на 2 и так далее.
То есть на самом деле мы что делаем? Мы проверяем, какая степень двойки ближайшая к 100. В данном случае 2 в седьмой, поэтому за семь операций мы угадаем. Заметьте, что вот эта семерка — показатель, это и есть логарифм 100 по основанию 2. Но на самом деле что чуть больше логарифму 100 по основанию 2? Вот откуда берется логарифм и вот почему он здесь нам важен.
И в любом случае, если возьмете число n, не 100, то за целую часть от логарифма n по основаниям 2 плюс один вопрос вы всегда сможете угадать число. Похожие вещи работают для определения фальшивой монетки. Представьте себе, что из 100 монеток одна из них фальшивая, которая чуть легче настоящей, и у вас есть обычные чашечные весы, которые показывают больше, меньше.
Сколько взвешиваний вам нужно, чтобы распознать фальшивую? Тоже вы делите, на самом деле. Там иногда даже не на половинки, а можно делить, если вы понимаете механизм. Но все равно это сведется к логарифму.
Похожим образом в медицине иногда определяют, заражены пациенты или нет. Вот сейчас, в связи с нашим коронавирусом, это особенно актуально. Представьте себе, что у вас есть 100 пробирок с кровью, которые вы взяли у ста людей, и вы знаете, что вероятность того, что кто-то из них болен, очень маленькая: меньше 1/100, меньше 1 процента. То есть скорее всего, если есть тут кто-то зараженный, ну максимум один.
Вы можете, конечно, проверить каждую пробирку, но тогда вы потратите 100 проверок. Каждая проверка стоит денег, дорого стоит времени, нужно как можно быстрее дать ответ. Что делают? Допустим, мы взяли по капельке крови и с каждой пробирки смешали и проверили. Понятно, что если нам даст тест негативный результат, из двух — нету там версии. Значит, сразу можем сказать, что у этих ста нету проблем.
С другой стороны, если мы узнаем, что там есть вирус, то мы не знаем в какой 100 пробирок. А теперь давайте применим идею, которую мы применяли с поиском числа, сводим этим делением пополам. Мы же можем взять только половину. Взяли половину, проверили в ней, потом, соответственно, если в ней ничего нет, проверяем вторую половину, там, допустим, есть. Разделили пополам, проверили половину и так далее.
Таким образом, вместо вот этой сотни проверок вы получите примерно логарифм. Так что на самом деле вот эта вот идея с логарифмами — она работает. Более того, она еще очень хорошо работает, когда у вас есть какая-то величина, которая увеличивается очень быстро. В таких случаях еще говорят экспоненциально. Не так, что вот у меня был там один, два, три, четыре, а у вас плюс — 1248, 16-30 20 растет быстро.
Без стоимости, сами понимаете, что, например, показать такую закономерность на графике довольно тяжело — он быстро улетает. Именно поэтому часто по одной оси откладывает просто изменение величины, а по другой логарифм. Таким образом, шкалу немного сплюсывает, и получается удобно.
Между прочим, по похожей схеме мы с вами, например, воспринимаем звуки. Если вы посмотрите на децибелы, это логарифм от соответствующей величины звука. Иногда, вроде как, увеличивается очень сильно. Вы представьте, вы можете уловить, там как эти листики на ветру шевелятся, а можете нормально совершенно отреагировать на гром. Все потому, что на самом деле мы воспринимаем сплюснута вот эту шкалу. То же самое примерно происходит с нашим зрением.
Здесь тоже логарифм на самом деле внутри заточен. Ну и наконец, еще одно важное применение логарифм. Все, кто немножечко знаком с программированием, знают, что в программировании есть такая задача: сортировки массива. То есть у вас есть много-много данных, вам надо их отсортировать от меньшего к большему, но есть стандартные, самые простые алгоритмы.
Есть там алгоритм выбора или алгоритм пузырька — это алгоритмы, которые работают за примерно n квадрат операций. Что значит примерно n квадрат? Это значит, что если я массив увеличиваю, допустим, в два раза, то количество операций увеличится примерно в 4 раза. Это на самом деле довольно много. То есть представьте себе, если в массиве миллион элементов, то вы, конечно, очень сильно теряете, когда у вас такая сложная сортировка.
Поэтому люди пытались сделать что-нибудь побыстрее и придумали так и назвали эту сортировку курсор или быстрая сортировка, которая работает не порядка n квадрат, а порядка n логарифмов. И откуда берется этот логарифм? А все оттуда же, как работает.
Как сорт? Вы берете средний элемент массива и дальше с ним сравниваете левые и правые, и, соответственно, те, которые меньше, кидаются влево, а те, которые больше, кидаются вправо. Ну, примерно так. Потом вы упорядочиваете и каждую из этих групп и так далее. И на выходе, соответственно, у вас получится отсортированный массив. Более подробно, конечно, про это можно почитать отдельно, но так или иначе к чему я веду?
Что именно логарифм здесь и вылезает, и именно благодаря логарифму, благодаря его существованию, в частности, мы можем оценить, насколько сложно является вот эта сортировка, насколько она будет долго работать на больших данных. Так что вот вам, пожалуйста, применение, которое работает сейчас. Между прочим, быстрее пока никто сортировку не придумал быстрее, чем n алгоритмов. И ни одна сортировка не работает отдельно.
Интересный вопрос: можно ли доказать, что быстрее невозможно? Но вот это уже я оставляю для тех, кто больше любит заниматься программированием. На этом, знаете, ну что ж, надеюсь, я смог сегодня немножко ответить на вопрос, зачем же все-таки проходятся логарифмы в школе и кому они реально могут потом пригодиться. А не забывайте, что у нас впереди еще много интересных роликов. Наверняка поговорим про интегралы, про другие вопросы, которые вас интересуют. Так что подписывайтесь, чтобы не пропустить эти самые выпуски. Пока-пока!
[музыка]
[музыка]