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