log в C++: натуральный логарифм с примерами
Всем привет! В данной статье речь пойдет о функции log
из файла <cmath>
. Данная функция позволяет нам получить натуральный логарифм числа. Мы разберемся как работать с данной функцией, а также ее отличия от других похожих функций - logl
и logf
. В конце данного урока есть упражнения, которые помогут вам закрепить изученный материал.
Как получить натуральный логарифм числа в C++
Для того, чтобы получить натуральный логарифм числа в C++ мы можем воспользоваться функцие й log
из файла <cmath>
. Ее сигнатура выглядит следующим образом:
double log (double x);
Данная функция принимает только один аргумент - число, для которого нужно вычислить логарифм. Функция возвращает результат в виде числа типа double
.
Давайте попробуем вызвать данную функцию с разными x
, чтобы увидеть, как она работает:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << "log(10) = " << log(10) << endl;
cout << "log(exp(3.5)) = " << log(exp(3.5)) << endl;
cout << "log(-34) = " << log(-34) << endl;
cout << "log(0) = " << log(0) << endl;
return 0;
}
Вывод данной программы:
log(10) = 2.30259
log(exp(3.5)) = 3.5
log(-34) = nan
log(0) = -inf
Теперь давайте подробнее рассмотрим пример:
- Строка 7: здесь все просто, мы вычисляем логарифм числа 10.
log(10) = 2.30259
. - Строка 8: тут уже интереснее. Мы сначала получаем экспоненту числа 3.5 при помощи функции
exp
. Поскольку функцияlog
является обратной по отношению кexp
, результат равен числу, которое мы передали вexp
. - Строка 9: здесь мы попытались получить логарифм отрицательного числа. Однако невозможно взять логарифм от числа со знаком минус, поэтому
log
вернул намnan
(Not a Number). - Строка 10: тут мы пробуем взять логарифм нуля. Это уже можно сделать, однако результатом является минус бесконечность.
Как видите, используя встроенные функции C++, вычислить натуральный логарифм совсем не сложно. Если же вам нужен логарифм на основании 10, то можно воспользоваться функцией log10.
Рассмотрите следующий код на C++:
cout << log(exp(2.2)) << endl;
Какой результат будет выведен на экран?
logf и logl
Функции logf
и logl
являются аналогами функции log
с той лишь разницей, что они возвращают float
и long double
соответственно. Их вы можете использовать в том случае, если по каким-то причинам числа double
вам не подходят.
Давайте рассмотрим пример использования logf
и logl
:
long double ld = logl(123);
float lf = logf(123);
cout << "ld = " << ld << endl;
cout << "lf = " << lf << endl;
Вывод:
ld = 4.81218
lf = 4.81218
Как видите, logf
и logl
дают одинаковый результат для одного и того же аргумента. Меняется только тип чисел, которые мы получаем.
Упражнения
-
Основы
log
в C++:
Напишите программу, которая запрашивает у пользователя вещественное число и вычисляет его натуральный логарифм при помощи функцииlog
. Ваша программа должна выводить исходное число пользователя и его натуральный логарифм. -
Исследование значений
log
:
Напишите программу, которая демонстрирует резу льтаты функцииlog
для разных значений: положительное число, отрицательное число, ноль и результат функцииexp
. Дополнительно, программа должна выводить комментарий к каждому результату на основе его значения (например, “Невозможно взять логарифм от отрицательного числа” дляnan
). -
Сравнение
log
,logf
иlogl
:
Напишите программу, которая использует функцииlog
,logf
иlogl
для одного и того же числа. Выведите результаты всех трех функций, чтобы показать различия в возвращаемых значениях или их отсутствие. Обратите внимание на тип каждого возвращаемого значения.
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение