Алгоритм собственных значений Якоби - Jacobi eigenvalue algorithm

В числовой линейной алгебре , то Якоби собственного значение алгоритм является итерационным методом для вычисления собственных значений и собственных векторов одного реальной симметричной матрицы (процесс , известный как диагонализация ). Он назван в честь Карла Густава Якоба Якоби , который первым предложил метод в 1846 году, но стал широко использоваться только в 1950-х годах с появлением компьютеров.

Описание

Позвольте быть симметричной матрицей и быть матрицей вращения Гивенса . Потом:

симметричен и похож на .

Кроме того, есть записи:

где и .

Поскольку ортогонален и имеет ту же норму Фробениуса (квадратный корень из суммы квадратов всех компонентов), однако мы можем выбрать такой вариант, что в этом случае сумма квадратов на диагонали будет больше:

Установите его равным 0 и переставьте:

если

Чтобы оптимизировать этот эффект, S ij должен быть недиагональным элементом с наибольшим абсолютным значением, называемым точкой поворота .

Метод собственных значений Якоби многократно выполняет вращения, пока матрица не станет почти диагональной. Тогда элементы в диагонали являются приближениями (вещественных) собственных значений S .

Конвергенция

Если - это элемент поворота, то по определению для . Позвольте обозначить сумму квадратов всех недиагональных элементов . Поскольку имеет ровно недиагональные элементы, мы имеем или . Сейчас . Отсюда следует или , т. Е. Последовательность поворотов Якоби сходится по крайней мере линейно с множителем к диагональной матрице.

Ряд поворотов Якоби называется стреловидностью; пусть обозначает результат. Предыдущая оценка дает

,

т.е. последовательность разверток сходится хотя бы линейно с коэффициентом ≈ .

Однако следующий результат Шёнхаге дает локально квадратичную сходимость. Для этого пусть S имеет m различных собственных значений с кратностями, и пусть d > 0 - наименьшее расстояние между двумя разными собственными значениями. Позвольте нам позвонить в ряд

Якоби вращает развертку Шенхаге. Если обозначает результат, то

.

Таким образом, сходимость становится квадратичной, как только

Расходы

Каждое вращение Якоби может быть выполнено за O ( n ) шагов, если известен поворотный элемент p . Однако поиск p требует проверки всех N  ≈  1 / 2   n 2 недиагональных элемента. Мы также можем уменьшить эту сложность до O ( n ), если мы введем дополнительный массив индексов со свойством, которое является индексом самого большого элемента в строке i ( i = 1, ..., n  - 1) текущего S . Тогда индексы стержня ( k , l ) должны быть одной из пар . Также обновление индексного массива может быть выполнено в среднем за O ( n ) сложность: во-первых, максимальная запись в обновленных строках k и l может быть найдена за O ( n ) шагов. В других строках i меняются только записи в столбцах k и l . Перебирая эти строки в цикле, если нет ни k, ни l , достаточно сравнить старый максимум at с новыми записями и при необходимости обновить . Если должно быть равно k или l, а соответствующая запись уменьшилась во время обновления, максимум по строке i должен быть найден с нуля за O ( n ) сложность. Однако в среднем это происходит только один раз за оборот. Таким образом, каждое вращение имеет сложность в среднем O ( n ) и одну развертку O ( n 3 ), что эквивалентно одному умножению матриц. Кроме того , перед запуском процесса необходимо инициализировать, что может быть выполнено за n 2 шагов.

Обычно метод Якоби сходится с числовой точностью после небольшого количества разверток. Обратите внимание, что несколько собственных значений сокращают количество итераций с тех пор .

Алгоритм

Следующий алгоритм представляет собой описание метода Якоби в математической нотации. Он вычисляет вектор e, который содержит собственные значения, и матрицу E, которая содержит соответствующие собственные векторы, т.е. является собственным значением, а столбец - ортонормированным собственным вектором для , i = 1, ..., n .

procedure jacobi(SRn×n; out eRn; out ERn×n)
  var
    i, k, l, m, stateN
    s, c, t, p, y, d, rR
    indNn
    changedLn

  function maxind(kN) ∈ N ! index of largest off-diagonal element in row k
    m := k+1
    for i := k+2 to n do
      ifSki│ > │Skmthen m := i endif
    endfor
    return m
  endfunc

  procedure update(kN; tR) ! update ek and its status
    y := ek; ek := y+t
    if changedk and (y=ek) then changedk := false; state := state−1
    elsif (not changedk) and (yek) then changedk := true; state := state+1
    endif
  endproc

  procedure rotate(k,l,i,jN) ! perform rotation of Sij, Skl  ┐    ┌     ┐┌   ┐
    │Skl│    │cs││Skl│
    │   │ := │     ││   │
    │Sij│    │s   c││Sij│
    └   ┘    └     ┘└   endproc

  ! init e, E, and arrays ind, changed
  E := I; state := n
  for k := 1 to n do indk := maxind(k); ek := Skk; changedk := true endfor
  while state≠0 do ! next rotation
    m := 1 ! find index (k,l) of pivot p
    for k := 2 to n−1 do
      ifSk indk│ > │Sm indmthen m := k endif
    endfor
    k := m; l := indm; p := Skl
    ! calculate c = cos φ, s = sin φ
    y := (elek)/2; d := │y│+√(p2+y2)
    r := √(p2+d2); c := d/r; s := p/r; t := p2/d
    if y<0 then s := −s; t := −t endif
    Skl := 0.0; update(k,−t); update(l,t)
    ! rotate rows and columns k and l
    for i := 1 to k−1 do rotate(i,k,i,l) endfor
    for i := k+1 to l−1 do rotate(k,i,i,l) endfor
    for i := l+1 to n do rotate(k,i,l,i) endfor
    ! rotate eigenvectors
    for i := 1 to n do  ┐    ┌     ┐┌   ┐
      │Eik│    │cs││Eik│
      │   │ := │     ││   │
      │Eil│    │s   c││Eil│
      └   ┘    └     ┘└   endfor
    ! rows k, l have changed, update rows indk, indl
    indk := maxind(k); indl := maxind(l)
  loop
endproc

Заметки

1. Измененный логический массив содержит статус каждого собственного значения. Если числовое значение или изменяется во время итерации, соответствующий компонент измененного устанавливается в значение true , в противном случае - в значение false . Целочисленное состояние подсчитывает количество измененных компонентов, имеющих значение true . Итерация останавливается, как только state = 0. Это означает, что ни одно из приближений не изменило свое значение в последнее время, и поэтому маловероятно, что это произойдет, если итерация продолжится. Здесь предполагается, что операции с плавающей запятой оптимально округляются до ближайшего числа с плавающей запятой.

2. Верхний треугольник матрицы S разрушается, а нижний треугольник и диагональ остаются без изменений. Таким образом, при необходимости можно восстановить S согласно

for k := 1 to n−1 do ! restore matrix S
    for l := k+1 to n do
        Skl := Slk
    endfor
endfor

3. Собственные значения не обязательно в порядке убывания. Этого можно добиться с помощью простого алгоритма сортировки.

for k := 1 to n−1 do
    m := k
    for l := k+1 to n do
        if el > em then
            m := l
        endif
    endfor
    if km then
        swap em,ek
        swap Em,Ek
    endif
endfor

4. Алгоритм написан с использованием матричной записи (массивы на основе 1 вместо 0).

5. При реализации алгоритма часть, указанная в матричной записи, должна выполняться одновременно.

6. Эта реализация неправильно учитывает случай, когда одно измерение является независимым подпространством. Например, если задана диагональная матрица, вышеуказанная реализация никогда не завершится, поскольку ни одно из собственных значений не изменится. Следовательно, в реальных реализациях необходимо добавить дополнительную логику для учета этого случая.

