Помощь - Поиск - Пользователи - Календарь
Полная версия: возведение в вещественную степень отрицательного числа
Форум «Всё о Паскале» > Разработка ПО, алгоритмы, общие вопросы > Алгоритмы
мисс_граффити
В FAQ рассмотрено возведение в целую степень отрицательных чисел.. А как быть с вещественными степенями?
Даже если в случае получения комплексного результата писать "ошибка" (ну типа по-школьному: из отрицательных чисел квадратный корень не извлекается)...
Если говорить о степени, представленной в виде a/b, где a и b целые, то особых проблем нет: смотрим на четность b и делаем вывод о возможности вычислений, четность а даст знак... (ну например (-1)^(1/3)=-1, (-1)^(2/3)=1).
Но как к этому прийти, если есть число - конечная за счет ограниченности разрядной сетки десятичная дробь?
Рассматривать 1.234 как 1234/1000? А дальше - пытаться сократить и смотреть на четность? Бред какой-то...
MathCad ответа не дал: у него все просто smile.gif (-1)^0.5=-1 (при этом корень из -1 равен i )
Michael_Rybak
А как вообще определяется возведение в действительную степень? Уж не сужением ли до рациональных? ;)
Dr.Chronos
Цитата(Michael_Rybak @ 18.01.2007 20:00) *

Уж не сужением ли до рациональных? ;)

А чего ты подмигиваешь? В смысле ты все знаешь, но молчишь?.. dry.gif
Так скажи народу. Народ хочет знать!
Michael_Rybak
А я уже сказал. У меня нервный тик. ;)
Dr.Chronos
Цитата(Michael_Rybak @ 19.01.2007 9:40) *

У меня нервный тик. ;)

А народ все равно хочет знать... cool.gif
hiv
Если я не ошибаюсь, то рациональное число можно представить в виде дроби. Вот и определяй новый тип данных, дописывай новое определение функции возведения в степень, ну можно и перезагрузкой операторов заняться... Только ради чего это нужно?
Michael_Rybak
Вот я тут придумал прикольный пример.

Если мы хотим ввести операцию возведения отрицательного числа хотя бы в рациональную степень, естественно ожидать от нее некоторого привычного поведения.

Например.

С одной стороны, (-1)^3 = -1 * -1 * -1 = -1

С другой, воспользуемся формулой a^(xy) = (a^x)^y:

(-1)^3 = (-1)^(2 * 1.5) = ((-1) ^ 2) ^ 1.5 = 1 ^ 1.5 = 1

Таким образом, даже не допуская в вычислениях непосредственного возведения отрицательных чисел в дробную степень, получаем противоречие.
мисс_граффити
ну вот.. совсем интересно получается smile.gif
и не скажешь, что формула справедлива только для целых х,у:
(-1)^(2/3)=((-1)^(1/3))^2 (ну и в другом порядке то же самое.
в общем, запуталась sad.gif
Michael_Rybak
Тут по крайней мере один вывод - ничего естественного и общего придумать не получится.
мисс_граффити
То есть ловить ситуации, когда вещественное число по сути целое (MathCad даже это игнорирует: -1^4.0=-1, -1^4=1) с какой-то точностью.. и все?
Michael_Rybak
Ну наверное, да. Только это от того зависит, зачем это тебе. Я бы вообще запретил такое, если б, скажем, консоль какую-то писал.
мисс_граффити
Вообще-то это было задание сестры моей подруги. Учится она на первом курсе, специальность с ходу не назову... но что-то гуманитарное. Звучит в оригинале так:
Цитата
Написать функцию для вычисления вещественной степени вещественного числа, а также основную программу, вызывающую эту подпрограмму.

При том, что остальные задания на уровне "найти максимум в одномерном массиве"...
Видимо, просто не совсем корректная формулировка.
Orion
Стоп, написать эту функию на Паскале - нет проблем.

(A^B)=exp(B*ln(A))

Соображаешь? wink.gif
мисс_граффити
А теперь прочитай название темы.
Запусти при отрицательном А.
Как успехи?
Orion
Ещё раз стоп. Отрицательного числа в вещественной степени не существует. Может в мнимых числах что-то и будет, но согласись: нелогично давать задачу, в которой входные данные - вещественные, а результат - то вещественный, то комплексный (то есть два вещественных числа). Да ещё и на первом курсе гуманитарного ВУЗа. Нет, не верю я в это.


P.S. Если я что-то не то сказал про мнимые числа, то, математики, поправте.
мисс_граффити
Цитата
Отрицательного числа в вещественной степени не существует.

Правда?
-1^4.0 не существует?
или -1^(1/3)?
В области действительных чисел....
Цитата
но согласись: нелогично давать задачу

дали ведь? теоретически, комплексный результат можно не вычислять, а выводить сообщение об ошибке... вопрос был в том, как отличить, когда результат комплексный, а когда действительный....
прочитай мое первое сообщение:
Цитата
Даже если в случае получения комплексного результата писать "ошибка" (ну типа по-школьному: из отрицательных чисел квадратный корень не извлекается)...


в общем, про (A^B)=exp(B*ln(A)) ты абсолютно не в тему написал. вопрос изначально был только про отрицательные числа.
volvo
Цитата
Отрицательного числа в вещественной степени не существует
И еще раз перечитай тему с самого начала... (-2)2 тебе кто-то запретил делать? Нет... А теперь к результату применить res1/3 Соображаешь? А ты говоришь, комплексные... Тебе результат показать, или сам посчитаешь? А что это, как не (-2)2/3 ???
Michael_Rybak
(-2)2/3 все равно не бывает smile.gif
Lapp
Чего нету, того нету.. smile.gif
Доопределение операции возведения в степень на вещественные числа для отрицательных чисел по непрерывности произвести невозможно. И комплексные числу тут не помогут! Более того, даже (как заметила мисс_граффити еще в самом первом мессадже) для рациональных невозможно, не то что иррациональных. Пример Michael_Rybak неплох, но вот гляньте сюда:
-3 = (-3)^1 = (-3)^(2/2) = Sqrt((-3)^2) = |-3| = 3
Неплохой пример софистики, а? Кстати, как-то была такая тема..

Иными словами, область определения операции возведения в степень - это x>0. Можно считать, что это "по-школьному", а можно говорить, что Истина открылась еще на школьной скамье.. smile.gif
И даже для целых степеней, строго говоря, эта операция с отрицательным основанием некорректна. То есть ее можно рассматривать только не более, чем сокращение записи x*x*x*...*x (умножение n раз), как это, собственно, и было при введении степени. Но для положительных оснований это удалось расширить и довести до статуса операции, а для отрицательных оно так и осталось - сокращенная запись для многократного умножения..

Так что если вам предложат задачу, где в качестве основания стоит отрицательное число - считайте, что вам повезло. Решение этой задачи закончится, не начавшись.. smile.gif
мисс_граффити
Интересно было бы пообщаться с ее преподом, который придумывал это задание.
Что он, собственно, имел в виду smile.gif
В общем, я ограничилась тем, что при попытке ввести отрицательное число вывожу сообщение о возможной ошибке и предупреждение, что расчет будет вестись по модулю.
Dragonizer
Тут вся "бяка" в следующем свойтве степени:
a^(p/q)=a^(kp/(kq))
И именно поэтому в школьной математике была запрещена операция возведения отрицательного числа в степень.
В некотрой литературе можно встретить слова о том, что возведение отрицательных чисел в рациональную степень определить можно, но без выполнения свойства сокращения степени, упомянутого выше. Но возведение отрицательного числа в вещественную степень...... !smoke2.gif crazy.gif tease.gif
hiv
Цитата(Dragonizer @ 20.02.2007 17:10) *
И именно поэтому в школьной математике была запрещена операция возведения отрицательного числа в степень.
Она не запрещена. Вас за это не посадят smile.gif Просто эта операция не имеет смысла, также как деление нуля на ноль. И это не связано со школьной программой, а связано с аксиомами вещественной арифметики.
мисс_граффити
Вы хоть читаете, что пишете?
Цитата
И именно поэтому в школьной математике была запрещена операция возведения отрицательного числа в степень.

Цитата
Просто эта операция не имеет смысла, также как деление нуля на ноль.

(-2)^2 не имеет смысла? в школе не изучается?
а корень из -1 (то есть (-1)^1/2) - специальной буквой даже обозвали.
Lapp
Dragonizer, ты думаешь, что поднял старую тему, чтобы сказать что-то новое?..
Почитай внимательно, все сказано выше. Приходи, когда у тебя будет, что сказать, а не пережевывать сказанное..

мисс_граффити, снова-здорово?.. Все проходить заново?
В названии темы слова "возведение в вещественную степень" означают "в любую вещественную степень", то есть проблема в нецелых показателях. И важен пример, показывающий несостоятельность концепции, а не пример, в котором все хорошо (комплексные числа тоже не спасают ситуацию).

Скажу еще раз: то, что мы называем "минус три в кубе" есть всего лишь (-3)*(-3)*(-3), то есть степень в данном случае есть только сокращенное обозначение неоднократного произведения числа на самое себя - и ничего более! Никакого продолжения или распространения (как в случае положительных оснований) это не имеет и не может иметь! Не хочу больше повторяться, читайте мой пост выше.

Отличайте реальную математическую подоплеку от простой путаницы в обозначениях!

hiv прав (© Lapp smile.gif), эту тему следовало бы перенести в Математику..
-Diamond-
Незнаю, может оффтоп, но обидно что сами преподаватели по математике (и информатике) зачастую дают студентам настолько некорректные задания, что хочется взглянуть им в глаза и "прилюдно сорвать пагоны".. например методичка ДЛЯ ЗАОЧНИКОВ по информатике составленная д.ф.-м.н. **** и к.ф.-м.н. **** из СамГУ изобилует заданиями составить программу, нехождения функций типа:
f(x)=x^(3*sin(x)) при x[-5,0) шаг 0.1
f(x)=2^arcsin(9*x)-log(по 8, 4*x) при x[0.1,0.9] шаг 0.05
и т.д. примеров много...
Lapp
Цитата(-Diamond- @ 12.06.2009 13:14) *
сами преподаватели по математике (и информатике) зачастую дают студентам настолько некорректные задания, что хочется взглянуть им в глаза и "прилюдно сорвать пагоны".. например методичка ДЛЯ ЗАОЧНИКОВ по информатике составленная д.ф.-м.н. **** и к.ф.-м.н. **** из СамГУ изобилует заданиями составить программу, нехождения функций типа:
f(x)=x^(3*sin(x)) при x[-5,0) шаг 0.1
f(x)=2^arcsin(9*x)-log(по 8, 4*x) при x[0.1,0.9] шаг 0.05
и т.д. примеров много...
Ну, че тут скажешь.. Программу составить-то можно)). Работать она не будет на указанном промежутке.
Сочувствую..


TarasBer
Может, подразумевались комплексные числа?
Lapp
Цитата(TarasBer @ 27.06.2009 23:46) *
Может, подразумевались комплексные числа?
Конечно. А также подразумевалось, что функция будет возвращать много разных значений, ибо функция эта в комплексных числах многозначна. В общем случае - бесконечное число значений. Угу.

Хороший способ перегреть не только процессор, но и мозги бедного студента)).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.