В числовая линейная алгебра , то метод сопряженных градиентов является итерационный метод для численного решения линейная система
А Икс = б { displaystyle { boldsymbol {Ax}} = { boldsymbol {b}}} куда А { displaystyle { boldsymbol {A}}} является симметричный положительно определенный . Метод сопряженных градиентов может быть получен с нескольких различных точек зрения, включая специализацию метод сопряженных направлений за оптимизация , и вариация Арнольди /Ланцош итерация для собственное значение проблемы.
Цель этой статьи - документировать важные этапы этих выводов.
Вывод из метода сопряженных направлений
Эта секция
нуждается в расширении .
Вы можете помочь добавляя к этому . (Апрель 2010 г. )
Метод сопряженных градиентов можно рассматривать как частный случай метода сопряженных направлений, применяемого для минимизации квадратичной функции
ж ( Икс ) = Икс Т А Икс − 2 б Т Икс . { displaystyle f ({ boldsymbol {x}}) = { boldsymbol {x}} ^ { mathrm {T}} { boldsymbol {A}} { boldsymbol {x}} - 2 { boldsymbol {b }} ^ { mathrm {T}} { boldsymbol {x}} { text {.}}} Метод сопряженных направлений В методе сопряженных направлений для минимизации
ж ( Икс ) = Икс Т А Икс − 2 б Т Икс . { displaystyle f ({ boldsymbol {x}}) = { boldsymbol {x}} ^ { mathrm {T}} { boldsymbol {A}} { boldsymbol {x}} - 2 { boldsymbol {b }} ^ { mathrm {T}} { boldsymbol {x}} { text {.}}} каждый начинается с первоначального предположения Икс 0 { displaystyle { boldsymbol {x}} _ {0}} и соответствующая невязка р 0 = б − А Икс 0 { displaystyle { boldsymbol {r}} _ {0} = { boldsymbol {b}} - { boldsymbol {Ax}} _ {0}} , и вычисляет итерацию и невязку по формулам
α я = п я Т р я п я Т А п я , Икс я + 1 = Икс я + α я п я , р я + 1 = р я − α я А п я { displaystyle { begin {align} alpha _ {i} & = { frac {{ boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {i }} {{ boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}}} { text {,}} { boldsymbol {x} } _ {i + 1} & = { boldsymbol {x}} _ {i} + alpha _ {i} { boldsymbol {p}} _ {i} { text {,}} { boldsymbol {r}} _ {i + 1} & = { boldsymbol {r}} _ {i} - alpha _ {i} { boldsymbol {Ap}} _ {i} end {align}}} куда п 0 , п 1 , п 2 , … { displaystyle { boldsymbol {p}} _ {0}, { boldsymbol {p}} _ {1}, { boldsymbol {p}} _ {2}, ldots} представляют собой серию взаимно сопряженных направлений, т. е.
п я Т А п j = 0 { displaystyle { boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {j} = 0} для любого я ≠ j { displaystyle i neq j} .
Метод сопряженных направлений неточен в том смысле, что не даются формулы для выбора направлений. п 0 , п 1 , п 2 , … { displaystyle { boldsymbol {p}} _ {0}, { boldsymbol {p}} _ {1}, { boldsymbol {p}} _ {2}, ldots} . Конкретный выбор приводит к различным методам, включая метод сопряженных градиентов и Гауссово исключение .
Вывод из итерации Арнольди / Ланцоша
Метод сопряженных градиентов можно также рассматривать как вариант итерации Арнольди / Ланцоша, применяемой для решения линейных систем.
Общий метод Арнольди В итерации Арнольди каждый начинается с вектора р 0 { displaystyle { boldsymbol {r}} _ {0}} и постепенно строит ортонормированный основа { v 1 , v 2 , v 3 , … } { displaystyle {{ boldsymbol {v}} _ {1}, { boldsymbol {v}} _ {2}, { boldsymbol {v}} _ {3}, ldots }} из Крыловское подпространство
K ( А , р 0 ) = s п а п { р 0 , А р 0 , А 2 р 0 , … } { displaystyle { mathcal {K}} ({ boldsymbol {A}}, { boldsymbol {r}} _ {0}) = mathrm {span} {{ boldsymbol {r}} _ {0} , { boldsymbol {Ar}} _ {0}, { boldsymbol {A}} ^ {2} { boldsymbol {r}} _ {0}, ldots }} определяя v я = ш я / ‖ ш я ‖ 2 { displaystyle { boldsymbol {v}} _ {i} = { boldsymbol {w}} _ {i} / lVert { boldsymbol {w}} _ {i} rVert _ {2}} куда
ш я = { р 0 если я = 1 , А v я − 1 − ∑ j = 1 я − 1 ( v j Т А v я − 1 ) v j если я > 1 . { displaystyle { boldsymbol {w}} _ {i} = { begin {case} { boldsymbol {r}} _ {0} & { text {if}} i = 1 { text {,}} { boldsymbol {Av}} _ {i-1} - sum _ {j = 1} ^ {i-1} ({ boldsymbol {v}} _ {j} ^ { mathrm {T}} { boldsymbol {Av}} _ {i-1}) { boldsymbol {v}} _ {j} & { text {if}} i> 1 { text {.}} end {case}}} Другими словами, для я > 1 { displaystyle i> 1} , v я { displaystyle { boldsymbol {v}} _ {i}} найден Ортогонализация по Граму-Шмидту А v я − 1 { displaystyle { boldsymbol {Av}} _ {i-1}} против { v 1 , v 2 , … , v я − 1 } { displaystyle {{ boldsymbol {v}} _ {1}, { boldsymbol {v}} _ {2}, ldots, { boldsymbol {v}} _ {i-1} }} с последующей нормализацией.
В матричной форме итерация описывается уравнением
А V я = V я + 1 ЧАС ~ я { displaystyle { boldsymbol {AV}} _ {i} = { boldsymbol {V}} _ {i + 1} { boldsymbol { tilde {H}}} _ {i}} куда
V я = [ v 1 v 2 ⋯ v я ] , ЧАС ~ я = [ час 11 час 12 час 13 ⋯ час 1 , я час 21 час 22 час 23 ⋯ час 2 , я час 32 час 33 ⋯ час 3 , я ⋱ ⋱ ⋮ час я , я − 1 час я , я час я + 1 , я ] = [ ЧАС я час я + 1 , я е я Т ] { displaystyle { begin {align} { boldsymbol {V}} _ {i} & = { begin {bmatrix} { boldsymbol {v}} _ {1} & { boldsymbol {v}} _ {2 } & cdots & { boldsymbol {v}} _ {i} end {bmatrix}} { text {,}} { boldsymbol { tilde {H}}} _ {i} & = { begin {bmatrix} h_ {11} & h_ {12} & h_ {13} & cdots & h_ {1, i} h_ {21} & h_ {22} & h_ {23} & cdots & h_ {2, i} & h_ {32} & h_ {33} & cdots & h_ {3, i} && ddots & ddots & vdots &&& h_ {i, i-1} & h_ {i, i} &&&& h_ {i + 1, i} end {bmatrix}} = { begin {bmatrix} { boldsymbol {H}} _ {i} h_ {i + 1, i} { boldsymbol {e}} _ {i} ^ { mathrm {T}} end {bmatrix}} end {align}}} с
час j я = { v j Т А v я если j ≤ я , ‖ ш я + 1 ‖ 2 если j = я + 1 , 0 если j > я + 1 . { displaystyle h_ {ji} = { begin {case} { boldsymbol {v}} _ {j} ^ { mathrm {T}} { boldsymbol {Av}} _ {i} & { text {если }} j leq i { text {,}} lVert { boldsymbol {w}} _ {i + 1} rVert _ {2} & { text {if}} j = i + 1 { text {,}} 0 & { text {if}} j> i + 1 { text {.}} end {case}}} Применяя итерацию Арнольди к решению линейных систем, начинают с р 0 = б − А Икс 0 { displaystyle { boldsymbol {r}} _ {0} = { boldsymbol {b}} - { boldsymbol {Ax}} _ {0}} , невязка, соответствующая первоначальному предположению Икс 0 { displaystyle { boldsymbol {x}} _ {0}} . После каждого шага итерации вычисляется у я = ЧАС я − 1 ( ‖ р 0 ‖ 2 е 1 ) { displaystyle { boldsymbol {y}} _ {i} = { boldsymbol {H}} _ {i} ^ {- 1} ( lVert { boldsymbol {r}} _ {0} rVert _ {2 } { boldsymbol {e}} _ {1})} и новая итерация Икс я = Икс 0 + V я у я { displaystyle { boldsymbol {x}} _ {i} = { boldsymbol {x}} _ {0} + { boldsymbol {V}} _ {i} { boldsymbol {y}} _ {i}} .
Прямой метод Ланцоша В дальнейшем мы предполагаем, что А { displaystyle { boldsymbol {A}}} симметрично положительно определено. С симметрией А { displaystyle { boldsymbol {A}}} , то верхняя матрица Гессенберга ЧАС я = V я Т А V я { displaystyle { boldsymbol {H}} _ {i} = { boldsymbol {V}} _ {i} ^ { mathrm {T}} { boldsymbol {AV}} _ {i}} становится симметричным и, следовательно, трехдиагональным. Тогда это можно более четко обозначить как
ЧАС я = [ а 1 б 2 б 2 а 2 б 3 ⋱ ⋱ ⋱ б я − 1 а я − 1 б я б я а я ] . { displaystyle { boldsymbol {H}} _ {i} = { begin {bmatrix} a_ {1} & b_ {2} b_ {2} & a_ {2} & b_ {3} & ddots & ddots & ddots && b_ {i-1} & a_ {i-1} & b_ {i} &&& b_ {i} & a_ {i} end {bmatrix}} { text {.}}} Это дает возможность кратковременного трехкратного повторения v я { displaystyle { boldsymbol {v}} _ {i}} в итерации, а итерация Арнольди сводится к итерации Ланцоша.
С А { displaystyle { boldsymbol {A}}} является симметричным положительно определенным, поэтому ЧАС я { displaystyle { boldsymbol {H}} _ {i}} . Следовательно, ЧАС я { displaystyle { boldsymbol {H}} _ {i}} возможно LU факторизованный без частичный поворот в
ЧАС я = L я U я = [ 1 c 2 1 ⋱ ⋱ c я − 1 1 c я 1 ] [ d 1 б 2 d 2 б 3 ⋱ ⋱ d я − 1 б я d я ] { displaystyle { boldsymbol {H}} _ {i} = { boldsymbol {L}} _ {i} { boldsymbol {U}} _ {i} = { begin {bmatrix} 1 c_ {2 } & 1 & ddots & ddots && c_ {i-1} & 1 &&& c_ {i} & 1 end {bmatrix}} { begin {bmatrix} d_ {1} & b_ {2} & d_ { 2} & b_ {3} && ddots & ddots &&& d_ {i-1} & b_ {i} &&&& d_ {i} end {bmatrix}}} с удобными повторами для c я { displaystyle c_ {i}} и d я { displaystyle d_ {i}} :
c я = б я / d я − 1 , d я = { а 1 если я = 1 , а я − c я б я если я > 1 . { displaystyle { begin {align} c_ {i} & = b_ {i} / d_ {i-1} { text {,}} d_ {i} & = { begin {cases} a_ {1 } & { text {if}} i = 1 { text {,}} a_ {i} -c_ {i} b_ {i} & { text {if}} i> 1 { text {. }} end {case}} end {align}}} Переписать Икс я = Икс 0 + V я у я { displaystyle { boldsymbol {x}} _ {i} = { boldsymbol {x}} _ {0} + { boldsymbol {V}} _ {i} { boldsymbol {y}} _ {i}} в качестве
Икс я = Икс 0 + V я ЧАС я − 1 ( ‖ р 0 ‖ 2 е 1 ) = Икс 0 + V я U я − 1 L я − 1 ( ‖ р 0 ‖ 2 е 1 ) = Икс 0 + п я z я { displaystyle { begin {align} { boldsymbol {x}} _ {i} & = { boldsymbol {x}} _ {0} + { boldsymbol {V}} _ {i} { boldsymbol {H }} _ {i} ^ {- 1} ( lVert { boldsymbol {r}} _ {0} rVert _ {2} { boldsymbol {e}} _ {1}) & = { boldsymbol {x}} _ {0} + { boldsymbol {V}} _ {i} { boldsymbol {U}} _ {i} ^ {- 1} { boldsymbol {L}} _ {i} ^ {- 1} ( lVert { boldsymbol {r}} _ {0} rVert _ {2} { boldsymbol {e}} _ {1}) & = { boldsymbol {x}} _ {0} + { boldsymbol {P}} _ {i} { boldsymbol {z}} _ {i} end {align}}} с
п я = V я U я − 1 , z я = L я − 1 ( ‖ р 0 ‖ 2 е 1 ) . { displaystyle { begin {align} { boldsymbol {P}} _ {i} & = { boldsymbol {V}} _ {i} { boldsymbol {U}} _ {i} ^ {- 1} { text {,}} { boldsymbol {z}} _ {i} & = { boldsymbol {L}} _ {i} ^ {- 1} ( lVert { boldsymbol {r}} _ {0 } rVert _ {2} { boldsymbol {e}} _ {1}) { text {.}} end {align}}} Теперь важно заметить, что
п я = [ п я − 1 п я ] , z я = [ z я − 1 ζ я ] . { displaystyle { begin {align} { boldsymbol {P}} _ {i} & = { begin {bmatrix} { boldsymbol {P}} _ {i-1} & { boldsymbol {p}} _ {i} end {bmatrix}} { text {,}} { boldsymbol {z}} _ {i} & = { begin {bmatrix} { boldsymbol {z}} _ {i-1} zeta _ {i} end {bmatrix}} { text {.}} end {align}}} Фактически, есть короткие повторения для п я { displaystyle { boldsymbol {p}} _ {i}} и ζ я { displaystyle zeta _ {я}} также:
п я = 1 d я ( v я − б я п я − 1 ) , ζ я = − c я ζ я − 1 . { displaystyle { begin {align} { boldsymbol {p}} _ {i} & = { frac {1} {d_ {i}}} ({ boldsymbol {v}} _ {i} -b_ { i} { boldsymbol {p}} _ {i-1}) { text {,}} zeta _ {i} & = - c_ {i} zeta _ {i-1} { text { .}} end {выровнены}}} С этой формулировкой мы приходим к простому возвращению для Икс я { displaystyle { boldsymbol {x}} _ {i}} :
Икс я = Икс 0 + п я z я = Икс 0 + п я − 1 z я − 1 + ζ я п я = Икс я − 1 + ζ я п я . { displaystyle { begin {align} { boldsymbol {x}} _ {i} & = { boldsymbol {x}} _ {0} + { boldsymbol {P}} _ {i} { boldsymbol {z }} _ {i} & = { boldsymbol {x}} _ {0} + { boldsymbol {P}} _ {i-1} { boldsymbol {z}} _ {i-1} + zeta _ {i} { boldsymbol {p}} _ {i} & = { boldsymbol {x}} _ {i-1} + zeta _ {i} { boldsymbol {p}} _ {i } { текст {.}} конец {выровнено}}} Приведенные выше соотношения напрямую приводят к прямому методу Ланцоша, который оказывается несколько более сложным.
Метод сопряженных градиентов от наложения ортогональности и сопряженности Если мы позволим п я { displaystyle { boldsymbol {p}} _ {i}} для масштабирования и компенсации масштабирования в постоянном множителе мы потенциально можем иметь более простые повторы в форме:
Икс я = Икс я − 1 + α я − 1 п я − 1 , р я = р я − 1 − α я − 1 А п я − 1 , п я = р я + β я − 1 п я − 1 . { displaystyle { begin {align} { boldsymbol {x}} _ {i} & = { boldsymbol {x}} _ {i-1} + alpha _ {i-1} { boldsymbol {p} } _ {i-1} { text {,}} { boldsymbol {r}} _ {i} & = { boldsymbol {r}} _ {i-1} - alpha _ {i-1 } { boldsymbol {Ap}} _ {i-1} { text {,}} { boldsymbol {p}} _ {i} & = { boldsymbol {r}} _ {i} + beta _ {i-1} { boldsymbol {p}} _ {i-1} { text {.}} end {align}}} В качестве предпосылки для упрощения выводим теперь ортогональность р я { displaystyle { boldsymbol {r}} _ {i}} и сопряженность п я { displaystyle { boldsymbol {p}} _ {i}} , т.е. для я ≠ j { displaystyle i neq j} ,
р я Т р j = 0 , п я Т А п j = 0 . { displaystyle { begin {align} { boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {j} & = 0 { text {,}} { boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {j} & = 0 { text {.}} end {align}}} Остатки взаимно ортогональны, потому что р я { displaystyle { boldsymbol {r}} _ {i}} по сути является кратным v я + 1 { displaystyle { boldsymbol {v}} _ {я + 1}} поскольку для я = 0 { displaystyle i = 0} , р 0 = ‖ р 0 ‖ 2 v 1 { displaystyle { boldsymbol {r}} _ {0} = lVert { boldsymbol {r}} _ {0} rVert _ {2} { boldsymbol {v}} _ {1}} , за я > 0 { displaystyle i> 0} ,
р я = б − А Икс я = б − А ( Икс 0 + V я у я ) = р 0 − А V я у я = р 0 − V я + 1 ЧАС ~ я у я = р 0 − V я ЧАС я у я − час я + 1 , я ( е я Т у я ) v я + 1 = ‖ р 0 ‖ 2 v 1 − V я ( ‖ р 0 ‖ 2 е 1 ) − час я + 1 , я ( е я Т у я ) v я + 1 = − час я + 1 , я ( е я Т у я ) v я + 1 . { displaystyle { begin {align} { boldsymbol {r}} _ {i} & = { boldsymbol {b}} - { boldsymbol {Ax}} _ {i} & = { boldsymbol {b }} - { boldsymbol {A}} ({ boldsymbol {x}} _ {0} + { boldsymbol {V}} _ {i} { boldsymbol {y}} _ {i}) & = { boldsymbol {r}} _ {0} - { boldsymbol {AV}} _ {i} { boldsymbol {y}} _ {i} & = { boldsymbol {r}} _ {0} - { boldsymbol {V}} _ {i + 1} { boldsymbol { tilde {H}}} _ {i} { boldsymbol {y}} _ {i} & = { boldsymbol {r}} _ {0} - { boldsymbol {V}} _ {i} { boldsymbol {H}} _ {i} { boldsymbol {y}} _ {i} -h_ {i + 1, i} ({ boldsymbol {e}} _ {i} ^ { mathrm {T}} { boldsymbol {y}} _ {i}) { boldsymbol {v}} _ {i + 1} & = lVert { boldsymbol {r}} _ {0} rVert _ {2} { boldsymbol {v}} _ {1} - { boldsymbol {V}} _ {i} ( lVert { boldsymbol {r}} _ { 0} rVert _ {2} { boldsymbol {e}} _ {1}) - h_ {i + 1, i} ({ boldsymbol {e}} _ {i} ^ { mathrm {T}} { boldsymbol {y}} _ {i}) { boldsymbol {v}} _ {i + 1} & = - h_ {i + 1, i} ({ boldsymbol {e}} _ {i} ^ { mathrm {T}} { boldsymbol {y}} _ {i}) { boldsymbol {v}} _ {i + 1} { text {.}} end {align}}} Чтобы увидеть сопряжение п я { displaystyle { boldsymbol {p}} _ {i}} , достаточно показать, что п я Т А п я { displaystyle { boldsymbol {P}} _ {i} ^ { mathrm {T}} { boldsymbol {AP}} _ {i}} диагональ:
п я Т А п я = U я − Т V я Т А V я U я − 1 = U я − Т ЧАС я U я − 1 = U я − Т L я U я U я − 1 = U я − Т L я { displaystyle { begin {align} { boldsymbol {P}} _ {i} ^ { mathrm {T}} { boldsymbol {AP}} _ {i} & = { boldsymbol {U}} _ { i} ^ {- mathrm {T}} { boldsymbol {V}} _ {i} ^ { mathrm {T}} { boldsymbol {AV}} _ {i} { boldsymbol {U}} _ { i} ^ {- 1} & = { boldsymbol {U}} _ {i} ^ {- mathrm {T}} { boldsymbol {H}} _ {i} { boldsymbol {U}} _ {i} ^ {- 1} & = { boldsymbol {U}} _ {i} ^ {- mathrm {T}} { boldsymbol {L}} _ {i} { boldsymbol {U}} _ {i} { boldsymbol {U}} _ {i} ^ {- 1} & = { boldsymbol {U}} _ {i} ^ {- mathrm {T}} { boldsymbol {L} } _ {i} end {выровнены}}} является симметричным и нижним треугольником одновременно и, следовательно, должен быть диагональным.
Теперь мы можем получить постоянные множители α я { displaystyle alpha _ {я}} и β я { displaystyle beta _ {я}} относительно масштабированного п я { displaystyle { boldsymbol {p}} _ {i}} только наложив ортогональность р я { displaystyle { boldsymbol {r}} _ {i}} и сопряженность п я { displaystyle { boldsymbol {p}} _ {i}} .
Из-за ортогональности р я { displaystyle { boldsymbol {r}} _ {i}} , необходимо, чтобы р я + 1 Т р я = ( р я − α я А п я ) Т р я = 0 { displaystyle { boldsymbol {r}} _ {i + 1} ^ { mathrm {T}} { boldsymbol {r}} _ {i} = ({ boldsymbol {r}} _ {i} - альфа _ {i} { boldsymbol {Ap}} _ {i}) ^ { mathrm {T}} { boldsymbol {r}} _ {i} = 0} . Как результат,
α я = р я Т р я р я Т А п я = р я Т р я ( п я − β я − 1 п я − 1 ) Т А п я = р я Т р я п я Т А п я . { displaystyle { begin {align} alpha _ {i} & = { frac {{ boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {i }} {{ boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}}} & = { frac {{ boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {i}} {({ boldsymbol {p}} _ {i} - beta _ {i-1} { boldsymbol { p}} _ {i-1}) ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}}} & = { frac {{ boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {i}} {{ boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i }}} { text {.}} end {выровнены}}} Точно так же из-за сопряженности п я { displaystyle { boldsymbol {p}} _ {i}} , необходимо, чтобы п я + 1 Т А п я = ( р я + 1 + β я п я ) Т А п я = 0 { displaystyle { boldsymbol {p}} _ {i + 1} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i} = ({ boldsymbol {r}} _ {i + 1} + beta _ {i} { boldsymbol {p}} _ {i}) ^ { mathrm {T}} { boldsymbol {Ap}} _ {i} = 0} . Как результат,
β я = − р я + 1 Т А п я п я Т А п я = − р я + 1 Т ( р я − р я + 1 ) α я п я Т А п я = р я + 1 Т р я + 1 р я Т р я . { displaystyle { begin {align} beta _ {i} & = - { frac {{ boldsymbol {r}} _ {i + 1} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}} {{ boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}}} & = - { frac {{ boldsymbol {r}} _ {i + 1} ^ { mathrm {T}} ({ boldsymbol {r}} _ {i} - { boldsymbol {r}} _ {i + 1})} { alpha _ {i} { boldsymbol {p}} _ {i} ^ { mathrm {T}} { boldsymbol {Ap}} _ {i}}} & = { frac {{ boldsymbol {r}} _ {i + 1} ^ { mathrm {T}} { boldsymbol {r}} _ {i + 1}} {{ boldsymbol {r}} _ {i} ^ { mathrm {T}} { boldsymbol {r}} _ {i}}} { text {.}} end {выравнивается}}} На этом вывод завершен.
Рекомендации
Гестенес, М. ; Штифель, Э. (Декабрь 1952 г.). «Методы сопряженных градиентов для решения линейных систем» (PDF) . Журнал исследований Национального бюро стандартов . 49 (6).Саад, Ю. (2003). "Глава 6: Методы подпространства Крылова, часть I". Итерационные методы для разреженных линейных систем (2-е изд.). СИАМ. ISBN 978-0-89871-534-7 . Ключевые идеи Проблемы Аппаратное обеспечение Программного обеспечения