Как извлеч кубический корень в паскале? как извлекать квадратный корень я знаю, можно ли придавать корню нужную степень?

Поляков Евгений Александрович

Учитель информатики высшей категории

Проверено учителем

В языке Pascal (включая современные среды вроде Free Pascal или Delphi) отсутствует встроенная функция специально для извлечения кубического корня (наподобие sqrt для квадратного). Тем не менее, это легко реализуется с помощью математического логарифмирования. Основной математический принцип Для извлечения корня любой степени nn используется тождество, связывающее степень, логарифм и экспоненту: xn=x1/n=e1nln(x)the n-th root of x end-root equals x raised to the 1 / n power equals e raised to the 1 over n end-fraction center dot l n x power В Pascal этому соответствуют функции Exp (экспонента) и Ln (натуральный логарифм). 1. Извлечение корня любой степени (для положительных чисел) Для большинства задач подходит следующая формула. Она позволяет извлечь корень любой степени n из положительного числа x. pascal

program RootExample; var x, n, result: Real; begin x := 27.0; // Число, из которого извлекаем корень n := 3.0; // Степень корня (3 для кубического) result := Exp(Ln(x) / n); writeln('Result: ', result:0:4); end. 
Use code with caution.2. Универсальный способ (учет отрицательных чисел) Функция Ln(x) не определена для отрицательных чисел и нуля. Поскольку кубический корень из отрицательного числа существует (например, -83=-2the cube root of negative 8 end-root equals negative 2 ), для корректной работы программы нужно добавить проверку знака. Пример функции для кубического корня: pascal
function PowerRoot(x: Real; n: Real): Real; begin if x > 0 then PowerRoot := Exp(Ln(x) / n) else if x < 0 then // Если степень нечетная (как 3), извлекаем корень из модуля и возвращаем минус PowerRoot := -Exp(Ln(abs(x)) / n) else PowerRoot := 0; end; 
Use code with caution.Сводная таблица функций

Задача Код на Pascal
Квадратный кореньSqrt(x)
Кубический кореньExp(Ln(x) / 3)
Корень степени NExp(Ln(x) / n)
Возведение в степень NExp(n * Ln(x))

Важные примечания

  • Тип данных: Всегда используйте тип Real (или Double), так как результат извлечения корня почти всегда является дробным числом.
  • Точность: Из-за особенностей вычислений с плавающей запятой результат может быть не идеально точным (например, 2.99999999 вместо 3.0). Для вывода используйте форматирование :0:2.
  • Библиотека Math: В современных версиях (Free Pascal / Delphi) можно подключить модуль math (uses math;), который содержит готовую функцию Power(base, exponent). В этом случае кубический корень можно записать как Power(x, 1/3).

Я могу составить для вас законченный код программы, который будет принимать степень и число от пользователя и корректно обрабатывать любые вводы. Хотите, чтобы я это сделал?

Форма ответа

Ваш аватар