Вычисление функции на php

Математические функции в PHP

Привет, Вы узнаете про ма тические функции в php, Разберем основные ее виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое ма тические функции в php , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) . В этом уроке я познакомлю читателей с математическими функциями, которые имеются в PHP. Точнее, в примерах использоваться будут лишь самые частые из них, так как полный список проще всего найти на официальном сайте, вместе с подробными описаниями.
Цель данного урока — скорее не представить полный список этих функций, а привести некоторые примеры их использования.

Математические функции предназначены для работы переменными численных типов. Это значит, что операндами будут являться переменные типа int и float.
Я разделю эти функции на несколько типов:

0. Общие функции
1. Тригонометрические функции
2. Обратные тригонометрические функции
3. Логарифмические функции
4. Степенные функции
5. Функции преобразования оснований исчисления
6. Остальные (которые трудно классифицировать)
Общие функции К общим функциям я отнес функции:
abs
floor
ceil
max
min
round
rand
sqrt
Опишу их более подробно.

abs

Cинтаксис:
number abs ( mixed number )
Функция вычисляет модуль числа. Напомню, что |x|=x, если x>0 или x=0, и |x|=-x, если x
floor

Cинтаксис:
float floor ( float value)
Эта функция округляет дробь в меньшую сторону. Но не стоит думать, что это — «отбрасывание» дробной части. Потому что, во-первых, результат все равно будет не целочисленным, а вещественным. К тому же для отрицательных чисел ближайшим меньшим целым числом будет дробь, дополненная до него.

ceil

Cинтаксис:
float ceil ( float value )
Эта функция также округляет аргумент до ближайшего целого, но уже до ближайшего большего целого. Функции floor и ceil возвращают вещественный результат по одной простой причине — диапазон вещественных чисел в PHP больше, чем целых.

max

Cинтаксис:
mixed max ( number arg1, number arg2 [, number . ] )
mixed max ( array numbers )
Эта функция имеет 2 описания синтаксиса. Она возвращает максимальное значение среди аргументов, если они переданы в виде полного списка (1-й вариант синтаксиса), или же наибольший элемент массива, в случае, если был передан массив (2-й вариант синтаксиса). Любопытно вот что: аргументы могут быть разных типов. Скажем, $test = max(‘строка’, array(0, 1), 4, 7);
//вернется array(0, 1) — массив всегда будет считаться больше остального, хотя такое «сравнение» выглядит довольно глупо
?> Я не могу представить, зачем такое может потребоваться, но тем не менее, в PHP это работает именно так.
Полностью аналогичная функция min, ее можно даже не описывать. Разница в том, что возвращается минимум.

round

Cинтаксис:
float round ( float val [, int precision] )
Округляет вещественное число по арифметическим правилам. Можно указать точность округления. В этом случае будет вестись округление до указанного числа знаков дроби. Эту точность можно указать равной 0 (равносильно вызову функции без указания точности). Кроме этого, можно указать и отрицательное значение точности. Результат аналогичен.

rand

Cинтаксис:
int rand ( [int min, int max] )
Возвращает случайное целое число в диапазоне от min до max включительно. Эти параметры не обязательны. Если их не указывать, вернется случайное число в диапазоне от 0 до константы RAND_MAX.
На операционных системах семейства Windows значение RAND_MAX всего лишь 32767
Если нужно случайное дробное число, то можно воспользоваться, например, таким кодом: //Генерируем случайное вещественное число в диапазоне $a..$b в предположении $a$iMaxRand=30000;//по сути, можно задавать и больше для большей точности
$iRand=rand(1, $iMaxRand);
$fRand=$a+($b-$a)*$iRand/$iMaxRand;
?> sqrt
Cинтаксис:
float sqrt (float arg)
Функция вычисляет квадратный корень аргумента. И аргумент и результат — вещественные.
Тригонометрические и обратные тригонометрические функции К тригонометрическим функциям я отнес функции:
acos
acosh
asin
asinh
atan2
atan
atanh
cos
cosh
sin
sinh
tan
tanh

Читайте также:  Html input checkbox text align

Все эти функции принимают в качестве аргумента параметры типа float, и возвращают значение этого же типа. По той причине, что для их описания требуется лишь знание, что конкретно каждая из них делает, не буду приводить здесь все описания. (А назначение этих функций известно из геометрии и алгебры).

