Я пытаюсь реализовать линейные методы решения для реальных наборов данных. Я запутался при анализе матрицы из файла mtx, чтобы получить вектор b , а затем запустил массивы через мой метод.Я могу конвертировать .mtx файл в матрицу, однако мой метод jacobi требует матрицу A,
Метод Jacobi:
def jacobi(A,b,N=50,x=None):
"""Solves the equation Ax=b via the Jacobi iterative method."""
#A = our initial matrix
#b = solution vector
#N = number of iterations
# Create an initial guess of vector 0
if x is None:
x = zeros(len(A[0]))
# Create a vector of the diagonal elements of A
# and subtract them from A
D = diag(A)
T = A - diagflat(D)
# Iterate for N times
for i in range(N):
x = (b - dot(T,x)) / D
print("The number of iteration is: %d" %(i+1))
return x
Обычное использование jacobi:
A = [[4.0,-1.0,1.0],[2.0,5.0,2.0],[1.0,2.0,4.0]]
b = [8.0,3.0,11.0]
Actual = [1.0,-1.0,3.0]
Approx = np.array(Matrix_Solver_Methods.jacobi(A,b))
Вот разреженный файл mtx и преобразовать его в матрицу, но как мне собрать b для реализации?
def loadMatrix(filename):
M = sp.io.mmread(filename)
if sp.sparse.issparse(M):
M = M.todense()
return M
Mtx=loadMatrix('bcsstk14.mtx')
Mtx=np.array(Mtx)
Или я могу сгенерировать вектор-столбец такой жедлина как столбцы Mtx?