198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
1 | |
Возведение в степень, отрицательные числа25.07.2013, 14:13. Показов 17289. Ответов 53
Метки нет (Все метки)
В библиотеке <cmath> есть такая функция pow(A,B) - получаешь результат возведения A в степень B
Решил написать свой pow с положительными числами работает, а вот с отрицательными я не могу понять как правильно, 1. -2 в 2 степени, на яндексе показывает что должно быть -4, обычный калькулятор показывает -4, pow(A,B) из <cmath> показывает 4, мой pow тоже показывает 4 2. -2 в 3 степени, везде показывает -8 (в том числе и у меня) по поводу первого варианта, так как все же правильно, -2 в 2 степени, 4 или -4? PS, да, мне стыдно что я не помню школьную математику.. с каждым может случится..
0
|
25.07.2013, 14:13 | |
Ответы с готовыми решениями:
53
Возведение из числа степень Возведение числа а в степень n Возведение числа в степень! Возведение числа в степень n-1 |
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
25.07.2013, 16:44 [ТС] | 21 |
Ну какие могут быть обиды если по делу, я же не быдло что бы обижаться за дело, только тогда просьба предоставить код, который будет работать лучше моего (по всем или почти по всем параметрам), а то сказать что плохо, но не сказать как лучше, не мудрено..
Насчет формулы, зачем она мне нужна я не понимаю? не понимаю в принципе, тут у меня 2 переменных, число и степень, в итоге 30 строк кода, а в формуле куда больше, в чем смысл? может ты ошибся темой?
0
|
Заблокирован
|
|
25.07.2013, 17:29 | 22 |
- что подразумевает да ты лучше не напишешь. Друг я напишу любой алгоритм, зачем мне что то кому то доказывать? Я привёл формулы, которые математически обоснованы и предельно корректны, это уже дело третье будешь брать их в работу или использовать алгоритм который так никогда и не возведёт дробное в дробное.
Коды разложений здесь https://www.cyberforum.ru/faq/... ost2452211 - поверь я написал как никогда по адресу.
0
|
Модератор
|
|
25.07.2013, 17:35 | 23 |
- формула действительно хорошая. Но она не позволяет возводить в степень отрицательные числа (т.к. логарифм отрицательного числа не существует). Поэтому отрицательные числа в целую степень следует возводить умножением, а в нецелую - только в комплексной области...
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
25.07.2013, 18:08 [ТС] | 26 |
-=ЮрА=-, это.. я не насмехался, и у меня не было ни какого сарказма, и я не просил что то доказывать, когда я просил написать, мне это нужно было исключительно для того, что бы сравнить с моими каракулями и сделать выводы, способствующие улучшению производительности моей программы, ну и для самосовершенствования.
Насчет формулы, я действительно не понимаю как она относится к возведению в степень (видимо из-за моей тупости).
0
|
Модератор
|
|
25.07.2013, 18:09 | 27 |
- что "зачем"??? Модуль любого числа можно возвести в любую степень без проблем (как раз по формуле, на которую Вы ссылаетесь). А вот отрицательное число в вещественной степени будет, вообще говоря, комплексным. Формула работать будет (только вместо вещественного натурального логарифма нужно использовать его аналитическое расширение - Ln).
0
|
Заблокирован
|
|
26.07.2013, 09:38 | 28 |
-
Ещё раз, не надо переводить в комплексую форму, не надо мучаться с классом комплексное число, а тем более с методом xpow. Есть одно замечательное свойство комплекса, который получается в результате, я привёл его на рисунке. Не по теме: (кто понимает в чём речь - то да для всех комплексов такая фаза). Следует заметить что тэйлор по логорифму натуральному и экспоненте реализовать в разы легче чем городить тучу кода для функции комплексного переменного. Так что вот это ни есть догма если использовать не стандартные подходы широко расписанные в учебниках. mcd в аттаче.
0
|
Заблокирован
|
|
26.07.2013, 10:01 | 30 |
- я и не говорил что отрицательное число не даст комплекса я сказал лишь о том что достаточно найти модуль комплекса с использованием логорифма и экспонеты, а затем привести к алгебраической форме записи используя фазу
И будет на много быстрее чем использовать функцию комплексного переменного, вот и всё. Стояла задача максимально быстрого алгоритма - ну вот он и есть максимально быстрый алгоритм.
0
|
26.07.2013, 10:23 | 31 | |||||
Класс комплексных чисел.
Кликните здесь для просмотра всего текста
Не думаю, что ряды дадут хорошую точность. За этим придется отдельно следить, что превратит код в подобие анархии. P.S. на чистоту кода не претендую.
1
|
Заблокирован
|
|
26.07.2013, 10:28 | 32 |
- ряды дают любую точность, в отличие от стандартных функций, в которых теже разложения обрубываются на при погрешности
1E-6...1E-8 Добавлено через 51 секунду
0
|
26.07.2013, 10:52 | 33 | |||||
-=ЮрА=-, полностью с вами согласен. Но я ведь не зря привел цитату вопроса на который давал ответ. По теме: данный класс позволяет возводить любое число в любую степень, а значит дает ответ на вопрос автора:
Добавлено через 17 минут Нашел ошибку в коде из-за которого класс не правильно работал с чисто отрицательными числами. Нужно заменить:
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
26.07.2013, 11:28 [ТС] | 35 |
У меня была проблема с тем, что я забыл школьную математику и используя интернет и не смог для себя уяснить как считать возведение в степень отрицательных чисел (в одном месте считало что в итоге получалось со знаком "+", в другом месте, тоже самое уже со знаком "-").
А вот если допустим отрицательная степень, то я нашел ответ. Там сначала надо просто возвести в степень, а потом 1 разделить на полученное значение. И все же я так и не услышал что именно в моем коде не так, при том, что он создан исключительно для того, что бы возводить в степень.
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
|
26.07.2013, 11:42 [ТС] | 37 |
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
26.07.2013, 11:48 | 38 |
А твой алгоритм плох тем, что его можно было сделать короче - у тебя дублируются некоторые блоки кода. А во вторых, алгоритм будет работать медленно. Лучше реализовать алгоритм бинарного возведения в степень, либо вообще его обобщение, основанное на поиске кратчайшей аддитивной цепочки. (Это все применимо только для целых степеней)
0
|
26.07.2013, 11:49 | 39 | |||||
1
|
26.07.2013, 11:58 | 40 | |||||
Такой код не лучше?
2
|
26.07.2013, 11:58 | |
26.07.2013, 11:58 | |
Помогаю со студенческими работами здесь
40
Возведение числа n в степень m. Возведение числа в степень Рекурсивное возведение в степень числа Возведение числа в степень через for Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |