Я работал над упрощением матрицы, которая относительно велика и содержит много символических c констант.
Основная цель состоит в том, чтобы обнулить термины, которые умножают символьные c константы и ниже указанного допуска c. Основная проблема, с которой я столкнулся, представлена здесь: (она также представляет собой часть матрицы, над которой я работаю)
import sympy as sp
import numpy as np
AA = sp.Symbol('m')
TestMatrix = Matrix([[0, 0, 0, 0, -143733*AA/15544162865157868, 0, -3793535*AA/205216068200524458, 1091672/883397, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, -72121*AA/59733839071490146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
sp.nsimplify(TestMatrix[0,4],tolerance=1e-6,rational=True)
sp.nsimplify(TestMatrix[0,4]/AA,tolerance=1e-6,rational=True)
вышеупомянутые 2 команды возвращают TestMatrix[0,4],TestMatrix[0,4]/AA
, тогда как
sp.nsimplify(np.float(TestMatrix[0,4]/AA),tolerance=1e-6,rational=True)
возвращает 0
Обратите внимание, что в основной матрице у меня много символов (и выражений типа 10**-10*a*b*x
) в некоторых элементах, поэтому «плавающие» все коэффициенты из каждого символа и их комбинации не будет идеальным