Пример

Позволять

Затем jacobi производит следующие собственные значения и собственные векторы после 3 циклов (19 итераций):

Приложения для вещественных симметричных матриц

Когда собственные значения (и собственные векторы) симметричной матрицы известны, легко вычисляются следующие значения.

Особые значения
Сингулярные значения (квадратной) матрицы A являются квадратными корнями из (неотрицательных) собственных значений матрицы . В случае симметричной матрицы S у нас есть , следовательно, сингулярные значения S являются модулями собственных значений S
2-норма и спектральный радиус
2-норма матрицы A - это норма, основанная на евклидовой векторной норме, то есть наибольшее значение, когда x пробегает все векторы с . Это самое большое сингулярное значение A . В случае симметричной матрицы это наибольшее абсолютное значение ее собственных векторов и, следовательно, равно ее спектральному радиусу.
Номер условия
Число обусловленности невырожденной матрицы A определяется как . В случае симметричной матрицы это абсолютное значение частного наибольшего и наименьшего собственного значения. Матрицы с большими числами обусловленности могут привести к численно нестабильным результатам: небольшое возмущение может привести к большим ошибкам. Матрицы Гильберта - самые известные плохо обусловленные матрицы. Например, матрица Гильберта четвертого порядка имеет условие 15514, а для порядка 8 - 2,7 × 10 8 .
Классифицировать
Матрица A имеет ранг r, если она имеет r столбцов, которые линейно независимы, а остальные столбцы линейно зависят от них. Эквивалентно, г есть размерность диапазона  A . Кроме того, это количество ненулевых особых значений.
В случае симметричной матрицы r - количество ненулевых собственных значений. К сожалению, из-за ошибок округления числовые приближения нулевых собственных значений могут не быть нулевыми (также может случиться, что численное приближение равно нулю, а истинное значение - нет). Таким образом, можно вычислить числовой ранг, только приняв решение, какое из собственных значений достаточно близко к нулю.
Псевдообратный
Псевдообратная матрица A - это единственная матрица, для которой AX и XA симметричны и для которой выполняется AXA = A, XAX = X. Если A неособо, то ' .
Когда вызывается процедура jacobi (S, e, E), то выполняется соотношение, где Diag ( e ) обозначает диагональную матрицу с вектором e на диагонали. Пусть обозначаться вектор , где заменяется , если и 0 , если есть (численно близка к нулю). Поскольку матрица E ортогональна, псевдообратная матрица S имеет вид .
Решение методом наименьших квадратов
Если матрица A не имеет полного ранга, решения линейной системы Ax = b может не быть . Однако можно искать вектор x, для которого минимален. Решение есть . В случае симметричной матрицы S, как и раньше, имеем .
Матрица экспоненциальная
С одной находки , где ехр  й вектор , где заменяются . Таким же образом очевидным образом вычисляется f ( S ) для любой (аналитической) функции f .
Линейные дифференциальные уравнения
Дифференциальное уравнение x '  Ax , x (0) = a имеет решение x ( t ) = exp ( t A a . Для симметричной матрицы S отсюда следует, что . Если есть разложение a по собственным векторам S , то .
Позвольте быть векторным пространством, натянутым на собственные векторы S, которые соответствуют отрицательному собственному значению и аналогично положительным собственным значениям. Если тогда, т.е. точка равновесия 0 привлекательна для x ( t ). Если тогда , то есть 0 отталкивает x ( t ). и называются устойчивые и неустойчивые многообразия для S . Если a имеет компоненты в обоих многообразиях, то один компонент притягивается, а один компонент отталкивается. Следовательно, x ( t ) приближается как .

Обобщения

Метод Якоби был обобщен на комплексные эрмитовы матрицы , общие несимметричные вещественные и комплексные матрицы, а также на блочные матрицы.

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

Метод Якоби также хорошо подходит для параллелизма.

Рекомендации

дальнейшее чтение

Внешние ссылки