acos

Cинтаксис:
float acos(float arg)
Вычисляет арккосинус числа . Об этом говорит сайт https://intellect.icu . В случае, если аргумент недопустим (то есть |arg|>1), возвращает NAN.
Логарифмические функции К логарифмическим функциям я отнес функции:
log10
log1p
log

Эти функции также не требуют отдельного описания. Отдельно скажу лишь о функции log1p. Дело в том, что, в силу особенности самого логарифма, при значениях аргумента, близкого к 1, он сильно стремится к нулю. Это может быть помехой для «тонких» вычислениях. Эта функция вычисляет значение более точным способом.
Кроме прочего, приведу пример полезной функции, которая вычисляет логарифм по произвольному основанию: function Log($base, $arg)
if($base==1||$base <=0)
return null;
>
if($arg <=0)
return null;
>
return log($arg)/log($base);
>
?> Да, кстати, вопрос для читателей — я назвал функцию Log — не вызовет ли это конфликта с именем уже существующей функции log?
Степенные функции Перейдем к степенным функциям:

exp
expm1
pow

Аналогично логарифмам, отдельно следует обратить внимание лишь на expm1, возвращающую точно вычисленную степень аргумента, близкого к 0.

Функции преобразования оснований исчисления

В php есть специальный ряд функций, которые работают с преобразованием систем счисления. Если учесть, что bin — двоичная система, oct — восмиричная, dec — десятичная, а hex — шестнадцатиричная, то назначение многих из них становится интуитивно понятным:

base_convert
bindec
decbin
dechex
decoct
hexdec
octdec

Интерес же представляет функция base_convert:

base_convert
Cинтаксис:
string base_convert ( string number, int frombase, int tobase)
Возвращает строку, содержащую число number, представленное с базой tobase.База, в которой number дается, специфицируется в frombase. И frombase, и tobase должны быть в диапазоне от 2 до 36 включительно. Почему такое ограничение? Да потому, что цифры, большие 10, записываются при помощи символов латинского алфавита. То есть от a до z. Вместе с первыми 9-ю основаниями выйдет как раз 35 возможных значений.
Неклассифицированные функции В заключение приведу ряд полезных, не классифицированных мною отдельно, функций:

is_finite
is_infinite
is_nan

is_finite
Cинтаксис:
bool is_finite (float val)
Эта функция определяет, конечно ли число с точки зрения диапазона чисел с плавающей точкой. Этот диапазон берется исходя из текущей платформы.

is_finite

Cинтаксис:
bool is_infinite (float val)
Эта функция определяет, бесконечно ли число с точки зрения диапазона чисел с плавающей точкой. При этом, конечно, учитываются возможности платформы, но, скажем, результат log(0) не будет таковым ни на какой платформе (можете подумать, почему)

is_nan
Cинтаксис:
bool is_nan (float val)
Показывает, является ли аргумент действительным числом. С точки зрения алгебры, в категорию не вещественных чисел попадут как не-числа совсем (вроде арккосинуса от двойки), так и комплексные числа (вроде квадратного корня из -1). В обоих случаях функция вернет false.

В конце урока, как обычно, приведу ряд вопросов. 1. Что вернет функция is_nan, если переданный ей аргумент — трансцендентное число с точки зрения алгебры?

2. Пусть у нас обозначаются 1-9 обычный цифры, a-z цифры от 10 до 35, и A-Z цифры от 36 до 62. Напишите функцию, которая бы конвертировала число из одной системы счисления в другую (как base_convert), но с учетом таких обозначений (то есть аргумент принимает значение от 2 до 62)

3. В чем разница между is_nan и is_finite? Приведите примеры, когда их значения от одного и того же аргумента различны.

0. Вернет true, если принять, что такие числа допустимы. Если читатель знает предмет вопроса (или не поленился заглянуть в википедию), то он знает, что трансцедентные числа — обычные вещественные числа. Но являются они корнями многочлена с иррациональными коэффициентами. Единственное что — их представление в типе float языка php сделает их уже не трансцентными вовсе. Так что — с точки зрения float функция is_nan вернет true. Если же считать, что трансцедентные числа нельзя записать представлением float, то и вообще ничего не вернет (агрумента то и не будет)
1.

Источник

Оцените статью