Класс Math. Экспоненциальные функции
Данная тема является продолжением темы:
Содержание
- 1. Список экспоненциальных функций класса Math
- 2. Функция cbrt(). Корень кубический
- 3. Функция exp(). Показатель степени
- 4. Функция expm1(). Вычислить exp(x)-1
- 5. Функція log(). Натуральний логарифм
- 6. Функция log10(). Логарифм с основанием 10
- 7. Функция log1p(). Логарифм аргумента + 1
- 8. Функция pow(). Возведение в степень
- 9. Функция scalb(). Возведение в степень кратную 2
- 10. Функция sqrt(). Корень квадратный
- Связанные темы
Поиск на других ресурсах:
1. Список экспоненциальных функций класса Math
Общий список экспоненциальных функций следующий:
- cbrt() – возвращает кубический корень из указанного аргумента;
- exp() – возвращает показательную степень от аргумента;
- expm1() – возвращает показательную степень от аргумента минус 1;
- log() – возвращает натуральный логарифм;
- log10() – возвращает алгоритм с основанием 10;
- log1p() – возвращает алгоритм от аргумента плюс 1;
- pow() – возведение в степень;
- scalb() – возвращает результат x*2^показатель;
- sqrt() – возвращает квадратный корень из указанного аргумента.
⇑
2. Функция cbrt(). Корень кубический
Функция cbrt() возвращает корень кубический от аргумента. Согласно документации общая форма объявления функции следующая
double Math.cbrt(double a)
здесь
- a – число, из которого получается корень кубический.
При использовании функции рассматриваются следующие возможные особые значения аргумента:
- a = NaN – результат вызова функции равен NaN;
- a = Infinity – результат равен Infinity;
- a = 0.0 – результат равен 0.0.
Приклад.
public class MathFunctions { public static void main(String[] args) { // Функция cbrt() // 1. Положительное число double x = 27.0; double res = Math.cbrt(x); // res = 3.0 System.out.println("cbrt(27.0) = " + res); // 2. Отрицательное число res = Math.cbrt(-729.0); // res = -9.0 System.out.println("cbrt(-249.0) = " + res); } }
Результат выполнения программы
cbrt(27.0) = 3.0 cbrt(-249.0) = -9.0
⇑
3. Функция exp(). Показатель степени
Функция exp() возносит число e (e = 2.71828) в степень, которая задана аргументом функции. Объявление функции следующее
double Math.exp(double a)
здесь
- a – показатель степени, в которую возводится экспонента.
Получаемый результат может быть обработан в соответствии со значением аргумента a, который может быть равен:
- числовому значению. В этом случае получается соответствующий числовой результат;
- NaN – получается значение NaN;
- положительная бесконечность (например, 1.0/0.0) – возвращается результат положительной бесконечности (Infinity);
- отрицательная бесконечность (например, -1.0/0.0) – возвращается 0.0.
Пример.
public class MathFunctions { public static void main(String[] args) { // 1. Функция exp() // 1.1. Аргумент - положительное число double x = 1.0; double res = Math.exp(x); // res = 2.718281828459045 System.out.println("exp(1.0) = " + res); // 1.2. Аргумент - отрицательное число res = Math.exp(-1.0); // res = 0.36787944117144233 System.out.println("exp(-1.0) = " + res); // 1.3. Аргумент - положительная бесконечность res = Math.exp(1.0/0.0); // res = Infinity System.out.println("exp(1.0/0.0) = " + res); // 1.4. Аргумент - отрицательная бесконечность res = Math.exp(-1.0/0.0); // res = 0.0 System.out.println("exp(-1.0/0.0) = " + res); } }
Результат
exp(1.0) = 2.718281828459045 exp(-1.0) = 0.36787944117144233 exp(1.0/0.0) = Infinity exp(-1.0/0.0) = 0.0
⇑
4. Функция expm1(). Вычислить exp(x)-1
Для заданного x функция expm1() вычисляет выражение
Согласно документации для заданного аргумента x объявления функции следующее
double Math.expm1(double x)
Функция полезна для получения более точных значений по сравнению с функцией ex в случае, когда аргумент x близок к 0. В таком случае в программе реализуется вызов
expm1(x) + 1
В зависимости от значения аргумента x рассматриваются следующие особые ситуации:
- x – любое положительное число. В этом случае результат функции будет больше или равен -1.0;
- x = NaN – функция возвращает NaN;
- x = Infinity (положительная бесконечность) – функция возвращает Infinity;
- x = -Infinity (отрицательная бесконечность) – результат возврата –1.0;
- x = 0.0 – результат равен 0.0.
Пример.
public class MathFunctions { public static void main(String[] args) { // 1. Функция expm1() // 1.1. Аргумент - положительное число double x = 1.0; double res = Math.expm1(x); // res = 1.718281828459045 System.out.println("expm1(1.0) = " + res); // 1.2. Аргумент - отрицательное число res = Math.expm1(-2.0); // res = -0.8646647167633873 System.out.println("expm1(-2.0) = " + res); // 1.3. Аргумент - положительная бесконечность res = Math.expm1(1.0/0.0); // res = Infinity System.out.println("expm1(1.0/0.0) = " + res); // 1.4. Аргумент - отрицательная бесконечность res = Math.expm1(-1.0/0.0); // res = -1.0 System.out.println("expm1(-1.0/0.0) = " + res); } }
Результат
expm1(1.0) = 1.718281828459045 expm1(-2.0) = -0.8646647167633873 expm1(1.0/0.0) = Infinity expm1(-1.0/0.0) = -1.0
⇑
5. Функція log(). Натуральний логарифм
Для получения логарифма с основанием e (натурального логарифма) используется функция log(). Объявление функции следующее
double Math.log(double a)
Для аргумента a рассматриваются следующие возможные ситуации:
- если a = NaN, то функция возвращает NaN;
- a = Infinity – функция возвращает Infinity;
- a = 0.0 – функция возвращает -Infinity.
Пример.
public class MathFunctions { public static void main(String[] args) { // 1. Функция log() - натуральный логарифм // 1.1. Аргумент - положительное число double x = Math.exp(1.0); double res = Math.log(x); // res = 1.0 System.out.println("log(exp(1.0)) = " + res); res = Math.log(1.0); // res = 0.0 System.out.println("log(1.0) = " + res); res = Math.log(5.5); // res = 1.7047480922384253 System.out.println("log(5.5) = " + res); // 1.2. Аргумент - нулевое значение res = Math.log(0.0); // res = -Infinity System.out.println("log(0.0) = " + res); // 1.3. Аргумент - отрицательное значение res = Math.log(-1.0); // res = NaN System.out.println("log(-1.0) = " + res); // 1.4. Аргумент - NaN res = Math.log(Math.log(-1.0)); // res = NaN System.out.println("log(NaN) = " + res); } }
Результат
log(exp(1.0)) = 1.0 log(1.0) = 0.0 log(5.5) = 1.7047480922384253 log(0.0) = -Infinity log(-1.0) = NaN log(NaN) = NaN
⇑
6. Функция log10(). Логарифм с основанием 10
Функция log10() используется для получения значения логарифма с основанием 10. Общая форма объявления функции
double java.lang.Math.log10(double a)
здесь
- a – значение, из которого требуется получить логарифм.
Полученный результат зависит от значения a, для которого рассматриваются следующие случаи:
- если a = NaN или a < 0, то результат также NaN;
- если a > 0 , то результат тоже положительное число;
- если a = 0, то результат равен Infinity (бесконечность);
- если a = 10n для целого n, то результат равен n.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция log10() - логарифм с основанием 10 // 1. Аргумент - положительное число double x = 100; double res = Math.log10(x); // res = 2.0 System.out.println("log10(100) = " + res); res = Math.log10(1.0); // res = 0.0 System.out.println("log10(1.0) = " + res); // 2. Аргумент - нулевое значение res = Math.log10(0.0); // res = -Infinity System.out.println("log10(0.0) = " + res); // 3. Аргумент - отрицательное значение res = Math.log10(-10.0); // res = NaN System.out.println("log10(-10.0) = " + res); // 4. Аргумент - NaN res = Math.log10(Math.log10(-1.0)); // res = NaN System.out.println("log10(NaN) = " + res); // 5. Аргумент - Infinity res = Math.log10(5.0/0.0); // res = Infinity System.out.println("log10(Infinity) = " + res); } }
Результат
log10(100) = 2.0 log10(1.0) = 0.0 log10(0.0) = -Infinity log10(-10.0) = NaN log10(NaN) = NaN log10(Infinity) = Infinity
⇑
7. Функция log1p(). Логарифм аргумента + 1
Функция log1p() возвращает натуральный логарифм от суммы значения аргумента и 1. Функция log1p(x) используется для более точного результата по сравнению с вызовом log(1.0+x).
Общая форма объявления функции
double log1p(double x)
здесь x – значение, для которого получается результат.
В зависимости от значения x рассматриваются следующие случаи:
- если x = NaN или x < -1, то результат равен NaN;
- если x = -1.0, то результат равен -Infinity;
- если x = Infinity, то функция возвращает Infinity;
- если x = 0.0, то функция возвращает 0.0.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция log1p(x) => log(x + 1) // 1. Аргумент x > -1.0 double x = 1.71; double res = Math.log1p(x); // res = 0.9969486348916095 System.out.println("log1p(101) = " + res); // 2. x = NaN res = Math.log1p(Math.log(-10)); // res = NaN System.out.println("log1p(NaN) = " + res); // 3. x < -1.0 res = Math.log1p(-2.5); System.out.println("log1p(x<-1) = " + res); // 4. x = -1.0 res = Math.log1p(-1.0); // res = -Infinity System.out.println("log1p(-1) = " + res); // 5. x = Infinity res = Math.log1p(5.0/0.0); // res = Infinity System.out.println("log1p(Infinity) = " + res); // 6. x = 0.0 res = Math.log1p(0.0); // res = 0.0 System.out.println("log1p(0) = " + res); } }
Результат
log1p(101) = 0.9969486348916095 log1p(NaN) = NaN log1p(x<-1) = NaN log1p(-1) = -Infinity log1p(Infinity) = Infinity log1p(0) = 0.0
⇑
8. Функция pow(). Возведение в степень
Согласно документации общая форма объявления функции следующая
double pow(double a, double b)
здесь
- a – основание, которое возводится в степень b;
- b – показатель степени.
Соответственно вызов функции выглядит примерно так
res = pow(a, b);
Аргументы a, b могут принимать разные значения. Исходя из этого контекста рассматриваются следующие случаи:
- если b = -0.0 или b = 0.0 то результат равен 1.0 (res = 1.0);
- если b = 1.0 то res = a;
- если b = NaN то res = NaN;
- если a = NaN и b ≠ 0 то res = NaN;
- если |a| > 1 и b = Infinity то res = Infinity;
- если |a| < 1 и b = -Infinity то res = Infinity;
- если |a| > 1 и b = -Infinity то res = +0.0;
- если |a| < 1 и b = Infinity то res = +0.0;
- если |a| = 1 и b = Infinity то res = NaN;
- если a = +0.0 и b > 0 то res = +0.0;
- если a = Infinity и b < 0 то res = +0.0;
- если a = +0.0 и b < 0 то res = Infinity;
- если a = Infinity и b > 0.0 то res = Infinity;
- если a = -0.0 и b > 0.0 и b не является нечетным целым, то res = +0.0;
- если a = -Infinity и b < 0.0 и не является нечетным целым, то res = +0.0;
- если a = -0.0 и b является нечетным целым то res = -0.0;
- если a = -0.0 и b < 0.0 и b не является нечетным целым то res = Infinity;
- если a = -Infinity и b > 0.0 и b не является нечетным целым то res = Infinity;
- если a = -0.0 и b является отрицательным нечетным целым то res = -Infinity;
- если a = -Infinity и b является положительным нечетным целым то res = -Infinity.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция pow - возведение в степень // 1. Обычные числа double a = 2.5; double b = 3.8; double res = Math.pow(a, b); // res = 32.52160966413567 System.out.println("2.5 ^ 3.8 = " + res); res = Math.pow(8, 0); // res = 1.0 System.out.println("8 ^ 0 = " + res); res = Math.pow(0.0, 2.5); System.out.println("0 ^ 2.5 = " + res); // 2. Необычные ситуации res = Math.pow(5.0/0.0, -2.0); // res = 0.0 System.out.println("Infinity ^ -2.0 => " + res); res = Math.pow(3.0, 1.0/0.0); // res = Infinity System.out.println("3.0 ^ Infinity = > " + res); res = Math.pow(3.0, -1.0/0.0); // res = 0.0 System.out.println("3.0 ^ -Infinity => " + res); } }
Результат
2.5 ^ 3.8 = 32.52160966413567 8 ^ 0 = 1.0 0 ^ 2.5 = 0.0 Infinity ^ -2.0 => 0.0 3.0 ^ Infinity = > Infinity 3.0 ^ -Infinity => 0.0
⇑
9. Функция scalb(). Возведение в степень кратную 2
Функция scalb() возвращает произведение заданного числа на 2 в заданной степени. Общая форма объявления функции
double scalb(double d, int scaleFactor)
здесь
- d – число, которое умножается на 2 в степени scaleFactor;
- scaleFactor – показатель степени двойки.
При вызове функции возвращается результат
d × 2scaleFactor
Точный результат возвращается, если показатель степени результата находится в пределах от Double.MIN_EXPONENT до Double.MAX_EXPONENT. В противном случае результат есть бесконечность.
При использовании функции рассматриваются следующие возможные случаи:
- если d = NaN, то результат равен NaN;
- если d = Infinity, то функция возвращает Infinity;
- если d = -Infinity, то функция возвращает –Infinity;
- если d = 0, то функция возвращает 0.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция scalb - возведение в степень кратную 2 // 1. Обычные числа double a = 2.5; int b = 3; double res = Math.scalb(a, b); // res = 2.5*2^3 = 20.0 System.out.println("scalb(2.5, 3) = " + res); // 2. Необычные ситуации res = Math.scalb(Math.log(-2), 2); // res = NaN System.out.println("scalb(NaN, 2) = " + res); res = Math.scalb(5.0/0.0, 4); // res = Infinity System.out.println("scalb(Infinity, 4) = " + res); res = Math.scalb(0.0, 2); // res = 0.0 System.out.println("scalb(0.0, 2) = " + res); } }
Результат
scalb(2.5, 3) = 20.0 scalb(NaN, 2) = NaN scalb(Infinity, 4) = Infinity scalb(0.0, 2) = 0.0
⇑
10. Функция sqrt(). Корень квадратный
Для извлечения квадратного корня из числа используется функция sqrt(). Общая форма объявления функции
double java.lang.Math.sqrt(double a)
здесь a – аргумент из которого нужно получить число.
При использовании функции рассматриваются следующие особые случаи:
- если a = NaN то результат также равен NaN;
- если a < 0, то результат равен NaN;
- если a = Infinity, то результат равен Infinity;
- если a = 0, то результат равен a.
Пример.
public class MathFunctions { public static void main(String[] args) { // Функция sqrt - корень квадратный // 1. Корень из положительного числа double x = 121.0; double res = Math.sqrt(x); System.out.println("sqrt(121) = " + res); // 2. Корень из NaN res = Math.sqrt(Double.NaN); // res = NaN System.out.println("sqrt(NaN) = " + res); // 3. Корень из отрицательного числа res = Math.sqrt(-1.0); // res = NaN System.out.println("sqrt(-1) = " + res); // 4. Корень из Infinity res = Math.sqrt(Double.POSITIVE_INFINITY); // res = Infinity System.out.println("sqrt(Infinity) = " + res); // 5. Корень из 0 res = Math.sqrt(0.0); // sqrt(0) = 0.0 System.out.println("sqrt(0) = " + res); } }
Результат
sqrt(121) = 11.0 sqrt(NaN) = NaN sqrt(-1) = NaN sqrt(Infinity) = Infinity sqrt(0) = 0.0
⇑
Связанные темы
- Класс Math. Общие сведения. Тригонометрические функции
- Пакет java.lang. Общие сведения. Обзор классов и интерфейсов
⇑