Java. Клас Math. Експоненційні функції

Клас Math. Експоненційні функції

Дана тема є продовженням теми:


Зміст


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

 


Споріднені теми