log , logf , logl , log10 , log10f , log10l
x
Значение, логарифм которого должен быть найден.
Возвращаемое значение
Функции log возвращают естественный логарифм (базовый e ) при успешном выполнении x . Функции log10 возвращают логарифм base-10. Если x это отрицательно, эти функции возвращают неопределенный ( IND ), по умолчанию. Если x значение равно 0, они возвращают бесконечность ( INF ).
| Входные данные | Исключение SEH | Исключение _matherr |
|---|---|---|
| ± QNaN, IND | нет | _DOMAIN |
| ± 0 | ZERODIVIDE | _SING |
| x < 0 | INVALID | _DOMAIN |
log и log10 имеет реализацию, которая использует расширения SIMD потоковой передачи 2 (SSE2). См _set_SSE2_enable . сведения и ограничения на использование реализации SSE2.
Замечания
C++ позволяет перегружать перегрузки, поэтому можно вызывать перегрузки log , log10 которые принимают и возвращают float или long double значения. В программе C, если вы не используете макрос для вызова этой функции, log и log10 всегда принимаете и возвращаете . double
При использовании log() макроса тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе «Математика с универсальным типом».
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью «Глобальное состояние» в CRT.
Требования
| Маршрут | Обязательный заголовок |
|---|---|
| log , logf , logl , log10 , log10f , log10l | |
| log Макрос |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_log.c /* This program uses log and log10 * to calculate the natural logarithm and * the base-10 logarithm of 9,000. */ #include #include int main( void )
log( 9000.00 ) = 9.104980 log10( 9000.00 ) = 3.954243
Для получения логарифмов по другим основаниям используйте математическое соотношение: логарифм по основанию b от числа a == натуральный логарифм (a) / натуральный логарифм (b).
// logbase.cpp #include #include double logbase(double a, double base) < return log(a) / log(base); >int main()
Log base 2 of 65536.000000 is 16.000000
Чем отличается ln , lg, и log ?

