scipy.sparse.linalg.

tfqmr#

scipy.sparse.linalg.tfqmr(A, b, x0=None, *, rtol=1e-05, atol=0.0, maxiter=None, M=None, callback=None, показать=False)[источник]#

Решить Ax = b с использованием метода Transpose-Free Quasi-Minimal Residual.

Параметры:
A{sparse array, ndarray, LinearOperator}

Вещественная или комплексная N-на-N матрица линейной системы. Альтернативно, A может быть линейным оператором, который может производить Ax используя, например, scipy.sparse.linalg.LinearOperator.

b{ndarray}

Правая часть линейной системы. Имеет форму (N,) или (N,1).

x0{ndarray}

Начальное предположение для решения.

rtol, atolfloat, опционально

Параметры для теста сходимости. Для сходимости, norm(b - A @ x) <= max(rtol*norm(b), atol) должно быть удовлетворено. По умолчанию rtol=1e-5, по умолчанию для atol является 0.0.

maxiterint, необязательный

Максимальное количество итераций. Итерация остановится после maxiter шагов, даже если указанная точность не достигнута. По умолчанию min(10000, ndofs * 10), где ndofs = A.shape[0].

M{sparse array, ndarray, LinearOperator}

Обратный предобуславливатель A. M должен аппроксимировать обратную A и быть легко решаемым (см. Примечания). Эффективный предобуславливатель значительно улучшает скорость сходимости, что означает, что требуется меньше итераций для достижения заданной погрешности. По умолчанию предобуславливатель не используется.

callbackфункция, необязательный

Пользовательская функция, вызываемая после каждой итерации. Вызывается как callback(xk), где xk является текущим вектором решения.

показатьbool, необязательно

Укажите show = True чтобы показать сходимость, show = False закрыть вывод сходимости. По умолчанию False.

Возвращает:
xndarray

Сходящееся решение.

infoint

Предоставляет информацию о сходимости:

  • 0 : успешный выход

  • >0 : сходимость к допуску не достигнута, количество итераций

  • <0 : недопустимый ввод или сбой

Примечания

Алгоритм Transpose-Free QMR выводится из алгоритма CGS. Однако, в отличие от CGS, кривые сходимости для метода TFQMR сглаживаются путём вычисления квазиминимизации нормы невязки. Реализация поддерживает левый предобуславливатель, и "норма невязки", вычисляемая в критерии сходимости, фактически является верхней границей фактической нормы невязки. ||b - Axk||.

Ссылки

[1]

R. W. Freund, A Transpose-Free Quasi-Minimal Residual Algorithm for Non-Hermitian Linear Systems, SIAM J. Sci. Comput., 14(2), 470-482, 1993.

[2]

Y. Саад, Итеративные методы для разреженных линейных систем, 2-е издание, SIAM, Филадельфия, 2003.

[3]

К. Т. Келли, Итеративные методы для линейных и нелинейных уравнений, номер 16 в Frontiers in Applied Mathematics, SIAM, Филадельфия, 1995.

Примеры

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> from scipy.sparse.linalg import tfqmr
>>> A = csc_array([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
>>> b = np.array([2, 4, -1], dtype=float)
>>> x, exitCode = tfqmr(A, b, atol=0.0)
>>> print(exitCode)            # 0 indicates successful convergence
0
>>> np.allclose(A.dot(x), b)
True