Что нового

[Математика] Вычисление корня кубического из отрицательного числа

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Подскажите, пожалуйста, в чем причина ошибки при вычислении корня кубического из отрицательного числа:

Код:
MsgBox(16,'(-3)^(1/3)',(-3)^(1/3))


Используя математическое преобразование, вычислить корень кубический из отрицательного числа можно так:

Код:
MsgBox(0,'-(3^(1/3))',-(3^(1/3)))
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
в том, что рациональная степень числа (как и большинство других функций) в программировании вычисляется с помощью ряда тейлора, который для отрицательных чисел расходится. это дело легко обходится, если написать свою функцию
Код:
Func cubicroot($iNum)
    Return (2*($iNum >= 0) - 1)*Abs($iNum)^(1/3)
EndFunc
 
Автор
snoitaleR

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Kaster
Считать ли такое явление багом? Или разработчики ничего не смогут исправить?
 

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
Это скриптовый язык программированя, а не MathCad.
Сходимость-расходимость рядов это не стезя скриптеров.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
snoitaleR
я бы не сказал, что это баг. это стандартное поведение для многих языков. кстати говоря, разные корни из отрицательных чисел - понятие чисто школьное для простоты. в высшей же математике, степени определены только для положительных чисел, если работать над полем действительных чисел. если есть необходимость в возведении в степень и отрицательных чисел, то тут уже надо работать над полем комплексных чисел. и там же ввести операцию взятия корня, как обратное возведению в степень, но она многозначная и имеет несколько регулярных ветвей.
как ты понимаешь, все это перенести в яп не самая простая задача.
 
Верх