Чем отличается?
Чем отличается? %d и %i в этой проге что лучше использовать d или i #include <stdio.h> int.
Чем отличается if от (?:)
Здравствуйте. Почитываю С++, сам программирую в Делфи. Вот немного запутался. В делфи есть условный.
Чем отличается this от *this?
Привет всем ! вот код template<typename Key, typename Value> Dictionary<Key, Value>&.
Чем отличается =- от -=
Только подробно опишите пожалуйста,у меня из-за этого программа в циклах не правильно считает
Регистрация: 14.02.2012
Сообщений: 46
#include
или
#include
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
Нет в C++ функций lg и ln. Есть log и log10. А реализация зависит от компилятора.
![]()
4984 / 3091 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
log — натуральный логарифм (http://www.cplusplus.com/refer. cmath/log/)
ln — это тоже натуральный логарифм, но в С/С++ такой функции нет.
lg — набор букв.
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
Насколько я знаю, log — логарифм по основанию 2(не уверен).
lg — логарифм по основанию 10.
ln — логарифм по основанию e(натуральный логарифм).
Только какое это отношение имеет к с++?
Регистрация: 28.10.2011
Сообщений: 208
Сообщение от Toshkarik 
Нет в C++ функций lg и ln. Есть log и log10. А реализация зависит от компилятора.
тоесть lg=log(x)/log(10) ?
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
Нет, lg это и есть log10 в C++.
Регистрация: 28.10.2011
Сообщений: 208
Сообщение от Toshkarik 
Нет, lg это и есть log10 в C++.
а как правильно записать lg(x) ?
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
variable = log10( x );
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Log — о чём говорят эти сообщения?
У меня приложение в Log выводит: 05-19 11:54:45.130: E/Cursor(878): Finalizing a Cursor that.
Чем отличается if(.) от if(isset(.)
Здравствуйте Помогите разобраться. Например, есть переменная $product_discount чем отличается.
Чем отличается Framework 2 от 1.1?
Субж. Стоит ли вообще ставить Framework 2? Сложно ли переписать проги с Framework 1.1 на 2.

Чем отличается id от class?
Гутен морген, я прочитал 3 статьи по подобным темам да там было мильно написано что id это.
Или воспользуйтесь поиском по форуму:
Как быстро найти любой логарифм с помощью обычного цикла
На прошлой неделе мы рассказали, что такое логарифм и зачем он нужен. Сегодня найдём логарифм с помощью программирования.
Вот короткая версия теории:
- Логарифм — это в какую степень нужно возвести одно число, чтобы получить другое число.
- То, число, которое возводят в степень, называется основанием логарифма.
- Логарифм обозначается словом log.
- Например, log(10) 100 = 2, потому что 10² = 100.
- Есть ещё обозначение lg — это то же самое, что log(10). И есть ln — это то же самое, что log(e), где e — это число Эйлера, важная математическая константа.
- Логарифмы используются в каждой значимой области нашей жизни, от биологии до физики.
Теперь, когда мы знаем достаточно про логарифм, то можем написать программу, которая нам найдёт любой логарифм по любому основанию.
В чём идея
Мы уже выяснили, что логарифм — это степень, в которую нужно возвести основание логарифма, чтобы получить нужное число. Получается, что нам нужно подобрать такую степень, чтобы при возведении она давала такое же число — это и будет ответом к решению логарифма.
Алгоритм поиска будет таким:
- Найдём минимальное значение степени, возведение в которую ещё не превысит наше число.
- Это значит, что следующее за ним целое число — уже перебор, и основание в этой степени точно превысит наше число.
- Будем делить этот промежуток пополам нужное количество раз, пока не получим нужную точность ответа после запятой.
- Когда цикл закончится, середина оставшегося промежутка и будет ответом.
Мы так уже делили границы пополам в задаче про то, как угадать число за 7 попыток, поэтому, если алгоритм показался немного непонятным, — перечитайте то решение и возвращайтесь сюда.
Готовим переменные
Для работы программы пользователь должен будет указать три вещи:
- Основание логарифма.
- Число, от которого мы берём этот логарифм.
- Точность решения. Точность указываем в количестве точно вычисленных знаков после запятой.
Выделим переменные для этого:
# на старте границы поиска значения логарифма все равны нулю start = 0 end = 0 middle = 0 # логарифм какого числа мы ищем num = 600 # основание логарифма base = 10 # сколько нужно знаков после запятой accuracy = 4
Вычисляем границы
Поиск делаем так: начинаем считать от нуля и на каждом шаге увеличиваем это значение на единицу. Как только мы превысили аргумент (то, от чего берём логарифм) — это наша конечная граница. Соответственно, предыдущее значение, которое на единицу меньше, будет стартовой границей.
# пока основание в очередной степени не превысило само число — while base**end
Проверяем, вдруг мы сразу нашли решение
На всякий случай перед тем, как идти дальше, проверим, будет ли решением наша стартовая граница — это сразу может сэкономить нам много сил в дальнейшем:
Проверяем, вдруг мы сразу нашли решение На всякий случай перед тем, как идти дальше, проверим, будет ли решением наша стартовая граница — это сразу может сэкономить нам много сил в дальнейшем: # если сразу нашли целое значение степени 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 с помощью нашей программы:

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

Готовый код
# на старте границы поиска значения логарифма все равны нулю start = 0 end = 0 middle = 0 # логарифм какого числа мы ищем num = 600 # основание логарифма base = 10 # сколько нужно знаков после запятой accuracy = 5 # пока основание в очередной степени не превысило само число — while base**end 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))
Десятичный логарифм
Определение. Логарифмом числа b по основанию a , где a > 0 , a ≠ 1 , b > 0 , называется показатель степени, в которую нужно возвести основание a , чтоб получить число b .
Определение. Десятичный логарифм — логарифм по основанию 10.
Другими словами, десятичный логарифм числа b является решением уравнения 10 x = b .
Обозначение. Десятичный логарифм обозначается lg x или log x .
Калькулятор десятичных логарифмов
Свойства десятичного логарифмов
- lg x = log10 x - так как основание десятичного логарифма равно 10.
- 10 lg b = b .
- lg 1 = 0
- lg 10 = 1
- lg 10 n = n
- lg( x · y ) = lg x + lg y
- lg x y = lg x - lg y
- lg x n = n lg x

График функции y = lg x
| ∫ | lg x dx = x lg x - x ln 10 + C |
| lim | lg x = -∞ |
| x → +0 |
Пример 1. Найти значения десятичного логарифма от чисел 100, 1000, 0.1, 0.01, 0.001.
lg 100 = lg 10 2 = 2
lg 1000 = lg 10 3 = 3
lg 0.1 = lg 10 -1 = -1
lg 0.01 = lg 10 -2 = -2
lg 0.001 = lg 10 -3 = -3
Доказать равенство: a lg b = b lg a .
Запишем очевидное равенство:
lg b · lg a = lg a · lg ab
Возведем 10 в соответствующие степени
10 lg b · lg a = 10 lg a · lg b
(10 lg b ) lg a = (10 lg a ) lg b
Зная, что lg 2 = a , lg 3 = b , lg 5 = c , выразить lg 6; lg 30; lg 16 через a, b, c.
Используем формулы логарифма произведения и степени получим:
lg 6 = lg (2·3)= lg 2 + lg 3 = a + b ;
lg 30 = lg (5·2·3)= lg 5 + lg 2 + lg 3 = a + b + c ;
lg 16 = lg 2 4 = 4 · lg 2 = 4 a .
Вычислить log9 5 · log25 27.
Перейдем к основе 10:
log9 5 · log25 27 = lg 5 lg 9 · lg 27 lg 25
Используем свойство логарифма степени lg x n = n lg x :
lg 5 lg 9 · lg 27 lg 25 = lg 5 lg 3 2 · lg 3 3 lg 5 2 = lg 5 2 lg 3 · 3 lg 3 2 lg 5 = 3 4
Вычислить log30 8, если lg 5 = a , lg 3 = b .
Перейдем к основе 10:
log 30 8 = lg 8 lg 30 = lg 2 3 lg (3 · 10) =
Используем свойство логарифма степени, произведения, частного и то что 2= 10 5 :
= 3 lg 2 lg 3 + lg 10 = 3 lg 2 lg 3 + 1 = 3 lg 10 5 lg 3 + 1 = 3(lg 10 - lg 5) lg 3 + 1 = 3(1 - lg 5) lg 3 + 1 =
Подставим lg 5 = a , lg 3 = b :
log30 8 = 3(1 - a ) b + 1
Любые нецензурные комментарии будут удалены, а их авторы занесены в черный список!
Присоединяйтесь
© 2011-2024 Довжик Михаил
Копирование материалов запрещено.
Добро пожаловать на OnlineMSchool.
Меня зовут Довжик Михаил Викторович. Я владелец и автор этого сайта, мною написан весь теоретический материал, а также разработаны онлайн упражнения и калькуляторы, которыми Вы можете воспользоваться для изучения математики.
Если Вы хотите связаться со мной, имеете вопросы, предложения или хотите помочь развивать сайт OnlineMSchool пишите мне support@onlinemschool.com