Я работаю над проектом, который требует очень точного деления больших чисел, которые иногда будут сложными числами.Мне нужно сделать это на 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
, и каждый раз я получал сообщение об ошибке, обычно одно из-за «активного отказа в соединении», какну, как другие говорят, что это не поддерживается, и т. д.
Этот вид меня застревает.Я не могу получить модули, которые делают это для меня, и когда я пытаюсь сделать это сам, это явно не работает.Есть ли другой модуль, который предоставляет эту функциональность, или я что-то не так делаю с моими попытками, которые можно как-то исправить?