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