Линейная алгебра с разреженной триагональной матрицей - PullRequest
0 голосов
/ 17 мая 2019

У меня есть трехдиагональная матрица A, которую я хочу сделать разреженной матрицей, а затем решить линейную систему Ax = b, используя scipy, как это сделать.

Я попробовал следующий код, который не работает.


from scipy.sparse import dia_matrix
from scipy.sparse.linalg import spsolve_triangular

N = 10


diag = np.zeros(N) + 2
udiag = np.zeros(N) + 1
A = dia_matrix(([diag, udiag, udiag], [0, 1, -1]), shape=(N, N))


b = np.ones(N)

print(A.todense())
print(b)


x = spsolve_triangular(A, b)

print(x)

1 Ответ

2 голосов
/ 17 мая 2019

Проблема заключается в том, что ваша матрица не треугольная, а трехугольная. Поэтому вы должны использовать функцию spsolve вместо функции spsolve_triangular.

...