Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS метод Math.log1p()

Загальний опис

Math.log1p() — це метод, який належить до об'єкта Math у JavaScript. Він повертає натуральний логарифм (в основі e) числа, збільшеного на одиницю. Тобто, для числа x, Math.log1p(x) еквівалентний Math.log(x + 1).

Коли працюєте з дуже малими числами, точність може стати важливим питанням. При виконанні операцій над дуже малими числами, результат може бути неправильним через обмеження машинної точності. Math.log1p() був створений, щоб забезпечити більш точні результати при роботі з малими числами, ніж просто використовуючи Math.log(x + 1).

В основному, Math.log1p() використовується в наукових, інженерних та фінансових обчисленнях, де важлива висока точність. Наприклад, в статистиці, при розрахунках з використанням експоненційних функцій або при роботі з логарифмічними шкалами.

Приклад:

let value = 1e-10;
console.log(Math.log1p(value)); // Повертає логарифм value збільшеного на одиницю
console.log(Math.log(value + 1)); // Може повернути менш точний результат

Основні особливості та прийоми

Однією з ключових особливостей Math.log1p() є його здатність точно обчислювати логарифм числа, яке збільшено на одиницю, навіть якщо саме число дуже маленьке.

Також, якщо передати від'ємне число, що менше або дорівнює -1, Math.log1p() поверне NaN, оскільки логарифм від'ємного числа або нуля не існує у реальних числах.

На відміну від інших методів, таких як Math.log(), Math.log1p() спеціально розроблений для роботи з малими числами, де збільшення на одиницю може призвести до значних втрат точності. Також, відмінність від Math.log10() та Math.log2(), які повертають, відповідно, десятковий та двійковий логарифми числа.

Приклад:

let smallValue = 0.000000001;
console.log(Math.log1p(smallValue)); // Дуже точний результат
console.log(Math.log(smallValue + 1)); // Можливі втрати точності

У вас може виникнути питання, чому просто не користуватися завжди Math.log1p(), якщо він такий точний? Відповідь полягає в тому, що у більшості випадків різниця може бути незначною, але коли точність є критичною, Math.log1p() може бути вашим найкращим вибором.

Нотатка:

Пам'ятайте, що Math.log1p() розраховано для введення лише невід'ємних чисел. Якщо ваші додатки вимагають роботи з від'ємними числами у подібних обчисленнях, обов'язково виконайте відповідні перевірки або врахуйте це у ваших алгоритмах.

Нотатка:

Якщо ви бажаєте знайти натуральний логарифм самого числа (не збільшеного на одиницю), використовуйте метод Math.log(). Не плутайте ці два методи, оскільки результати будуть відрізнятися.

Приклад:

console.log(Math.log1p(5)); // Результат для числа 6
console.log(Math.log(5));   // Результат для числа 5
Порада:

Якщо ви виконуєте обчислення, де вам потрібно обійти проблеми з маленькими числами (особливо коли значення близьке до нуля), Math.log1p() може бути корисним для отримання більш точних результатів, оскільки він забезпечує підвищену точність у порівнянні з простим застосуванням Math.log() до числа, збільшеного на одиницю.

Синтаксис

Math.log1p(x)

Параметри

*x

Число, яке має бути більше або рівне -1.

Return

logarithm

Повертає натуральний логарифм (з основою e) значення x + 1. Якщо x дорівнює -1, метод повертає -Infinity, а якщо x менше -1 - повертає NaN.

Переглядачі

Переглядач

38

25

8

25

12

Переглядач

38

38

25

8

Переглядач

0.12.0

1.0

Приклади


У цьому прикладі користувач може ввести число у текстовому полі, натиснути кнопку "Розрахувати" і побачити результат використання методу Math.log1p(). Якщо введене значення некоректне, користувач отримає повідомлення про помилку.

У цьому прикладі ми обчислюємо природний логарифм відсоткового зростання. Для обчислення відсоткового зростання ми віднімаємо початкове значення від кінцевого і ділимо результат на початкове значення. Використовуючи Math.log1p(), ми можемо отримати логарифм цього зростання +1. Це корисно, наприклад, при аналізі фінансових даних.

// Отримання природного логарифму відсоткового зростання
function logPercentIncrease(initialValue, finalValue) {
    let percentIncrease = (finalValue - initialValue) / initialValue;
    return Math.log1p(percentIncrease);
}

let initialValue = 100;
let finalValue = 110;

console.log(logPercentIncrease(initialValue, finalValue)); // Очікуваний результат близько 0.0953

У цьому прикладі ми перетворюємо значення слайдера на логарифмічну шкалу. Це корисно, коли хочете, щоб низькі значення слайдера були більш "чутливими" або "градієнтними" в порівнянні з високими значеннями. Застосовуючи Math.log1p() до значення слайдера (поділеного на 100), ми можемо отримати логарифмічне перетворення цього значення, забезпечуючи більш плавне регулювання на низьких значеннях.

// Перетворюємо значення слайдера (0-100) на логарифмічну шкалу
function convertSliderValue(sliderValue) {
    // Оскільки значення слайдера діляться на 100, вони представляють діапазон від 0 до 1.
    // Щоб зробити це більш чутливим на низькому кінці, ми використовуємо log1p.
    return Math.log1p(sliderValue / 100) * 100;
}

let sliderValue = 10; // Припустимо, користувач встановив слайдер на 10

console.log(convertSliderValue(sliderValue)); // Очікуваний результат менше 10, оскільки ми використовуємо логарифмічну шкалу