Экспонента и принцип Парето

В природе часто встречается так называемый экспоненциальный рост — чем больше клеток делятся, тем быстрее их становиться больше. Чем больше у вас денег в банке, тем большую прибыль они приносят. Давайте сразу на примере.

Экспонента в Excel

На графике видим, что скорость роста экспоненциального графика (ex) увеличивается быстрее. А все потому, что число — это т.н. число Эйлера, приблизительно равное 2,71828 (эксель округляет до 2,71) больше числа 2, которое возводится в указанную степерь (степерь указана в поле А).

Давайте разберемся на примере третьей строки:

Как видите поле C называется как ex это значит, что мы будем число Эйлера возводить в указанную степень (знак ^ означает возведение в степень, степень указана в поле A).

B3 = 2^A3 (читать так: 2 в степени ячейки A3) = 2^0.25=1.19 (видим округление)

C3 = 2.71^A3 (читать так: 2.71 в степени ячейки A3) = 2.71^0.25=1.28 (видим округление)

Видим, что производная (скорость роста или уменьшения) функции равна самой функции, т.е. скорость увеличения функции равна значению функции. 

Php и числа

Значениями типа integer являются целые числа. Целые числа могут быть указаны в следующих системах счисления:

  • десятичной, например 1224 или -123
  • шестнадцатеричной - перед числом необходимо поставить 0x, например: 0x1A
  • восьмеричной - перед числом необходимо поставить 0 (нуль), например: 0123
  • двоичной - перед числом необходимо поставить 0b, например:0b111011

Числа с плавающей точкой также можно представлять в виде экспоненциальной записи. Экспоненциальная запись означает число, умноженное на 10 в указанной степени. Экспоненциальная запись состоит из числа, за которым ставится прописная или строчная буква E, после которой можно поставить необязательный знак + или - и далее показатель степени числа 10:

$num1 = 3.52e5; // если вручную то считать, то 3.52*10^5 = 352000
$num2 = 7E-4; // если вручную то считать, то 7*10^-4 = 0.0007

Ошибки округления чисел c плавающей точкой

Двоичное представление чисел с плавающей точкой неспособно обеспечить их точность. Двоичное представление чисел c плавающей точкой в PHP определяется согласно стандарту IEEE-754. Факт того, что число c плавающей точкой не может быть представлено точно, может приводить к проблемам, например при сравнении этих чисел:

$x = 0.3 - 0.2;
$y = 0.2 - 0.1;

echo ($x == $y), "<br>"; // false
echo ($x == 0.1), "<br>"; // false
echo ($y == 0.1); // true

Эта проблема не является чем-то характерным для PHP, она проявляется во всех языках программирования, где используется двоичное представление чисел с плавающей точкой. Если необходима высокая точность представления чисел с плавающей точкой, нужно использовать математические функции произвольной точности:

$x = bcsub(0.3, 0.2, 1);
$y = bcsub(0.2, 0.1, 1);

echo ($x == $y), "<br>"; // true
echo ($x == 0.1), "<br>"; // true
echo ($y == 0.1); // true

Специальное значение NAN

Некоторые функции при работе с числами могут возвращать специальное значение NAN. Данное значение означает, что какая-то используемая математическая функция вышла за пределы допустимого диапазона значений в операциях с плавающей точкой или не смогла обработать свои входные данные. Значение NAN является сокращением от Not a Number (не число):

$nan = acos(8);
echo $nan;

Значение NAN обладает одной особенностью — оно не равно никакому значению, в том числе и другому NAN. Это значит, что нельзя использовать проверку $nan == NAN, чтобы определить, является ли значение переменной $nan значением NAN. Вместо этого следует выполнить проверку $nan != $nan. Эта проверка вернёт TRUE тогда и только тогда, когда $nan имеет значение NAN. Аналогичную проверку можно выполнить с помощью функции is_nan(). Она возвращает TRUE, только если аргумент имеет значение NAN.

Помимо этого, любая арифметическая операция с NAN, например, NAN / 10 всегда возвращает NAN.

Принцип Парето

Слышали о таком принципе? Он гласит: «20% усилий приносят 80% результата». На принципе Парето построен например ABC анализ запасов. Лучшее определение для запоминания, мне кажется:

20% любителей пива употребляют 80% всего пива

Уверен, каждый из Вас замечал, что примерно за 20% времени можно создать 80% продукта (в количественном эквиваленте), далее работаешь на качество. Т.е. еще 80% времени допиливаешь, ищешь ошибки, настраиваешь. Я даже слышал, что говорят «разработка в стадии экспоненты» — т.е. в стадии приближения к идеалу.

При таком «допиливании» проекта важно вовремя остановиться, ведь продукт никогда не будет идеальным. Поэтому заранее определитесь какое качество вы хотели бы получить в конце. Если делаете не себе, обязательно соберите требования с заказчика. Принцип выглядит примерно так:

Экспонента4

Источник: 1 - 2 - 3


15.05.2018 06:16