ЦЕЛЬ: Я пытаюсь получить неявные уравнения многообразия, которое задается точками и их остовными векторами. Ну, вы знаете, вы должны исключить Гаусса матрицу этих остовных векторов со столбцом переменных (x1,..., xn) за вычетом точки. Кстати, я использую sympy.
Итак, я реализовал красивую функцию исключения Гаусса, которая отлично работает с нормальными матрицами (я имею в виду, только с числами, без крестиков):
def gauss(matrix):
rows,columns = matrix.shape
n = min(rows,columns)
a = matrix[:,:]
for i in range(n-1):
k = i
for j in range(i + 1, rows):
if abs(a[j,i]) > abs(a[k,i]):
k = j
if k != i:
a[i,:], a[k,:] = a[k,:], a[i,:]
for j in range(i + 1 , rows):
t = a[j,i]/a[i,i]
a[j,i:] -= t*a[i,i:]
return a
И затем я попытался использовать эту функцию в моей матрице остовных векторов с такой точкой X:
point = sympy.Matrix([-1,-3,0,5,3])
generators = sympy.Matrix([[0,0,3,3,0],[-1,4,-3,3,-1],[1,4,-4,-5,-1],[0,8,0,5,-2]]).T
m, n = generators.shape
var_list = sympy.Matrix(variables[:m])
vars = var_list-point
M = generators.col_insert(n, vars)
gauss(M)
ПРОБЛЕМА: И в последней строке я получаю это сообщение:
TypeError: cannot add <class 'sympy.matrices.dense.MutableDenseMatrix'> and <class 'sympy.core.numbers.NaN'>
Я думаю, что это что-то с «минусовой точкой», потому что, когда я пробую эту функцию Гаусса на матрице с числами и столбцом переменных, она работает отлично.
Поэтому я не могу найти, что не так, и я не понимаю ошибку. Был бы очень признателен, если бы мне кто-нибудь помог. Заранее спасибо!