scipy.sparse.linalg.

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 : сбой параметра

Смотрите также

LinearOperator

Примеры

>>> 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