|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.11.2014, 03:12 | #1 |
Пользователь
Регистрация: 26.11.2014
Сообщений: 15
|
Возвести отрицательное число в дробную степень
Доброе время суток!
Появилась неожиданная проблема с возведением в степень. А точнее надо возвести отрицательное число в дробную степень. x,y:Extended Первое на что попробовал Exp(x*Ln(-y)) естественно с минусом в логарифме проблема Затем подключил Maht и попробовал Power(-y,x); проблема с минусом ушла но как только x становится дробным опять ошибка invalid floating point operation |
26.11.2014, 04:08 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Проблема здесь не в Delphi, а в сути. То есть в самой математике.
Чему равно например (-1)^(1.5) ? Ответ: i мнимая единица. А мнимых чисел среди имеющихся типов в Pascal нет. PS А чему равно (-1)^(0.25) ? Корень из мнимой единицы. А чему равно (-1)^(1/7) ? Так сразу и не сообразишь.. Вообщем, надо изучать комплексные числа, всякие формулы Эйлера, Муавра. И создавать что-то вроде Код:
PPS Кстати, нашел универсальный калькулятор Например, посчитал (-1)^(1/7), оказалось равно 0.901+i0.4339 Последний раз редактировалось type_Oleg; 26.11.2014 в 04:59. |
26.11.2014, 09:59 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
type_Oleg, по сути абсолютно верно,
небольшая поправка если степень дробная, то число возводится в степень, равную числителю и извлекается корень степени, равный знаменателю. т.е. 2^3/4 это formula1.jpg (-1) в степени 0.25 это formula2.jpg добавлю, что отрицательная степень означает, что нужно единицу разделить на число в данной степени, но уже без знака минус: т.е. 2 в степени -3/5 = formula3.jpg но сути это не меняет. Дробная степень - это корень. А чётный корень из отрицательных чисел без комплексных чисел не извлекается. |
26.11.2014, 10:29 | #4 |
Пользователь
Регистрация: 26.11.2014
Сообщений: 15
|
Приблизительно понял надо копать. да не написал сразу основание у меня тоже дробное.но на сколько я понимаю это мало что меняет.
Просто эту проблему наверняка уже кто то решил не хотелось бы заново изобретать велосипед. |
26.11.2014, 11:35 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Просто скажите, если вашей программе нужно извлечь (для примера) корень квадратный из числа -4 (минус четыре), какой ответ должна выдать программа? |
|
26.11.2014, 12:09 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А если у отрицательного основания еще и степень не рациональная, например корень из двух или пи, то совсем хорошо. По хорошему, если бы возникла необходимость средствами делфи такие вычисления делать, то использовал бы разложение в степенной ряд. Собственно и стандартные функции используют такое разложение, но вот беда - не для комплексных чисел
PS заглянул в юнит VarCmplx, там уже реализованы такие операции, например VarComplexPower
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.11.2014 в 12:31. |
26.11.2014, 14:06 | #7 |
Пользователь
Регистрация: 26.11.2014
Сообщений: 15
|
|
26.11.2014, 14:16 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Дык у калькулятора небось несварение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
26.11.2014, 14:25 | #9 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 977
|
так наверное это просто поддельный калькулятор, что бы не парится с корнями они решили вычислять обычный корень по модулю и помножить на единицу со знаком числа, хотя может там буковка какая есть типа "i" которая в математике означает некое абстрактное число равное корню из -1.
а вообще городят степени на дельфи через логарифмы (ln, log). главное формулу правильно подобрать.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
|
26.11.2014, 15:06 | #10 |
Пользователь
Регистрация: 26.11.2014
Сообщений: 15
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как возвести число в степень 2^3 | yura_zb | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 19.10.2012 08:49 |
возвести число x в степень y | Imbire | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 31.10.2011 09:40 |
Как возвести число в степень? | Wintrymoon | Паскаль, Turbo Pascal, PascalABC.NET | 36 | 09.05.2011 15:11 |
Отрицательное число в дробную степень | n4ela | Общие вопросы C/C++ | 7 | 31.10.2010 00:02 |
Возвести в степень b некоторое число a | Михаил70 | Общие вопросы Delphi | 3 | 09.09.2009 16:10 |