Клас 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:
- 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() обчислює вираз
ex-1
Згідно з документацією для заданого аргументу 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 і b не є непарним цілим то 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. Загальні відомості. Огляд класів та інтерфейсів
⇑