Главная chevron_right Функции chevron_right Математика chevron_right pow()

pow()

pow(base, exponent) возводит число в произвольную степень, включая дробную — например, pow(x, 0.5) даёт квадратный корень — и возвращает результат как double.

Полная статья

Описание

pow() вычисляет результат возведения числа в заданную степень. В отличие от простого умножения, эта функция поддерживает дробные показатели — например, pow(x, 0.5) даст квадратный корень из x. Это делает pow() удобным инструментом везде, где нужно нелинейное масштабирование: гамма-коррекция яркости светодиода, экспоненциальные кривые отклика датчика, расчёт мощности в физических формулах.

pow() работает с числами типа float и возвращает double. На большинстве плат Arduino float и double занимают одинаковые 4 байта, поэтому точность ограничена примерно 6–7 значащими цифрами.

Синтаксис

Используйте следующую функцию, чтобы возвести число в заданную степень:

pow(base, exponent)

Параметры

Функция допускает следующие параметры:

  • base — основание степени. Допустимый тип данных: float.
  • exponent — показатель степени, в которую нужно возвести base. Допустимый тип данных: float.

Возвращает

Функция возвращает результат возведения в степень. Тип данных: double.

Пример кода

Вычислите значение x, возведенное в степень y:

float x = 2.0;  // основание
float y = 10.0;  // показатель степени

void setup() {
  Serial.begin(9600);

  double z = pow(x, y);

  Serial.print("The power result is: ");
  Serial.println(z);
}

void loop() {
}

Где применяется

  • Плавное управление яркостью светодиода. Человеческий глаз воспринимает яркость логарифмически, поэтому линейное изменение ШИМ выглядит неравномерным. pow() с показателем около 2–3 создаёт перцептивно ровную кривую.
  • Масштабирование показаний датчика. Если датчик имеет нелинейную характеристику, дробная степень позволяет выпрямить кривую без сложных таблиц.
  • Физические расчёты. Формулы вроде закона Стефана–Больцмана или расчёта мощности требуют возведения в степень, часто нецелую.
  • Генерация экспоненциальных последовательностей. Например, для построения логарифмической шкалы частот в аудиопроектах.

Практические замечания

  • pow() работает медленнее простого умножения. Если показатель — небольшое целое число (2, 3), быстрее написать x * x или x * x * x.
  • Передача отрицательного base с дробным exponent даёт NaN (не-число). Проверяйте входные данные, если base может оказаться отрицательным.
  • pow(base, 0) всегда возвращает 1.0, а pow(0, 0) — тоже 1.0 (стандартное математическое соглашение).
  • На платах с 8-битными AVR-микроконтроллерами (Uno, Nano, Mega) double фактически равен float — 32 бита. Если нужна высокая точность, используйте платы на базе ARM или SAMD.
  • Результат pow() удобно сразу передавать в round(), int() или map(), если дальше нужно целое значение — например, для записи в ШИМ-регистр.

Полезные материалы