scipy.sparse.linalg.

minres#

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

Решить Ax = b методом MINimum RESidual для симметричной A.

MINRES минимизирует норму(Ax - b) для вещественной симметричной матрицы A. В отличие от метода сопряжённых градиентов, A может быть неопределённой или вырожденной.

Если shift != 0, то метод решает (A - shift*I)x = b

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

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

bndarray

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

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

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

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

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

Другие параметры:
x0ndarray

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

shiftfloat

Значение для применения к системе (A - shift * I)x = b. По умолчанию 0.

rtolfloat

Допуск для достижения. Алгоритм завершается, когда относительный остаток ниже rtol.

maxiterцелое число

Максимальное количество итераций. Итерация остановится после maxiter шагов, даже если указанная точность не достигнута.

M{sparse array, ndarray, LinearOperator}

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

callbackфункция

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

показатьbool

Если True, выводит сводку и метрики, связанные с решением во время итераций. По умолчанию False.

проверитьbool

Если True, выполнить дополнительную проверку входных данных, чтобы убедиться, что A и M (если указаны) симметричны. По умолчанию False.

Ссылки

Решение разреженных неопределенных систем линейных уравнений,

C. C. Paige и M. A. Saunders (1975), SIAM J. Numer. Anal. 12(4), стр. 617-629. https://web.stanford.edu/group/SOL/software/minres/

Этот файл является переводом следующей реализации MATLAB:

https://web.stanford.edu/group/SOL/software/minres/minres-matlab.zip

Примеры

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