Высокоточное деление, умножение и возведение в степень больших комплексных чисел - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над проектом, который требует очень точного деления больших чисел, которые иногда будут сложными числами.Мне нужно сделать это на python, предпочтительно на python 3.7, но все, что я до сих пор пробовал, не работало вообще.

С действительными числами я могу просто использовать десятичный модуль, но я обнаружил, что десятичный модуль делаетне работает для комплексных чисел.Кроме того, когда я попытался расширить десятичный модуль до комплексных чисел, он потерпел неудачу, поскольку я получаю неточные результаты как с большими действительными, так и с большими сложными входными данными.При попытке загрузить внешние модули с функционалом это не сработало.

from decimal import *
def div(a,b):
    y = b.real - (b.imag*1j)
    a = a*y
    b = Decimal((b*y).real)
    return [Decimal(a.real)/b,Decimal(a.imag)/b]

Вот мой код для использования десятичного модуля на комплексных числах и для демонстрации того, что я имею в виду (и для демонстрации этого метода деления), я покажу ниже некоторые входные и выходные данные.Первым будет метод работы с относительно небольшими входами, а вторым будет метод, который практически не работает с большими входами.

>>> div(13243,23)[0]*23
Decimal('13243.00000000000000000000000')

>>> div(15**17,23)[0]*23
Decimal('98526125335693355453.21739130')

Результат от попытки с 15**17 не толькона несколько тысяч выше 15**17, но это тоже не целое число.Это очень неправильно.Как уже говорилось, мне нужно, чтобы этот метод можно было переносить на комплексные числа, и поскольку он предназначен для хранения комплексных чисел в списке, это боль и не идеал.Это было необходимо для того, чтобы использовать десятичную дробь на деталях, хотя она явно не работала.

Сначала я подумал, что, возможно, это был случай, когда мне просто нужно было установить точность выше, но даже при значении 1000 он все равно не работает.

В этот момент я попытался найти несколько модулей, которые позволили бы мне это сделать.Я нашел 2. mpmath и gmpy.Я попытался установить gmpy через pip, и я пытался сделать это на нескольких версиях python и на нескольких версиях gmpy, и каждый раз я получал сообщение об ошибке, обычно одно из-за «активного отказа в соединении», какну, как другие говорят, что это не поддерживается, и т. д.

Этот вид меня застревает.Я не могу получить модули, которые делают это для меня, и когда я пытаюсь сделать это сам, это явно не работает.Есть ли другой модуль, который предоставляет эту функциональность, или я что-то не так делаю с моими попытками, которые можно как-то исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...