qmr#
- scipy.sparse.linalg.qmr(A, b, x0=None, *, rtol=1e-05, atol=0.0, maxiter=None, M1=None, M2=None, callback=None)[источник]#
Решить
Ax = bс помощью метода квазиминимальных невязок.- Параметры:
- A{sparse array, ndarray, LinearOperator}
Вещественная матрица N-на-N линейной системы. В качестве альтернативы,
Aможет быть линейным оператором, который может производитьAxиA^T xиспользуя, например,scipy.sparse.linalg.LinearOperator.- bndarray
Правая часть линейной системы. Имеет форму (N,) или (N,1).
- x0ndarray
Начальное предположение для решения.
- atol, rtolfloat, опционально
Параметры для теста сходимости. Для сходимости,
norm(b - A @ x) <= max(rtol*norm(b), atol)должно быть удовлетворено. По умолчаниюatol=0.иrtol=1e-5.- maxiterцелое число
Максимальное количество итераций. Итерация остановится после maxiter шагов, даже если указанная точность не достигнута.
- M1{sparse array, ndarray, LinearOperator}
Левый предобусловливатель для A.
- M2{sparse array, ndarray, LinearOperator}
Правый предобуславливатель для A. Используется вместе с левым предобуславливателем M1. Матрица M1@A@M2 должна иметь лучше обусловленность, чем A отдельно.
- callbackфункция
Пользовательская функция, вызываемая после каждой итерации. Она вызывается как callback(xk), где xk — текущий вектор решения.
- Возвращает:
- xndarray
Сходящееся решение.
- infoцелое число
- Предоставляет информацию о сходимости:
0 : успешный выход >0 : сходимость к допуску не достигнута, количество итераций <0 : сбой параметра
Смотрите также
Примеры
>>> import numpy as np >>> from scipy.sparse import csc_array >>> from scipy.sparse.linalg import qmr >>> A = csc_array([[3., 2., 0.], [1., -1., 0.], [0., 5., 1.]]) >>> b = np.array([2., 4., -1.]) >>> x, exitCode = qmr(A, b, atol=1e-5) >>> print(exitCode) # 0 indicates successful convergence 0 >>> np.allclose(A.dot(x), b) True