Для вычисления кубического корня в Паскале нет стандартной функции (в отличие от квадратного корня), однако, его можно вычислить, используя функции экспоненты и логарифма. Извлечение кубического корня — это возведение в степень 1/3, а для положительных чисел возведение в любую степень можно осуществить по формуле
Для отрицательных чисел логарифм не определён. Чтобы вычислить кубический корень из отрицательного числа, воспользуемся свойством нечётности кубического корня:
Наконец, кубический корень из 0 — это 0. Логарифм 0 — это «минус бесконечность», и, хотя некоторые реализации Паскаля могут работать со значением «минус бесконечность», лучше избегать этого специального значения.
Таким образом, получаем:
program TryRoot3;
function Root3(X: Real): Real;
begin
if X = 0.0 then
Root3 := 0.0
else if X > 0.0 then
Root3 := Exp(Ln(X) / 3)
else
Root3 := –Exp(Ln(–X) / 3)
end;
begin
WriteLn(Root3(27.0):0:0, ‘ ‘, Root3(–8.0):0:0, ‘ ‘, Root3(0.0):0:0);
{ 3 -2 0 }
end.
Смотри также
- Sqrt(X) — квадратный корень
- Exp(X) — экспонента
- Ln(X) — натуральный логарифм
- Кубический корень в Wikipedia
- Показательная функция (экспонента) в Wikipedia
- Натуральный логарифм в Wikipedia
Голосование за лучший ответ
Alexander Grachev
Мыслитель
(6601)
11 лет назад
exp (ln (x) / 3)
АнГеЛиНа
Ученик
(184)
11 лет назад
sqrt(x) – корень кубический
Dmitry Lysy
Мастер
(1007)
11 лет назад
стандартной функции нету, нужно через логарифм:
exp (ln (x) / 3)
зы sqrt – это квадратный корень!
ЕвгенийНеизвестный
Знаток
(470)
11 лет назад
Во первых sqrt это квадратный корень. Во вторых правильно будет exp(ln(x)*(1/3))
Николай Михайлович
Ученик
(226)
4 года назад
exp (ln (x) / 3)
Проблема в том, что специальной функции для кубического корня в Паскале нет. Поэтому приходится выкручиваться через логарифмы. А логарифмы нравятся не всем. Точнее, почти всем не нравятся. Мы просто воспользуемся формулой:
[sqrt[3]{x}=expleft(frac{1}{3}lnxright)]
, а также тем, что корень кубический функция не четная и можно минус выносить из под знака корня для того, чтобы не пришлось вычислять логарифм отрицательного числа. Ниже приведен код программы.
program TryRoot3;
function Root3(X: Real): Real;
begin
if X = 0.0 then
Root3 := 0.0
else if X > 0.0 then
Root3 := Exp(Ln(X) / 3)
else
Root3 := -Exp(Ln(-X) / 3)
end;
begin
WriteLn(Root3(27.0):0:0, ' ', Root3(-8.0):0:0, ' ', Root3(0.0):0:0);
{ 3 -2 0 }
end.
Похожие публикации: Pascal
Как извлеч кубический корень в Паскале?
Как извлекать квадратный корень я знаю, можно ли придавать корню нужную степень?
На этой странице находится вопрос Как извлеч кубический корень в Паскале?. Здесь же – ответы на него,
и похожие вопросы в категории Информатика, которые можно найти с помощью
простой в использовании поисковой системы. Уровень сложности вопроса
соответствует уровню подготовки учащихся 10 – 11 классов. В комментариях,
оставленных ниже, ознакомьтесь с вариантами ответов посетителей страницы. С
ними можно обсудить тему вопроса в режиме on-line. Если ни один из
предложенных ответов не устраивает, сформулируйте новый вопрос в поисковой
строке, расположенной вверху, и нажмите кнопку.
Cortex1998 18 / 18 / 11 Регистрация: 05.01.2014 Сообщений: 119 Записей в блоге: 2 |
||||
23.11.2014, 22:43 |
2 |
|||
Сообщение было отмечено как решение Решение В общем случае вас интересует
где Number – число, которое возводится в какую то Exponent степень вызываете ее как
1 |
Cyborg Drone Модератор 9584 / 4904 / 3244 Регистрация: 17.08.2012 Сообщений: 15,324 |
||||||||
25.11.2014, 01:29 |
3 |
|||||||
Ага, возвращает. Если x > 0. В остальных случаях вылетает, так как ln(x) при x ≤ 0 не определён. Правильно примерно так:
И то здесь не учитываются неопределённость 00 и корни чётных степеней из отрицательных чисел. Для корня кубического, в частности, правильно, например, так:
Ну и… Так как степень – 1/3, этот фрагмент кода никаких подвохов не содержит.
0 |