У меня есть функция в Python pet_cycleind_symmNM(n, m)
, который при вызове для значений pet_cycleind_symmNM(5, 5)
возвращает «термин список»Преобразование условий для значений без потери точности (фракции)
[[Fraction(1, 14400), [[1, 25]]], [Fraction(1, 720), [[2, 5], [1, 15]]], [Fraction(1, 360), [[3, 5], [1, 10]]], [Fraction(1, 480), [[2, 10], [1, 5]]], [Fraction(1, 240), [[4, 5], [1, 5]]], [Fraction(1, 360), [[3, 5], [2, 5]]], [Fraction(13, 300), [[5, 5]]], [Fraction(1, 144), [[2, 8], [2, -2], [1, 9]]], [Fraction(1, 36), [[6, 1], [2, 2], [3, 3], [1, 6]]], [Fraction(1, 48), [[2, 11], [2, -2], [1, 3]]], [Fraction(1, 24), [[4, 5], [2, 1], [1, 3]]], [Fraction(1, 36), [[6, 1], [2, 5], [3, 3]]], [Fraction(1, 30), [[10, 1], [5, 3]]], [Fraction(1, 36), [[3, 7], [3, -2], [1, 4]]], [Fraction(1, 24), [[6, 2], [3, 1], [2, 4], [1, 2]]], [Fraction(1, 12), [[12, 1], [3, 1], [4, 2], [1, 2]]], [Fraction(1, 18), [[3, 5], [6, 1], [2, 2]]], [Fraction(1, 15), [[15, 1], [5, 2]]], [Fraction(1, 64), [[2, 12], [2, -2], [1, 1]]], [Fraction(1, 16), [[4, 5], [2, 2], [1, 1]]], [Fraction(1, 24), [[6, 2], [2, 5], [3, 1]]], [Fraction(1, 20), [[10, 2], [5, 1]]], [Fraction(1, 16), [[4, 6], [4, -2], [1, 1]]], [Fraction(1, 12), [[12, 1], [4, 2], [3, 1], [2, 1]]], [Fraction(1, 10), [[20, 1], [5, 1]]], [Fraction(1, 36), [[3, 3], [6, 2], [2, 2]]], [Fraction(1, 15), [[15, 1], [10, 1]]]]
каждый член состоит из fractions.Fraction
, и список одного или более переменных
Например термин
[Fraction(1, 720), [[2, 5], [1, 15]]]
означает 1/720 * a2**5 * a1**15
Я хочу, чтобы оценить сумму всех членов в списке, где все «переменные» (a1, a2, a3, и т.д.) являются только целым числом 4.
Когда calcalated «символический» результат должен быть 79846389608
, но я получаю 79728205394.7
Это код, я использую для оценки термина списка
def substitute(term, v):
total = 1
for a in term[1]:
total *= v**a[1]
return (term[0] * total)
def mat_count(n, m, q):
terml = pet_cycleind_symmNM(n, m)
total = 0
for term in terml:
total += substitute(term, q)
return total
print mat_count(5, 5, 4)
Как я могу сделать это без потери точности?
Нуль ответа является симпатичным, где Fraction заменяется на рациональное, и вы можете объявлять переменные a1 и a2 в качестве переменных, а затем использовать .sub для точного определения выражений, связанных с ними. –