Блочный метод ланцоша ошибка неудачный выбор параметра сдвига

Введение

При решении задач сейсмического анализа зданий и сооружений чаще всего применяется линейно-спектральный метод. Значительной по трудоемкости составляющей этого подхода является определение частот и форм собственных колебаний. При этом возникает вопрос: а сколько частот и форм собственных колебаний следует удерживать, чтобы результат был достоверным? В сейсмических нормах многих стран (Еврокод 8, UBC-97, сейсмические нормы Украины и др.) принято, что сумма модальных масс по каждому из направлений сейсмического воздействия должна быть не менее установленной границы. Обычно для горизонтальной составляющей сейсмического воздействия принимается 85−90%, для вертикальной — 70−90%. Под направлением сейсмического воздействия понимается направление, совпадающее с одной из осей глобальной системы координат OXYZ расчетной модели сооружения. Считается, что сейсмическое воздействие поочередно прикладывается вдоль каждой оси, причем принимается гипотеза об их статистической независимости [5, 8].

Модальной массой при сейсмическом воздействии в направлении dir (dir = OX, OY, OZ) называется величина

(1)

, где Гidir = (Mψi, Idir), M — матрица масс, ψi — собственный вектор (форма колебаний, отвечающая i-й частоте), Idir — вектор, компоненты которого равны 1, если соответствуют степени свободы сейсмического входа по направлению dir, и нулю в противном случае,

— общая масса, участвующая в движении по направлению dir.

Суммой модальных масс по направлению dir называется величина
, причем

(2)

, где N — количество степеней свободы дискретной модели [3, 5, 8], n — количество удерживаемых собственных форм, n < < N.

В [3] на примере простой задачи показана зависимость некоторых внутренних усилий от суммы модальных масс (рис. 1).


Рис. 1

Рис. 1

Здесь NΛ = NA ⁄ NA100; VΛ = V ⁄ V100; MΛ = Mov ⁄ Mov100, NA — продольная сила в стержне А, V — суммарная сдвигающая сила в основании, Mov — опрокидывающий момент. Символ 100 означает, что этот фактор получен при удержании в решении всех собственных форм дискретной модели (100% модальных масс).

Рис. 1 иллюстрирует тот факт, что для получения достоверной сейсмической реакции сооружения необходимо удерживать такое количество собственных форм, чтобы обеспечить высокий процент модальных масс (не менее 80%). При этом, разумеется, расчетная модель должна достаточно достоверно описывать поведение системы.

Таким образом, сумма модальных масс в сейсмическом анализе используется как индикатор достаточного количества удерживаемых форм колебаний.

При решении ряда задач было обнаружено, что суммы модальных масс сходятся крайне неравномерно и очень медленно [2]. При работе с расчетными моделями, содержащими большое количество степеней свободы (несколько сот тысяч), возникает серьезная проблема определения большого количества частот и форм собственных колебаний (порядка нескольких тысяч), представляющая собой сложную вычислительную задачу.

В этой работе представлен один из методов решения — блочный метод Ланцоша со сдвигами, реализованный автором в программном комплексе SCAD.

Блочный метод Ланцоша со сдвигами

В основу этой статьи положена работа Р. Граймса, Дж. Льюиса и Г. Саймона «A shifted block Lanczos algorithm for solving sparse symmetric generalized eigenproblems» [7]. Алгоритм данной реализации метода приведен в [4], а ее внедрение в программный комплекс SCAD представлено в [1]. Отметим, что блочная версия алгоритма позволяет сократить медленные операции ввода-вывода по сравнению с классической (неблочной) версией. Введение сдвигов существенно улучшает сходимость, а в случае определения большого количества собственных пар разделяет длинный частотный интервал на относительно короткие подинтервалы, ограничивая тем самым размерность пространства Крылова и заменяя экспоненциальный рост количества вычислений квазилинейным. Если исходная задача на собственные значения представляется как
(3)

, где K, M — соответственно положительно определенная разреженная матрица жесткости и полуопределенная матрица масс, {λ, ψ} — собственная пара. Вводя сдвиги σ12,…,σk, разбиваем этот частотный интервал на к+1 подинтервалов, на каждом из которых решаем задачу

(4)

где Kσ = K — σkM, λk = 1 ⁄ (ω2 — σk).

Таким образом, на каждом частотном подинтервале решается отдельная задача (4). Алгоритм выглядит так: при отсутствии какой-либо информации о спектре собственных частот полагаем σ1 = 0. Затем выполняем L шагов блочного метода Ланцоша и определяем сошедшиеся собственные пары. Далее анализируется сумма модальных масс для сошедшихся собственных пар. Если хотя бы по одному из направлений сейсмического входа сумма модальных масс меньше указанной, осуществляется переход к новому частотному интервалу. Кроме сошедшихся собственных пар имеются приближения собственных частот, которые еще не сошлись. Именно они используются для прогнозирования нового значения параметра сдвига σ2. Приняв сдвиг на основе такого прогноза, продолжаем вычисления на новом частотном интервале до тех пор, пока не определим все собственные числа, лежащие слева от сдвига и справа от последнего собственного числа, соответствующего сошедшейся собственной паре с предыдущего частотного интервала. Затем снова определяем суммы модальных масс. И так до тех пор, пока не будет достигнута достаточная сумма модальных масс.

Пример расчета

На рис. 2 приведена расчетная модель здания, включающая 8937 узлов, 9073 конечных элементов и 52 572 уравнения.


Рис. 2. Расчетная модель здания

Рис. 2. Расчетная модель здания

По количеству уравнений эта задача на сегодняшний день относится к классу средних, однако по сложности решения обобщенной проблемы собственных значений она очень трудна, так как вследствие значительной жесткости несущих конструкций в нижней части спектра расположены локальные формы колебаний (рис. 3, 4), и только форма колебаний, соответствующая 522-й частоте (рис. 5), существенно влияет на сейсмическую реакцию сооружения (m522ox = 29%, тогда как
).


Рис. 3. Первая форма колебаний, частота 4,183 Гц

Рис. 3. Первая форма колебаний, частота 4,183 Гц


Рис. 4. Четвертая форма колебаний, частота 4,365 Гц

Рис. 4. Четвертая форма колебаний, частота 4,365 Гц

Наибольший вклад дает 523-я форма колебаний, представленная на рис. 5.


Рис. 5. 523-я форма колебаний, частота 5,756 Гц

Рис. 5. 523-я форма колебаний, частота 5,756 Гц

Для обеспечения требуемых сумм модальных масс пришлось определить 2398 собственных пар.


Спектр собственных частот для этой задачи очень густой — в интервале [4.183, 5.756] Гц лежит 523 собственных частоты.
Зависимость сумм модальных масс от количества удерживаемых собственных форм приведена на рис. 6.


Рис. 6. Зависимость сумм модальных масс (Mx, My, Mz) от количества удерживаемых собственных форм

Рис. 6. Зависимость сумм модальных масс (Mx, My, Mz) от количества удерживаемых собственных форм

Выводы

При расчетах зданий и сооружений на сейсмику периодически встречаются задачи, в которых в нижней части спектра лежит большое количество локальных форм колебаний, причем спектр собственных частот является очень густым. Такие задачи создают серьезные проблемы, поскольку вычислительные алгоритмы, реализованные в современных компьютерных системах МКЭ-анализа, как правило, в таких случаях оказываются малоэффективными. Разработанный в программном комплексе SCAD алгоритм блочного метода Ланцоша со сдвигами, реализующий сейсмический режим, позволяет значительно продвинуться в решении этой проблемы.

Литература

  1. Карпиловский В.С., Криксунов Э.З., Фиалко С.Ю. Блочный метод Ланцоша со спектральными трансформациями для решения больших МКЭ задач собственных колебаний. — Вісник Одеського національного морського університету. — 2003, № 10, с. 93−99.
  2. Перельмутер А.В., Карпиловский В.С., Фиалко С.Ю., Егупов К.В. Опыт реализации проекта МСН СНГ «Строительство в сейсмических районах» в программной системе SCAD. — Вісник Одеської державної академії будівництва та архітектури. — 2003, випуск 9, с. 147−159.
  3. Фиалко С.Ю. Некоторые особенности анализа частот и форм собственных колебаний при расчете сооружений на сейсмические воздействия. — Вісник Одеської державної академії будівництва та архітектури. — 2002, випуск 8, с. 193−201.
  4. Фиалко С.Ю. О решении обобщенной проблемы собственных значений. — В кн. Перельмутер А.В., Сливкер В.И. Расчетные модели сооружений и возможность их анализа. — Издание второе. К.: Сталь, 2002, с. 570−597.
  5. Clough R., Penzien J. Dynamics of structures. — New York: McGraw-Hill, Inc., 1975. — 527 p.
  6. Fialko S.Yu., Kriksunov E.Z. and Karpilovskyy V.S. A block Lanczos method with spectral transformations for natural vibrations and seismic analysis of large structures in SCAD software. Proceedings of the CMM-2003 — Computer Methods in Mechanics, June 3−6, 2003. Gliwice, Poland, р. 129−130.
  7. Grimes R.G., Lewis J.G., Simon H.D. A shifted block Lanczos algorithm for solving sparse symmetric generalized eigenproblems. SIAM J. Matrix Anal. Appl. V. 15, 1: pp. 1−45, 1994.
  8. Wilson E.L. Three dimensional dynamic analysis of structures. California, Computers and Structures, Inc., Berkeley, USA, 1996. — 261 p.

Сергей Фиалко

д.т.н., с.н.с., проф.

Киевский национальный университет

строительства и архитектуры

Алгоритм Ланцоша — это прямой алгоритм, поиск Корнелиусом Ланцошем, который является адаптацией методов мощности для нахождения m { displaystyle m}m«наиболее полезных» (стремящихся к экстремально высоким / наименьшим) собственных имеющихся и собственных матрицы n × n { displaystyle n times n}п  раз п эрмитовой матрицы, где m { displaystyle m}mчасто, но не обязательно намного меньше, чем n { displaystyle n}n . В принципе вычислительно эффективный метод, в его первоначальной формулировке не был полезен из-за его числовой нестабильности.

В 1970 году Ойалво и Ньюман показали, как сделать метод численно устойчивым, и применили его к решению очень больших инженерных задач. конструкции, подверженные динамическому нагружению. Это было достигнуто с использованием метода очистки векторов Ланцоша (т.е. путем многократной реортогонализации каждого вновь сгенерированного объекта с помощью всех ранее сгенерированных) с любой степенью точности, которая, если не выполнялась, давала серию векторов, которые были сильно загрязнены теми, которые связаны с самыми низкими собственными частотами.

В своей первоначальной работе эти авторы также предложили, как выбрать начальный вектор (т. Е. Использовать генератор случайных чисел для выбора каждого элемента начального события), и предложили эмпирический метод определения m { displaystyle m }m, уменьшенное количество векторов (то есть должно быть выбрано примерно в 1,5 раза больше желаемого точного количества собственных значений). Вскоре после их работы последовала Пейдж, которая также представила анализ ошибок. В 1988 году Оялво представил более подробную историю этого алгоритма и эффективный тест на ошибку значений.

Содержание

  • 1 Алгоритм
    • 1.1 Применение к задаче собственных значений
    • 1.2 Применение к тридиагонализации
  • 2 Вывод алгоритм
    • 2.1 Более предусмотрительный степенной метод
    • 2.2 Одновременная аппроксимация крайних собственных значений
  • 3 Сходимость и другая динамика
    • 3.1 Теория сходимости Каниэля — Пейджа
  • 4 Числовая устойчивость
  • 5 Вариации
    • 5.1 Пустое пространство над конечным полем
  • 6 Приложения
  • 7 Реализации
  • 8 Примечания
  • 9 Ссылки
  • 10 Дополнительная литература

Алгоритм

Вход a Эрмитов матрица A { displaystyle A}A размера n × n { displaystyle n times n}п  раз п и, необязательно, количество итераций m { displaystyle m}m(по умолчанию пусть m = n { displaystyle m = n}m = n ).
Вывод an n × m { displaystyle n times m}п  умножить на м матрица V { displaystyle V}V с ортонормированными столбцами и трехдиагональной действительной симметричной матрицей T = V ∗ AV { displaystyle T = V ^ {*} AV}{ displaystyle T = V ^ {*} AV} размером m × m { displaystyle м раз м}m  раз m . Если m = n { displaystyle m = n}m = n , то V { displaystyle V}V является унитарным и A = VTV ∗ { displaystyle A = VTV ^ {*}}{ displaystyle A = VTV ^ {*}} .
Предупреждение Итерация Ланцоша подвержена числовой нестабильности. При выполнении неточной арифметики необходимо выполнить дополнительные меры (как в следующих разделах) для достоверности результатов.

  1. Пусть v 1 ∈ C n { displaystyle v_ {1} in mathbb {C} ^ {n}}{ displaystyle v_ {1}  in  mathbb {C} ^ {n}} — произвольный вектор с евклидовой нормой. 1 { displaystyle 1}1 .
  2. Сокращенный шаг начальной итерации:
    1. Пусть w 1 ′ = A v 1 { displaystyle w_ {1} ‘= Av_ {1} }{displaystyle w_{1}'=Av_{1}}.
    2. Пусть α 1 = вес 1 ′ ∗ v 1 { displaystyle alpha _ {1} = w_ {1} ‘^ {*} v_ {1}}{displaystyle alpha _{1}=w_{1}'^{*}v_{1}}.
    3. w 1 знак равно w 1 ′ — α 1 v 1 { displaystyle w_ {1} = w_ {1} ‘- alpha _ {1} v_ {1}}{displaystyle w_{1}=w_{1}'-alpha _{1}v_{1}}.
  3. Для j = 2,…, m { displaystyle j = 2, dots, m}{ displ aystyle j = 2,  точки, m} do:
    1. Пусть β j = ‖ wj — 1 ‖ { displaystyle beta _ {j} = | w_ {j-1} |}{ displaystyle  beta _ {j} =  | w_ {j-1}  |} (также Евклидова норма ).
    2. Если β j ≠ 0 { displaystyle beta _ {j} neq 0}{ displaystyle  бета _ {j}  neq 0} , тогда пусть vj = wj — 1 / β j { displaystyle v_ {j} = w_ {j-1} / beta _ {j}}{ displaystyle v_ {j} = w_ {j-1} /  beta _ {j}} ,
      иначе выберет как vj { displaystyle v_ {j}}v_ {j} произвольный вектор с евклидовой нормой 1 { displaystyle 1}1 , который ортогонален всем v 1,…, vj — 1 { displaystyle v_ {1}, dots, v_ {j-1}}{  displaystyle v_ {1},  dots, v_ {j-1}} .
    3. Пусть wj ′ = A vj { disp laystyle w_ {j} ‘= Av_ {j}}{displaystyle w_{j}'=Av_{j}}.
    4. Пусть α j = wj ′ ∗ vj { displaystyle alpha _ {j} = w_ {j} ‘^ {*} v_ {j}}{displaystyle alpha _{j}=w_{j}'^{*}v_{j}}.
    5. Пусть wj = wj ′ — α jvj — β jvj — 1 { displaystyle w_ {j} = w_ {j} ‘- alpha _ {j} v_ {j} — beta _ {j} v_ {j-1}}{displaystyle w_{j}=w_{j}'-alpha _{j}v_{j}-beta _{j}v_{j-1}}.
  4. Пусть V { displaystyle V}V будет матрицей со столбцами v 1,…, vm { displaystyle v_ {1}, dots, v_ {m}}{ displaystyle v_ {1},  dots, v_ {m}} . Пусть T = (α 1 β 2 0 β 2 α 2 β 3 β 3 α 3 ⋱ ⋱ ⋱ β м — 1 β м — 1 α м — 1 β м 0 β м α м) { displaystyle T = { begin {pmatrix} alpha _ {1} beta _ {2} 0 \ beta _ {2} alpha _ {2} beta _ {3} \ beta _ {3} alpha _ {3 } ddots \ ddots ddots beta _ {m-1} \ beta _ {m-1} alpha _ {m-1} beta _ {m} \ 0 beta _ {m} alpha _ {m} \ end {pmatrix}}}{ displaystyle T = { begin {pmatrix}  alpha _ {1}  beta _ {2} 0 \ beta _ {2}  alpha _ {2}  beta _ {3} \  beta _ {3}  alpha _ {3}  ddots \  ddots  ddots  beta _ {m-1} \  beta _ {m-1}  alpha _ {m-1}  beta _ {m} \ 0  beta _ {m}  alpha _ {m} \ end {pmatrix }}} .
ПримечаниеA vj = wj ′ = β j + 1 vj + 1 + α jvj + β jvj — 1 { displaystyle Av_ {j} = w_ {j} ‘= beta _ {j + 1} v_ {j + 1} + alpha _ {j} v_ {j} + beta _ {j} v_ {j-1}}{displaystyle Av_{j}=w_{j}'=beta _{j+1}v_{j+1}+alpha _{j}v_{j}+beta _{j}v_{j-1}}для 1 < j < m {displaystyle 1{ displaystyle 1 <j <m} .

В принципе существует четыре способа написать итерационные полномочия. Пейдж и другие работы показывают, что приведенный выше порядок наиболее устойчиво устойчивым. На практике начальный вектор v 1 { displaystyle v_ {1}}v_ {1} может быть взят как другой аргумент процедуры с β j = 0 { displaystyle beta _ {j} = 0}{ displaystyle  beta _ {j} = 0 } и индикаторы числовой неточности включены в качестве дополнительных условий завершения цикла.

Не считая умножения матрицы на вектор, каждая итерация действия O (n) { displaystyle O (n)}O (n) арифметических операций. Умножение матрицы на вектор может быть выполнено в O (dn) { displaystyle O (dn)}{ displaystyle O (dn)} арифметических операциях, где d { displaystyle d}d— это среднее количество ненулевых элементов в строке. Таким образом, общая сложность составляет O (dmn) { displaystyle O (dmn)}{ displaystyle O ( dmn)} или O (dn 2) { displaystyle O (dn ^ {2})}{ displaystyle O (dn ^ {2})} если m = n { displaystyle m = n}m = n ; алгоритм Ланцоша может быть очень быстрым для разреженных матриц. Схемы для улучшения числовой стабильности обычно оцениваются по этой высокой производительности.

Векторы v j { displaystyle v_ {j}}v_ {j} называются явлениями Ланцоша. Вектор wj ′ { displaystyle w_ {j} ‘}{displaystyle w_{j}'}не используется после вычислений wj { displaystyle w_ {j}}w_ {j} , а вектор wj { displaystyle w_ {j}}w_ {j} не используется после вычислений vj + 1 { displaystyle v_ {j + 1}}{ displaystyle v_ {j + 1}} . Следовательно, можно использовать одно и то же хранилище для всех трех. Аналогичным образом, если ищется только трехдиагональная матрица T { displaystyle T}T , тогда исходная итерация не требует vj — 1 { displaystyle v_ {j-1}}{ displaystyle v_ {j -1}} после вычислений wj { displaystyle w_ {j}}w_ {j} , хотя для некоторых схем повышения числовой стабильности это позже. Иногда последующие пересадки Ланцоша при необходимости читаются из v 1 { displaystyle v_ {1}}v_ {1} .

Применение к задаче собственных значений

Алгоритм Ланцоша чаще всего используется в контексте поиска собственные значения и собственных векторов матрицы, но в то время как обычная диагонализация матрицы сделала бы трех проверенные конструкции и собственные значения очевидными прике, это не верно для выполняемой алгоритмом Ланцоша; Для вычисления даже одного собственного значения или вектора необходимы нетривиальные дополнительные шаги. Тем не менее, применение алгоритма Ланцоша часто является значительным шагом вперед в вычислении собственного разложения. Если λ { displaystyle lambda} lambda является собственным значением A { displaystyle A}A , и если T x = λ x { displaystyle Tx = lambda x}{ displaystyle Tx =  lambda x} (x { displaystyle x}x затем является собственным вектором T { displaystyle T}T ), y = V x { displaystyle y = Vx}{ displaystyle y = Vx} — собственный собственный вектор A { displaystyle A}A (поскольку A y = AV x = VTV ∗ V x = VTI x Знак равно VT Икс = В (λ Икс) = λ В Икс = λ Y { Displaystyle Ay = AVx = VTV ^ {*} Vx = VTIx = VTx = V ( lambda x) = lambda Vx = lambda y}{ displaystyle Ay = AVx = VTV ^ {*} Vx = VTIx = VTx = V ( lambda x) =  lambda Vx =  lambda y} ). Таким образом, алгоритм Ланцоша преобразует проблему собственного разложения для A { displaystyle A}A в задачу собственного разложения для T { displaystyle T}T .

  1. Для трехдиагональных матриц существует ряд специализированных алгоритмов, часто с большей вычислительной сложностью, чем алгоритмы общего назначения. Например, если T { displaystyle T}T представляет собой трехдиагональную симметричную матрицу m × m { displaystyle m times m}m  раз m , тогда:
  2. Известно, некоторые общие алгоритмы разложения на собственные числа, в частности, QR-алгоритм, сход быстрее для трехдиагональных матриц, чем для обычных матриц. Асимптотическая сложность трехдиагонального QR составляет O (m 2) { displaystyle O (m ^ {2})}{ displaystyle O (m ^ {2})} , как и для алгоритма «разделяй и властвуй» (хотя постоянный множитель может быть другим.) ; так как собственные конструкции вместе имеют m 2 { displaystyle m ^ {2}}m ^ {2} элементов, это асимптотически оптимально.
  3. Даже алгоритмы, скорость сходимости которых не зависит от унитарных преобразователей, таких как метод мощности и обратная итерация, может иметь преимущества на низком уровне производительности от применения к трехдиагональной матрице T { displaystyle T}T чем скорее исходная матрица A { displaystyle A}A . Время T { displaystyle T}T очень разрежен, все ненулевые элементы находятся в хорошо предсказуемых позициях, обеспечивает компактное хранение с превосходной производительностью по сравнению с кэшированием. Аналогично, T { displaystyle T}T — это вещественная матрица со всеми собственными объектами и собственными значениями действительными, тогда как A { displaystyle A}A как правило, может иметь сложные элементы и существующие, поэтому достаточно вещественной арифметики для собственных векторов и собственных значений T { displaystyle T}T .
  4. Если n { displaystyle n}n равно очень большой, то уменьшение m { displaystyle m}mтак, чтобы T { displaystyle T}T имел управляемый размер, все равно позволит найти более экстремальные собственные значения и конструктивные элементы A { displaystyle A}A ; в области m ≪ n { displaystyle m ll n}{ displaystyle m  ll n} алгоритм Ланцоша можно рассматривать как схему сжатие с потерянными для эрмитовых матриц, которая подчеркивает сохранение крайних собственных значений.

Сочетание хорошей производительности для разреженных матриц и способности вычислять несколько (без всех вычислений) значений собственных показателей использования алгоритма Ланцоша.

Применение к трехдиагонализации

Хотя проблема собственных значений часто является мотивацией для применения алгоритма Ланцоша, операция, которая в первую очередь выполняет алгоритм, представляет собой трехдиагонализацию матрицы, для которой численно стабильны преобразования Хаусхолдера Популярностью с 1950-х годов. В 60-е годы алгоритм Ланцоша не принимался во внимание. Интерес к нему был возрожден теорией конвергенции Каниэля — Пейджа и разработала методы предотвращения числовой нестабильности, но алгоритм Ланцоша является альтернативным алгоритмом, который можно пробовать только в том случае, если Хаусхолдер не удовлетворителен.

два алгоритма различаются: использует

  • Ланцош то, что A { displaystyle A}A является разреженным матрицей, тогда как Хаусхолдер этого не делает, и генерирует заполнение.
  • Ланцоша работает с исходной матрицей A { displaystyle A}A (и не имеет проблем с тем, что она известна только неявно), тогда как необработанный Хаусхолдер хочет изменить матрицу во время вычислений (хотя это может быть
  • Каждая итера алгоритма Ланцоша создает другой столбец матрицы окончательного преобразования V { displaystyle V}V , тогда итерация Хаусхолдера еще один множитель в унитарной факторизации Q 1 Q 2… Q n { displaystyle Q_ {1} Q_ {2} dots Q_ {n}}{  displaystyle Q_ {1} Q_ {2}  dots Q_ {n}} из V { displaystyle V}V . Однако каждый фактор определяется одним вектором, поэтому требования к памяти одинаковы для обоих алгоритмов, и V = Q 1 Q 2… Q n { displaystyle V = Q_ {1} Q_ {2} dots Q_ {n}}{ displaystyle V = Q_ {1} Q_ { 2}  точки Q_ {n}} можно вычислить в O (n 3) { displaystyle O (n ^ {3})}O (n ^ {3}) time.
  • Домохозяин — это численно стабильный, тогда как исходный Ланцош — нет.
  • Ланцош очень параллелен, только с O (n) { displaystyle O (n)}O (n) точками синхронизации (вычисления α j { displaystyle alpha _ {j}} alpha _ {j} и β j { displaystyle beta _ {j}} beta _ {j} ). Хаусхолдер менее параллелен, поскольку имеет последовательность O (n 2) { displaystyle O (n ^ {2})}O (n ^ {2}) вычисленных скалярных величин, каждая из которых зависит от предыдущей величины в последовательности.

Вывод алгоритма

Есть несколько аргументов, которые приводят к алгоритму Ланцоша.

Более предусмотрительный метод мощности

Метод мощности для нахождения собственного значения наибольшей величины и соответствующей матрицы матрицы A { displaystyle A}A является примерно

  1. Выберите случайный вектор u 1 ≠ 0 { displaystyle u_ {1} neq 0}{ displaystyle u_ {1}  neq 0} .
  2. для j ⩾ 1 { displaystyle j geqslant 1}{ displaystyle j  geqslant 1} (пока направление uj { displaystyle u_ {j}}u_ {j} не сойдется) do:
    1. Пусть uj + 1 ′ = A uj. { displaystyle u_ {j + 1} ‘= Au_ {j}.}{displaystyle u_{j+1}'=Au_{j}.}
    2. Пусть u j + 1 = u j + 1 ′ / ‖ u j + 1 ′ ‖. { displaystyle u_ {j + 1} = u_ {j + 1} ‘/ | u_ {j + 1} ‘ |.}{displaystyle u_{j+1}=u_{j+1}'/|u_{j+1}'|.}

Этот метод может быть подвергнут критике за его расточительность: он тратит много работы (произведение матрица-вектор на шаге 2.1), извлекая информация из матрицы A { displaystyle A}A , но обращает внимание только на самый последний результат; обычно используют одну и ту же переменную для всех векторов u j { displaystyle u_ {j}}u_ {j} , при этом новая итерация перезаписывает результаты предыдущей. Что, если вместо этого мы сохраним все промежуточные результаты и систематизируем их данные?

Одна часть информации, которая тривиально доступна из векторов u j { displaystyle u_ {j}}u_ {j} , представляет собой цепочку подпространств Крылова. Один из способов заявить, что без введения наборов в алгоритме — заявить, что он вычисляет

подмножество {vj} j = 1 m { displaystyle {v_ {j} } _ {j = 1} ^ { m}}{ displaystyle  {v_ {j} } _ {j = 1} ^ {m}} основы C n { displaystyle mathbb {C} ^ {n}}{ displaystyle  mathbb {C} ^ {n}} такой, что A x ∈ span ⁡ (v 1,…, vj + 1) { displaystyle Ax in operatorname {span} (v_ {1}, dotsc, v_ {j + 1})}{ displaystyle Ax  in  operatorname { span} (v_ {1},  dotsc, v_ {j + 1})} для каждого x ∈ span ⁡ (v 1,…, vj) { displaystyle x in operatorname {span} (v_ {1}, dotsc, v_ {j})}{ displaystyle x  in  operatorname { span} (v_ {1},  dotsc, v_ {j})} и все 1 ⩽ j < m ; {displaystyle 1leqslant j{ displaystyle 1  leqslant j <m;}

это тривиально удовлетворяется vj = uj { displaystyle v_ {j} = u_ {j}}{ displaystyle v_ {j} = u_ {j}} до тех пор, пока uj { displaystyle u_ {j}}u_ {j} линейно не зависит от u 1,…, uj — 1 { displaystyle u_ {1}, dotsc, u_ {j-1}}{  displaystyle u_ {1},  dotsc, u_ {j-1}} (и в случае такой зависимости, то можно продолжить последовательность, выбрав в качестве vj { displaystyle v_ {j}}v_ {j} произвольный вектор, линейно независимый от u 1,…, uj — 1 { displaystyle u_ {1}, dotsc, u_ {j-1}}{  displaystyle u_ {1},  dotsc, u_ {j-1}} ). Однако базис быстро обусловлен uj { displaystyle u_ {j}}u_ {j} , скорее всего, будет численно плохо обусловлен, поскольку эта последовательность векторов по замыслу обеспечивает схождения в собственном векторе А { displaystyle A}A . Чтобы избежать этого, можно комбинировать степенную итерацию с процессом Грама — Шмидта, чтобы вместо этого получить ортонормированный базис этих подпространств Крылова.

  1. Выберите случайный вектор u 1 { displaystyle u_ {1}}u_ {1} евклидовой нормы 1 { displaystyle 1}1 . Пусть v 1 = u 1 { displaystyle v_ {1} = u_ {1}}{ displaystyle v_ {1} = u_ {1}} .
  2. для j = 1,…, m — 1 { displaystyle j = 1, dotsc, m- 1}{ displaystyle j = 1,  dotsc, m-1} do:
    1. Пусть uj + 1 ′ = A uj { displaystyle u_ {j + 1} ‘= Au_ {j}}{displaystyle u_{j+1}'=Au_{j}}.
    2. Для всех к = 1,…, j { displaystyle k = 1, dotsc, j}{ displaystyle k = 1,  dotsc, j} пусть gk, j = vk ∗ uj + 1 ′ { displaystyle g_ {k, j} = v_ {k} ^ {*} u_ {j + 1} ‘}{displaystyle g_{k,j}=v_{k}^{*}u_{j+1}'}. (Это координаты A uj = uj + 1 ′ { displaystyle Au_ {j} = u_ {j + 1} ‘}{displaystyle Au_{j}=u_{j+1}'}относительно базисных векторов v 1,…, Vj { displaystyle v_ {1}, dotsc, v_ {j}}{ displaystyle v_ {1},  dotsc, v_ {j}} .)
    3. Пусть wj + 1 = uj + 1 ′ — ∑ k = 1 jgk, jvk { displaystyle w_ {j + 1} = u_ {j + 1} ‘- sum _ {k = 1} ^ {j} g_ {k, j} v_ {k}}{displaystyle w_{j+1}=u_{j+1}'-sum _{k=1}^{j}g_{k,j}v_{k}}. (Отменить компонент uj + 1 ′ { displaystyle u_ {j + 1} ‘}{displaystyle u_{j+1}'}, который находится в span ⁡ (v 1,…, vj) { displaystyle operatorname {span} (v_ {1}, dotsc, v_ {j}) }{ displaystyle  operatorname {span} (v_ {1},  dotsc, v_ {j})} .)
    4. Если wj + 1 ≠ 0 { displaystyle w_ {j + 1} neq 0}{  displaystyle w_ {j + 1}  neq 0} , тогда пусть uj + 1 = uj + 1 ′ / ‖ uj + 1 ′ ‖ { displaystyle u_ {j + 1} = u_ {j + 1} ‘/ | u_ {j + 1}’ |}{displaystyle u_{j+1}=u_{j+1}'/|u_{j+1}'|}и vj + 1 = wj + 1 / ‖ Wj + 1 ‖ { displaystyle v_ {j + 1} = w_ {j + 1} / | w_ {j + 1} |}{ displaystyle v_ {j + 1} = w_ {j + 1} /  | w_ {j + 1}  |} ,
      в случае опасности uj + 1 = vj + 1 { displaystyle u_ {j + 1} = v_ {j + 1}}{ displaystyle u_ {j + 1} = v_ {j + 1}} произвольный вектор евклидовой нормы 1 { displaystyle 1}1 который ортогонал ен всем из v 1,…, vj { displaystyle v_ {1}, dotsc, v_ {j}}{ displaystyle v_ {1},  dotsc, v_ {j}} .

соотношение между вектором степенных итераций uj { displaystyle u_ {j}}u_ {j} и ортогон векторами vj { displaystyle v_ {j}}v_ {j} таково, что

A uj знак равно ‖ uj + 1 ′ ‖ uj + 1 = uj + 1 ′ = wj + 1 + ∑ К знак равно 1 jgk, jvk = ‖ wj + 1 ‖ vj + 1 + ∑ k = 1 jgk, jvk { displaystyle Au_ {j} = | u_ {j + 1} ‘ | u_ {j + 1} = u_ {j + 1} ‘= w_ {j + 1} + sum _ {k = 1} ^ {j} g_ {k, j} v_ {k} = | w_ {j + 1} | v_ {j + 1} + sum _ {k = 1} ^ {j} g_ {k, j} v_ {k}}{displaystyle Au_{j}=|u_{j+1}'|u_{j+1}=u_{j+1}'=w_{j+1}+sum _{k=1}^{j}g_{k,j}v_{k}=|w_{j+1}|v_{j+1}+sum _{k=1}^{j}g_{k,j}v_{k}}.

Здесь можно заметить, что нам на самом деле не нужна конструкция uj { displaystyle u_ {j}}u_ {j} для вычислений этих vj { displaystyle v_ {j}}v_ {j} , потому что uj — vj ∈ span ⁡ (v 1,…, vj — 1) { displaystyle u_ {j} -v_ {j} in operatorname {span} (v_ {1}, dotsc, v_ {j-1})}{ displaystyle u_ {j} -v_ {j}  in  operatorname {span} (v_ {1},  dotsc, v_ {j-1})} и, следовательно, разница между uj + 1 ′ = A uj { displaystyle u_ {j + 1} ‘= Au_ {j}}{displaystyle u_{j+1}'=Au_{j}}и wj + 1 ′ = A vj { displaystyle w_ {j + 1} ‘= Av_ {j}}{displaystyle w_{j+1}'=Av_{j}}находится в <358 диапазоне ⁡ (v 1,…, Vj) { displaystyle operatorname {span} (v_ {1}, dotsc, v_ {j})}{ displaystyle  operatorname {span} (v_ {1},  dotsc, v_ {j})} , который отменяется процесс ортогонализации. Таким образом, тот же самый базис для цепочки подпространств Крылова вычисляется с помощью

  1. Выбрать случайный вектор v 1 { displaystyle v_ {1}}v_ {1} евклидовой нормы 1 { displaystyle 1}1 .
  2. Для j = 1,…, m — 1 { displaystyle j = 1, dotsc, m-1}{ displaystyle j = 1,  dotsc, m-1} do:
    1. Пусть wj + 1 ′ = A vj { displaystyle w_ {j + 1} ‘= Av_ {j}}{displaystyle w_{j+1}'=Av_{j}}.
    2. Для всех k = 1,…, j { displaystyle k = 1, dotsc, j}{ displaystyle k = 1,  dotsc, j} пусть hk, j = vk ∗ wj + 1 ′ { displaystyle h_ {k, j} = v_ {k} ^ {*} w_ {j + 1} ‘}{displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}.
    3. Пусть wj + 1 = wj + 1 ′ — ∑ К = 1 jhk, jvk { displaystyle w_ {j + 1} = w_ {j + 1} ‘- sum _ {k = 1} ^ {j} h_ {k, j} v_ {k}}{displaystyle w_{j+1}=w_{j+1}'-sum _{k=1}^{j}h_{k,j}v_{k}}.
    4. Пусть hj + 1, j = ‖ wj + 1 ‖ { displaystyle h_ {j + 1, j} = | w_ {j + 1} |}{ displaystyle h_ {j + 1, j} =  | w_ {j + 1}  |} .
    5. Если hj + 1, j ≠ 0 { displaystyle h_ {j + 1, j} neq 0}{  displaystyle h_ {j + 1, j}  neq 0} , тогда пусть vj + 1 = wj + 1 / hj + 1, j { displaystyle v_ {j + 1} = w_ {j + 1} / h_ {j + 1, j}}{ displaystyle v_ {j + 1} = w_ {j + 1} / h_ {j + 1, j}} ,
      в противном случае получить как vj + 1 { displaystyle v_ {j + 1}}{ displaystyle v_ {j + 1}} произвольный вектор евклидовой нормы 1 { displaystyle 1}1 , который ортогонален всем из v 1,…, vj { displaystyle v_ {1}, dotsc, v_ {j}}{ displaystyle v_ {1},  dotsc, v_ {j}} .

Априори коэффициенты hk, j { displaystyle h_ {k, j}}{ displaystyle h_ {k, j}} удовлетворяет

A vj знак равно ∑ К знак равно 1 j + 1 hk, jvk { displaystyle Av_ {j} = sum _ {k = 1} ^ {j + 1} h_ {k, j} v_ {k}}{ displaystyle Av_ {j} =  sum _ {k = 1} ^ {j + 1} h_ {k, j} v_ {k}} для всех j < m {displaystyle j{ displaystyle j <m } ;

определение hj + 1, j = ‖ wj + 1 ‖ { displaystyle h_ {j + 1, j} = | w_ {j + 1} |}{ displaystyle h_ {j + 1, j} =  | w_ {j + 1}  |} может показаться немного странным, но соответствует общему шаблону hk, j = vk ∗ wj + 1 ′ { displaystyle h_ {k, j} = v_ {k } ^ {*} w_ {j + 1} ‘}{displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}, поскольку

vj + 1 ∗ wj + 1 ′ = vj + 1 ∗ wj + 1 = ‖ wj + 1 ‖ vj + 1 ∗ vj + 1 = ‖ Wj + 1 ‖. { Displaystyle v_ {j + 1} ^ {*} w_ {j + 1} ‘= v_ {j + 1} ^ {*} w_ {j + 1} = | w_ {j + 1} | v_ {j + 1} ^ {*} v_ {j + 1} = | w_ {j + 1} |.}{displaystyle v_{j+1}^{*}w_{j+1}'=v_{j+1}^{*}w_{j+1}=|w_{j+1}|v_{j+1}^{*}v_{j+1}=|w_{j+1}|.}

Технических степенных итераций uj { displaystyle u_ {j}}u_ {j} , которые были исключены из этой рекурсии, удовлетворяют uj ∈ span ⁡ (v 1,…, vj), { displaystyle u_ {j} in operatorname {span} (v_ {1}, ldots, v_ {j}),}{ displaystyle u_ {j}  in  operatorname {span} (v_ {1},  ldots, v_ {j}),} векторы {vj} j = 1 m { displaystyle {v_ {j} } _ {j = 1} ^ {m}}{ displaystyle  {v_ {j} } _ {j = 1} ^ {m}} и коэффициенты hk, j { displaystyle h_ {k, j}}{ displaystyle h_ {k, j}} содержат достаточно информации из A { displaystyle A}A , что все из u 1,…, um { displaystyle u_ {1}, ldots, u_ {m}}u_ {1},  ldots, u_ {m} можно вычислить, поэтому при переключении векторов ничего не потеряно. (Действительно, оказывается, что собранные здесь данные дают значительно лучшее приближение к наибольшему собственному значению, чем получается при равном количестве итераций в степенном методе, хотя на данном этапе это не обязательно очевидно.)

Эта последняя процедура является итерацией Арнольди. Алгоритм Ланцоша возникает как упрощение, которое можно получить за счет исключения этапов вычисления, которые оказываются тривиальными, когда A { displaystyle A}A эрмитово, в частности, большая часть hk, j Коэффициенты { displaystyle h_ {k, j}}{ displaystyle h_ {k, j}} оказываются равными нулю.

Элементарно, если A { displaystyle A}A эрмитово, то

hk, j = vk ∗ wj + 1 ′ = vk ∗ A vj = vk ∗ A ∗ vj = (A vk) ∗ vj. { displaystyle h_ {k, j} = v_ {k} ^ {*} w_ {j + 1} ‘= v_ {k} ^ {*} Av_ {j} = v_ {k} ^ {*} A ^ { *} v_ {j} = (Av_ {k}) ^ {*} v_ {j}.}{displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'=v_{k}^{*}Av_{j}=v_{k}^{*}A^{*}v_{j}=(Av_{k})^{*}v_{j}.}

Для k < j − 1 {displaystyle k{ displaystyle k <j-1} мы знаем, что A vk ∈ span ⁡ (v 1,…, vj — 1) { displaystyle Av_ {k} in operatorname {span} (v_ {1}, ldots, v_ {j-1})}{ displaystyle Av_ {k}  in  operatorname {span} (v_ {1},  ldots, v_ {j- 1})} , а поскольку vj { displaystyle v_ { j}}v_ {j} по построению ортогонален этому подпространству, это внутреннее произведение должно быть нулевым. (По сути, это также причина того, почему последовательностям ортогональных многочленов всегда можно задать трехчленное рекуррентное соотношение.) Для k = j — 1 { displaystyle k = j-1}{ displaystyle к = j-1} получается

hj — 1, j = (A vj — 1) ∗ vj = vj ∗ A vj — 1 ¯ = hj, j — 1 ¯ = hj, j — 1 { displaystyle h_ {j -1, j} = (Av_ {j-1}) ^ {*} v_ {j} = { overline {v_ {j} ^ {*} Av_ {j-1}}} = { overline {h_ { j, j-1}}} = h_ {j, j-1}}{ displaystyle h_ {j-1, j} = (Av_ {j-1}) ^ {*} v_ {j} = { overline {v_ {j} ^ {*} Av_ {j-1 }}} = { overline {h_ {j, j- 1}}} = h_ {j, j-1}}

, поскольку последний является действительным, поскольку является нормой вектора. Для k = j { displaystyle k = j}{ displaystyle k = j} получается

hj, j = (A vj) ∗ vj = vj ∗ A vj ¯ = hj, j ¯, { displaystyle h_ {j, j} = (Av_ {j}) ^ {*} v_ {j} = { overline {v_ {j} ^ {*} Av_ {j}}} = { overline {h_ {j, j }}},}{ displaystyle h_ {j, j} = (Av_ {j}) ^ {* } v_ {j} = { overline {v_ {j} ^ {*} Av_ {j}}} = { overline {h_ {j, j}}},}

означает, что это тоже реально.

Более абстрактно, если V { displaystyle V}V представляет собой матрицу со столбцами v 1,…, vm { displaystyle v_ {1}, ldots, v_ {m}}{ displaystyle v_ {1},  ldot s, v_ {m}} , то числа hk, j { displaystyle h_ {k, j}}{ displaystyle h_ {k, j}} могут быть идентифицированы как элементы матрицы H = V ∗ AV { displaystyle H = V ^ {*} AV}{ displaystyle H = V ^ {*} AV} и hk, j = 0 { displaystyle h_ {k, j} = 0}{ displaystyle h_ {k, j} = 0} для к>j + 1; { displaystyle k>j + 1;}{displaystyle k>j + 1;} матрица H { displaystyle H}H является верхним Hessenberg. Поскольку

H ∗ = (V ∗ AV) * = V * A * V = V * AV = H { Displaystyle H ^ {*} = left (V ^ {*} AV right) ^ {*} = V ^ {*} A ^ {*} V = V ^ {*} AV = H}{ displaystyle H ^ {*} =  left (V ^ {*} AV  right) ^ {*} = V ^ {*} A ^ {*} V = V ^ {*} AV = H}

матрица H { displaystyle H}H эрмитова. Это означает, что H { displaystyle H}H также является нижним по Гессенбергу, поэтому на самом деле он должен быть трехдиагональным. Поскольку его главная диагональ является эрмитовой, ее главная диагональ действительна, а поскольку ее первая поддиагональ реальна по конструкции, то же самое верно и для ее первой наддиагонали. Следовательно, H { displaystyle H}H — это действительная симметричная матрица — матрица T { displaystyle T}T из спецификации алгоритма Ланцоша.

Одновременное приближение экстремальных значений собственные значения

Один из способов охарактеризовать собственные векторы эрмитова матрица A { displaystyle A}A — это как стационарные точки из частного отношения Рэлея

r (x) = x ∗ A xx ∗ x, x ∈ C n. { displaystyle r (x) = { frac {x ^ {*} Ax} {x ^ {*} x}}, qquad x in mathbb {C} ^ {n}.}{ displaystyle r (x) = { frac {x ^ {*} Ax} {x ^ {*} x }},  qquad x  in  mathbb {C} ^ {n}.}

В частности, наибольшее собственное значение λ max { displaystyle lambda _ { max}} lambda_  max — это глобальный максимум r { displaystyle r}r и наименьшее собственное значение λ min { displaystyle lambda _ { min}} lambda_  min — это глобальный минимум r { displaystyle r}r .

в подпространстве низкой размерности L { displaystyle { mathcal {L}}}{ mathcal {L}} из C n { displaystyle mathbb {C} ^ {n}}{ displaystyle  mathbb {C} ^ {n}} может оказаться возможным найти максимум x { displaystyle x}x и минимум y { displaystyle y}Y из r { displaystyle r}r . Повторяя это для возрастающей цепочки L 1 ⊂ L 2 ⊂ ⋯ { displaystyle { mathcal {L}} _ {1} subset { mathcal {L}} _ {2} subset cdots}{ displaystyle { mathcal {L}} _ {1}  subset { mathcal {L}} _ {2}  subset  cdots} производит две последовательности векторов: x 1, x 2,… { displaystyle x_ {1}, x_ {2}, ldots}x_1, x_2,  ldots и y 1, y 2,… { displaystyle y_ {1}, y_ {2}, dotsc}{ displaystyle y_ {1}, y_ {2},  dotsc} такие, что xj, yj ∈ L j { displaystyle x_ {j}, y_ {j} in { mathcal {L}} _ {j}}{ displaystyle x_ {j}, y_ {j}  in { mathcal {L}} _ {j}} и

r (x 1) ⩽ r (x 2) ⩽ ⋯ ⩽ λ max r (y 1) ⩾ r (y 2) ⩾ ⋯ ⩾ λ мин { Displaystyle { begin {align} r (x_ {1}) leqslant r (x_ {2}) leqslant cdots leqslant lambda _ { max} \ r (y_ {1 }) geqslant r (y_ {2}) geqslant cdots geqslant lambda _ { min} end {align}}}{ displaystyle { begin {align} r (x_ {1})  leqslant r (x_ {2})  leqslant  cdots  leqslant  lambda _ { max} \ r (y_ {1})  geqslant r (y_ {2})  geqslant  cdots  geqslant  lambda _ { min}  end {align}}}

Тогда возникает вопрос, как выбрать подпространства, чтобы эти последовательности сходились в оптимальная скорость.

Из xj { displaystyle x_ {j}}x_ {j} , оптимальное направление для поиска больших значений r { displaystyle r}r — это градиент ∇ r (xj) { displaystyle nabla r (x_ {j})}{ displaystyl е  набла г (x_ {j})} , а также от yj { displaystyle y_ {j}}y_ {j} оптимальным направлением поиска меньших значений r { displaystyle r}r является направление отрицательного градиента — ∇ r (yj) { displaystyle — nabla r (y_ {j})}{ displaystyle -  nabla r (y_ {j})} . В общем

∇ r (x) = 2 x ∗ x (A x — r (x) x) { displaystyle nabla r (x) = { frac {2} {x ^ {*} x}} (Ax-r (x) x)}{ displaystyle  nabla r (x) = { гидроразрыв {2} {x ^ {*} x}} (Ax-r (x) x)} ,

поэтому интересующие направления достаточно легко вычислить в матричной арифметике, но если кто-то хочет улучшить оба, xj { displaystyle x_ {j}}x_ {j} и yj { displaystyle y_ {j}}y_ {j} то есть два новых направления, которые следует учитывать: A xj { displaystyle Ax_ {j}}{ displaystyle Ax_ {j}} и A yj; { displaystyle Ay_ {j};}{ displaystyle Ay_ {j};} начиная с xj { displaystyle x_ {j}}x_ {j} и yj { displaystyle y_ {j}}y_ {j} могут быть линейно независимыми векторами (действительно, близкими к ортогональным), в общем случае нельзя ожидать A xj { displaystyle Ax_ {j}}{ displaystyle Ax_ {j}} и A yj { displaystyle Ay_ {j}}{ displaystyle Ay_ {j}} быть параллельным. Следовательно, необходимо ли увеличивать размер L j { displaystyle { mathcal {L}} _ {j}} mathcal {L} _j на 2 { displaystyle 2}2 на каждом шагу? Нет, если взять {L j} j = 1 m { displaystyle {{ mathcal {L}} _ {j} } _ {j = 1} ^ {m}}{ displaystyle  {{ mathcal {L}} _ {j} } _ {j = 1} ^ {m }} быть подпространствами Крылова, потому что тогда A z ∈ L j + 1 { displaystyle Az in { mathcal {L}} _ {j + 1}}{ displaystyle Az  in { mathcal {L}} _ { j + 1}} для всех z ∈ L j, { displaystyle z in { mathcal {L}} _ {j},}{ displaystyle z  in { mathcal {L}} _ {j},} таким образом, в частности, для обоих z = xj { displaystyle z = x_ {j}}{ displaystyle z = x_ {j}} и z = yj { displaystyle z = y_ {j}}{ displaystyle z = y_ {j}} .

Другими словами, мы можем начать с некоторого произвольного начального вектора x 1 = y 1, { displaystyle x_ {1} = y_ {1},}{ displaystyle x_ {1} = y_ {1},} построить векторные пространства

L j = span ⁡ (x 1, A x 1,…, A j — 1 x 1) { displaystyle { mathcal {L}} _ {j} = operatorname {span} (x_ {1}, Ax_ {1}, ldots, A ^ {j-1} x_ {1})}{ displaystyle { mathcal {L}} _ {j} =  operatorname {span} (x_ { 1}, Ax_ {1},  ldots, A ^ {j -1} x_ {1})}

и затем искать xj, yj ∈ L j { displaystyle x_ {j}, y_ {j} in { mathcal {L}} _ {j}}{ displaystyle x_ {j}, y_ {j}  in { mathcal {L}} _ {j}} такие, что

r (xj) = max z ∈ L jr (z) и r (yj) = min z ∈ L jr (z). { displaystyle r (x_ {j}) = max _ {z in { mathcal {L}} _ {j}} r (z) qquad { text {and}} qquad r (y_ {j }) = min _ {z in { mathcal {L}} _ {j}} r (z).}{ displaystyle r ( x_ {j}) =  max _ {z  in { mathcal {L}} _ {j}} r (z)  qquad { text {и}}  qquad r (y_ {j}) =  min _ {z  in { mathcal {L}} _ {j}} r (z).}

Поскольку j { displaystyle j}j th степень метод итерации uj { displaystyle u_ {j}}u_ {j} принадлежит L j, { displaystyle { mathcal {L}} _ {j},}{ displaystyle { mathcal {L}} _ {j},} из этого следует, что итерация для создания xj { displaystyle x_ {j}}x_ {j} и yj { displaystyle y_ {j}}y_ {j} не может сходиться медленнее, чем это метода мощности и достигнет большего, аппроксимируя оба крайних значения собственных значений. Для подзадачи оптимизации r { displaystyle r}r на некотором L j { displaystyle { mathcal {L}} _ {j}}{ displaystyle { mathcal {L}} _ {j}} он удобно иметь ортонормированный базис {v 1,…, vj} { displaystyle {v_ {1}, ldots, v_ {j} }}{ displaystyle  {v_ {1},  ldots, v_ {j} }} для этого векторного пространства. Таким образом, мы снова приходим к проблеме и проблеме такого базиса для поставляемого подпространств Крылова.

Сходимость и другая динамика

При анализе динамики алгоритма удобно брать собственные значения и собственные векторы A { displaystyle A}A как заданы, даже если они явно не известны пользователю. Чтобы зафиксировать обозначение, пусть λ 1 ⩾ λ 2 ⩾ ⋯ ⩾ λ n { displaystyle lambda _ {1} geqslant lambda _ {2} geqslant dotsb geqslant lambda _ {n}}{ displaystyle  lambda _ {1}  geqslant  lambda _ {2}  geqslant  dotsb  geqslant  lambda _ {n}} будет собственными значениями (все они известны, и поэтому их можно упорядочить), и пусть z 1,…, zn { displaystyle z_ {1}, dotsc, z_ {n}}{ displaystyle z_ {1},  dotsc, z_ {n}} быть ортонормированным набором собственных векторов такой, что A zk = λ kzk { displaystyle Az_ {k} = lambda _ {k} z_ {k}}{ displaystyle Az_ {k} =  lambda _ {k} z_ {k}} для всех k = 1,…, n { displaystyle k = 1, dotsc, n}{ displ aystyle k = 1,  dotsc, n} .

Также удобно зафиксировать обозначение для коэффициентов исходного вектора Ланцоша v 1 { displaystyle v_ {1 }}v_ {1} относительно этого собственного базиса; пусть dk = zk ∗ v 1 { displaystyle d_ {k} = z_ {k} ^ {*} v_ {1}}{ displaystyle d_ {k} = z_ {k} ^ {*} v_ {1}} для всех k = 1,…, n { displaystyle k = 1, dotsc, n}{ displ aystyle k = 1,  dotsc, n} , так что v 1 = ∑ k = 1 ndkzk { displaystyle textstyle v_ {1} = sum _ {k = 1} ^ {n} d_ {k} z_ {k}}{ displaystyle  textstyle v_ {1} =  sum _ {k = 1} ^ {n} d_ {k} z_ {k}} . Начальный вектор v 1 { displaystyle v_ {1}}v_ {1} , лишенный некоторого собственного значения, будет задерживать сходимость к соответствующему собственному значению, и даже несмотря на то, что это просто оказывается постоянным фактором в границах ошибки, истощение остается нежелательным. Один из распространенных методов, позволяющих избежать постоянного удара, — выбрать v 1 { displaystyle v_ {1}}v_ {1} , сначала отрисовав элементы случайным образом в соответствии с тем же нормальным распределением со средним значением 0 { displaystyle 0}{ displaystyle 0} , а затем масштабируйте вектор до нормы 1 { displaystyle 1}1 . Prior to the rescaling, this causes the coefficients d k {displaystyle d_{k}}d_{k}to also be independent normally distributed stochastic variables from the same normal distribution (since the change of coordinates is unitary), and after rescaling the vector ( d 1, …, d n) {displaystyle (d_{1},dotsc,d_{n})}{ displaystyle (d_ {1},  dotsc, d_ {n})} will have a uniform distribution on the unit sphere in C n {displaystyle mathbb {C} ^{n}} mathbb {C} ^ {n} . This makes it possible to bound the probability that for example | d 1 | < ε {displaystyle |d_{1}|<varepsilon }{ displaystyle | d_ {1} | < varepsilon} .

The fact that the Lanczos algorithm is coordinate-agnostic – operations only look at inner products of vectors, never at individual elements of vectors – makes it easy to construct examples with known eigenstructure to run the algorithm on: make A {displaystyle A}A a diagonal matrix with the desired eigenvalues on the diagonal; as long as the starting vector v 1 {displaystyle v_{1}}v_ {1} has enough nonzero elements, the algorithm will output a general tridiagonal symmetric матрица как T { displaystyle T}T .

Теория сходимости Каниэля – Пейдж

После m { displaystyle m}mитерационных шагов алгоритма Ланцоша, T { displaystyle T}T — это m × m { displaystyle m times m}m  раз m вещественная симметричная матрица, которая, как и в предыдущем случае, имеет m { displaystyle m}mсобственные значения θ 1 ⩾ θ 2 ⩾ ⋯ ⩾ θ m. { displaystyle theta _ {1} geqslant theta _ {2} geqslant dots geqslant theta _ {m}.}{ displaystyle  theta _ {1}  geqslant  theta _ {2}  geqslant  dots  geqslant  theta _ {m}.} Под конвергенцией в первую очередь понимается конвергенция θ 1 { displaystyle theta _ {1}} theta _ {1} до λ 1 { displaystyle lambda _ {1}} lambda _ {1} (и симметричная сходимость θ m { displaystyle theta _ {m}} theta _ {m} до λ n { displaystyle lambda _ {n}} lambda _ {n} ) как m { displaystyle m}mрастет, и, во-вторых, сходимость некоторого диапазона θ 1,…, θ k { displaystyle theta _ {1}, ldots, theta _ {k}}{ displaystyle  theta _ {1},  ldots,  theta _ { k}} собственные значения T { displaystyle T}T на их аналоги λ 1,…, λ k { displaystyle lambda _ {1}, ldots, lambda _ {k}}{ displaystyle  lambda _ {1},  ldots,  lambda _ {k}} из A { displaystyle A}A . Сходимость для алгоритма Ланцоша часто на порядки быстрее, чем для алгоритма степенной итерации.

Границы для θ 1 { displaystyle theta _ {1}} theta _ {1} исходят из приведенной выше интерпретации собственных значений как крайних значений коэффициента Рэлея r (x) { displaystyle r (x)}r (x) . Поскольку λ 1 { displaystyle lambda _ {1}} lambda _ {1} априори является максимумом r { displaystyle r}r на всем C n, { displaystyle mathbb {C} ^ {n},}{ displaystyle  mathbb {C} ^ {n},} , тогда как θ 1 { displaystyle theta _ {1}} theta _ {1} — это просто максимум на an m { displaystyle m}m-мерное подпространство Крылова, мы тривиально получаем λ 1 ⩾ θ 1 { displaystyle lambda _ {1} geqslant theta _ {1}}{ displaystyle  lambda _ {1}  geqslant  theta _ {1}} . И наоборот, любая точка x { displaystyle x}x в этом подпространстве Крылова обеспечивает нижнюю границу r (x) { displaystyle r (x)}r (x) для θ 1 { displaystyle theta _ {1}} theta _ {1} , поэтому, если можно выставить точку, для которой λ 1 — r (x) { displaystyle lambda _ {1} — r (x)}{ displaystyle  lambda _ {1} -r (x)} мало, тогда это обеспечивает жесткую границу θ 1 { displaystyle theta _ {1}} theta _ {1} .

Размер m { displaystyle m}mПодпространство Крылова — это

span ⁡ {v 1, A v 1, A 2 v 1,…, A m — 1 v 1}, { displayst yle operatorname {span} left {v_ {1}, Av_ {1}, A ^ {2} v_ {1}, ldots, A ^ {m-1} v_ {1} right },}{ displaystyle  operatorname {span}  влево  {v_ {1}, Av_ {1}, A ^ {2} v_ {1},  ldots, A ^ {m-1} v_ {1}  right },}

, поэтому любой его элемент может быть выражен как p (A) v 1 { displaystyle p (A) v_ {1}}{ displaystyle p (A) v_ {1}} для некоторого полинома p { displaystyle p}p степени не более м — 1 { displaystyle m-1}m-1 ; коэффициенты этого многочлена — это просто коэффициенты в линейной комбинации векторов v 1, A v 1, A 2 v 1,…, A m — 1 v 1 { displaystyle v_ {1}, Av_ {1}, A ^ { 2} v_ {1}, ldots, A ^ {m-1} v_ {1}}{ displaystyle v_ {1}, Av_ {1}, A ^ {2} v_ {1},  ldots, A ^ {m-1} v_ {1}} . У желаемого многочлена обеспечивают действующие коэффициенты, но на данный момент мы должны учитывать комплексные коэффициенты, и мы напишем p ∗ { displaystyle p ^ {*}}p ^ {*} для многочлен, полученный комплексным сопряжением всех коэффициентов п { displaystyle p}p . В этом параметре подпространства Крылова имеет

r (p (A) v 1) = (p (A) v 1) ∗ A p (A) v 1 (p (A) v 1) ∗ p (A) v 1 = v 1 ∗ p (A) ∗ A p (A) v 1 v 1 ∗ p (A) ∗ p (A) v 1 = v 1 ∗ p ∗ (A ∗) A p (A) v 1 v 1 ∗ p * (A *) p (A) v 1 знак равно v 1 * p * (A) A p (A) v 1 v 1 * p * (A) p (A) v 1 { displaystyle r (p ( A) v_ {1}) = { frac {(p (A) v_ {1}) ^ {*} Ap (A) v_ {1}} {(p (A) v_ {1}) ^ {*} p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p (A) ^ {*} Ap (A) v_ {1}} {v_ {1} ^ {*} p (A) ^ {*} p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p ^ {*} (A ^ {*}) Ap (A) v_ {1} } {v_ {1} ^ {*} p ^ {*} (A ^ {*}) p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p ^ {*} (A) Ap (A) v_ {1}} {v_ {1} ^ {*} p ^ {*} (A) p (A) v_ {1}}}}{ displaystyle r (p (A) v_ {1}) = { frac { (p (A) v_ {1}) ^ {*} Ap (A) v_ {1}} {(p (A) v_ {1}) ^ {*} p (A) v_ {1}}} = {  frac {v_ {1} ^ {*} p (A) ^ {*} Ap (A) v_ {1}} {v_ {1} ^ {*} p (A) ^ {*} p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p ^ {*} (A ^ {*}) Ap (A) v_ {1}} {v_ {1} ^ {*} p ^ {*} (A ^ {*}) p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p ^ {*} (A) Ap (A) v_ {1}} {v_ {1} ^ {*} p ^ {*} (A) p (A) v_ {1}}}}

Используя теперь выражение для v 1 { displaystyle v_ {1}}v_ {1} как линейной комбинации собственных векторов мы получаем

A v 1 = A ∑ k = 1 ndkzk = ∑ k = 1 ndk λ kzk { displaystyle Av_ {1 } = A sum _ {k = 1} ^ {n} d_ {k} z_ {k} = sum _ {k = 1} ^ {n} d_ {k} lambda _ {k} z_ { k}}{ displaystyle Av_ {1} = A  sum _ {k = 1} ^ {n} d_ {k} z_ {k} =  sum _ {k = 1} ^ {n} d_ { k}  lambda _ {k} z_ {k}}

и в более общем плане

q (A) v 1 = ∑ k = 1 ndkq (λ k) zk { displaystyle q (A) v_ {1} = sum _ {k = 1 } ^ {n} d_ {k} q ( lambda _ {k}) z_ {k}}{ displaystyle q (A) v_ {1} =  sum _ {k = 1} ^ {n} d_ {k} q ( lambda _ {k}) z_ {k}}

для любого полинома q { displaystyle q}q .

Таким образом,

λ 1 — r (p (A) v 1) = λ 1 — v 1 ∗ ∑ k = 1 ndkp ∗ (λ k) λ kp (λ k) zkv 1 ∗ ∑ k = 1 ndkp ∗ (λ k) p (λ k) zk = λ 1 — ∑ k = 1 n | d k | 2 λ k p (λ k) ∗ p (λ k) ∑ k = 1 n | d k | 2 p (λ k) ∗ p (λ k) = ∑ k = 1 n | d k | 2 (λ 1 — λ k) | p (λ k) | 2 ∑ k = 1 n | d k | 2 | p (λ k) | 2. { displaystyle lambda _ {1} -r (p (A) v_ {1}) = lambda _ {1} — { frac {v_ {1} ^ {*} sum _ {k = 1 } ^ {n} d_ {k} p ^ {*} ( lambda _ {k}) lambda _ {k} p ( lambda _ {k}) z_ {k}} {v_ {1} ^ {* } сумма _ {k = 1} ^ {n} d_ {k} p ^ {*} ( lambda _ {k}) p ( lambda _ {k}) z_ {k}}} = lambda _ { 1} — { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} lambda _ {k} p ( lambda _ {k}) ^ {*} p ( lambda _ {k})} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} p ( lambda _ {k}) ^ {*} p ( lambda _ {k})}} = { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} — lambda _ {k}) left | p ( lambda _ {k}) right | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} left | p ( lambda _ {k}) right | ^ {2}}}.}{ displaystyle  lambda _ {1} -r (p (A) v_ {1}) =  lambda _ {1} - { frac {v_ {1} ^ {*}  sum _ {k = 1} ^ {n} d_ {k} p ^ {*} ( lambda _ {k})  лямбда _ {k} p ( lambda _ {k}) z_ {k}} {v_ {1} ^ {*}  sum _ {k = 1} ^ {n} d_ {k} p ^ {*} (  lambda _ {k}) p ( lambda _ {k}) z_ {k}}} =  lambda _ {1} - { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2}  lambda _ {k} p ( lambda _ {k}) ^ {*} p ( lambda _ {k})} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} p ( lambda _ {k}) ^ {*} p ( lambda _ {k})}} = { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k})  left | p ( lambda _ {k})  right | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2}  left | p ( lambda _ {k})  right | ^ {2}}}.}

Ключевое различие между числителем и знаменателем в том, что член k = 1 { displaystyle k = 1}k = 1 в числителе исчезает, но не в знаменателе. Таким образом, если можно выбрать p { displaystyle p}p большим на λ 1 { displaystyle lambda _ {1}} lambda _ {1} , но маленьким на всех остальных собственных значений, мы получим жесткую границу ошибки λ 1 — θ 1 { displaystyle lambda _ {1} — theta _ {1}}{ displaystyle  lambda _ {1} -  theta _ {1}} .

Бук A { displaystyle A}A имеет намного больше значений, чем p { displaystyle p}p имеет коэффициенты, это может показаться сложным требованием, но один из способов удовлетворить это — использовать полиномы Чебышева. Запись ck { displaystyle c_ {k}}c_ {k} для степени k { displaystyle k}k полином Чебышева первого рода (который удовлетворяет ck (соз ⁡ х) = соз ⁡ (kx) { displaystyle c_ {k} ( cos x) = cos (kx)}{ displaystyle c_ {k} ( cos x) =  cos (kx)} для всех x { displaystyle x}x ), у нас естьчлен, который находится в диапазоне [- 1, 1] { displaystyle [-1,1]}[-1,1] на известном интервале [- 1, 1] { displaystyle [-1,1]}[-1,1] , но быстро растет за его пределами. При некотором масштабировании аргумента мы можем показать все собственные значения, кроме λ 1 { displaystyle lambda _ {1}} lambda _ {1} в [- 1, 1] { displaystyle [-1, 1]}[-1,1] . Пусть

p (x) = см — 1 (2 x — λ 2 — λ n λ 2 — λ n) { displaystyle p (x) = c_ {m-1} left ({ frac {2x- lambda _ {2} — lambda _ {n}} { lambda _ {2} — lambda _ {n}}} right)}{ displaystyle p (x) = c_ {m-1}  left ({ frac {2x-  lambda _ {2 } -  lambda _ {n}} { lambda _ {2} -  lambda _ {n}}}  right)}

(в случае λ 2 = λ 1 { displaystyle lambda _ {2} = lambda _ {1}}{ displaystyle  lambda _ {2} =  lambda _ {1}} , використовуйте вместо этого наибольшее собственное значение строго меньше, чем λ 1 { displaystyle lambda _ {1}} lambda _ {1} ), то максимальное значение | p (λ k) | 2 { displaystyle | p ( lambda _ {k}) | ^ {2}}{ displaystyle | p ( lambda _ {k}) | ^ {2}} для k ⩾ 2 { displaystyle k geqslant 2}{ displaystyle k  geqslant 2} равно 1 { displaystyle 1}1 и минимальное = равно 0 { displaystyle 0}{ displaystyle 0} , поэтому

λ 1 — θ 1 ⩽ λ 1 — r (p (A) v 1) = ∑ k = 2 n | d k | 2 (λ 1 — λ k) | p (λ k) | 2 ∑ k = 1 n | d k | 2 | p (λ k) | 2 ⩽ ∑ k = 2 n | d k | 2 (λ 1 — λ k) | d 1 | 2 | p (λ 1) | 2 ⩽ (λ 1 — λ n) ∑ k = 2 n | d k | 2 | p (λ 1) | 2 | d 1 | 2. { displaystyle lambda _ {1} — theta _ {1} leqslant lambda _ {1} -r (p (A) v_ {1}) = { frac { sum _ {k = 2 } ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} — lambda _ {k}) | p ( lambda _ {k}) | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} | p ( lambda _ {k}) | ^ {2}}} leqslant { frac { sum _ {k = 2} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} — lambda _ {k})} {| d_ {1} | ^ {2} | p ( lambda _ {1}) | ^ {2}}} leqslant { frac {( lambda _ {1} — lambda _ {n}) sum _ {k = 2} ^ {n} | d_ {k} | ^ {2}} {| p ( lambda _ {1}) | ^ {2} | d_ {1} | ^ {2}}}.}{ displaystyle  lambda _ {1} -  theta _ {1}  leqslant  lambda _ {1} -r (p (A) v_ {1}) = { frac { sum _ {k = 2} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k}) | p ( lambda _ {k}) | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} | p ( lambda _ {k}) | ^ {2}}}  leqslant { frac { sum _ {k = 2} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k})} {| d_ {1} | ^ {2} | p ( lambda _ {1}) | ^ {2}}}  leqslant { frac {( lambda _ {1} -  lambda _ {n})  sum _ {k = 2} ^ {n} | d_ {k} | ^ {2}} {| p ( lambda _ {1}) | ^ {2} | d_ {1} | ^ {2}}}.}

Кроме того,

p (λ 1) = см — 1 (2 λ 1 — λ 2 — λ n λ 2 — λ n) = см — 1 (2 λ 1 — λ 2 λ 2 — λ n + 1); { displaystyle p ( lambda _ {1}) = c_ {m-1} left ({ frac {2 lambda _ {1} — lambda _ {2} — lambda _ {n}} { lambda _ {2} — lambda _ {n}}} right) = c_ {m-1} left (2 { frac { lambda _ {1} — lambda _ {2}} { lambda _ {2} — lambda _ {n}}} + 1 right);}{ displaystyle p ( lambda _ {1}) = c_ {m-1}  left ({ frac {2  lambda _ {1} -  lambda _ { 2} -  lambda _ {n}} { lambda _ {2} -  lambda _ {n}}}  right) = c_ {m-1}  left (2 { frac { lambda _ {1} -  lambda _ {2}} { lambda _ {2} -  lambda _ {n}}} + 1  right);}

величина

ρ = λ 1 — λ 2 λ 2 — λ n { displaystyle rho = { frac { lambda _ {1} — lambda _ {2}} { lambda _ {2} — lambda _ {n}}}}{ displaystyle  rho = { frac { lambda _ {1} -  lam bda _ {2}} { lambda _ {2} -  lambda _ {n}}}}

(т. Е. Отношение первой собственной щели к диаметру остальной части тип ), таким образом, имеет значение для скорости сходимости здесь. Также пишем

R = e arcosh ⁡ (1 + 2 ρ) = 1 + 2 ρ + 2 ρ 2 + ρ, { displaystyle R = e ^ { operatorname {arcosh} (1 + 2 rho)} = 1 + 2 rho +2 { sqrt { rho ^ {2} + rho}},}{ displaystyle R = e ^ { operatorname { arcosh} (1 + 2  rho)} = 1 + 2  rho +2 { sqrt { rho ^ {2} +  rho}},}

мы можем заключить, что

λ 1 — θ 1 ⩽ (λ 1 — λ n) (1 — | d 1 | 2) см — 1 (2 ρ + 1) 2 | d 1 | 2 = 1 — | d 1 | 2 | d 1 | 2 (λ 1 — λ n) 1 ch 2 ⁡ ((m — 1) arcosh ⁡ (1 + 2 ρ)) = 1 — | d 1 | 2 | d 1 | 2 (λ 1 — λ n) 4 (R m — 1 + R — (m — 1)) 2 ⩽ 4 1 — | d 1 | 2 | d 1 | 2 (λ 1 — λ N) р — 2 (м — 1) { displaystyle { begin {выровнено} lambda _ {1} — theta _ {1} leqslant { frac {( lambda _ { 1} — lambda _ {n}) left (1- | d_ {1} | ^ {2} right)} {c_ {m-1} (2 rho +1) ^ {2} | d_ {1} | ^ {2}}} \ [6pt] = { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} — lambda _ {n}) { frac {1} { cosh ^ {2} ((m-1) operatorname {arcosh} (1 + 2 rho))}} \ [6pt] = { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} — lambda _ {n}) { frac {4} { left (R ^ {m-1} + R ^ {- (m-1)} справа) ^ {2}}} \ [6pt] leqslant 4 { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} — lambda _ {n}) R ^ {- 2 (m-1)} end {align}}}{ displaystyle { begin {align}  lam bda _ {1} -  theta _ {1}  leqslant { frac {( lambda _ {1} -  lambda _ {n})  left (1- | d_ {1} | ^ {2}  справа)} {c_ {m -1} (2  rho +1) ^ {2} | d_ {1} | ^ {2}}} \ [6pt] = { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) { frac {1} { cosh ^ {2} ((m-1)  operatorname {arcosh} (1 + 2  rho))}} \ [6pt] = { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) { frac {4} { left (R ^ {m-1} + R ^ {- (m-1)}  справа) ^ {2}}} \ [6pt]  leqslant 4 { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) R ^ {- 2 (m-1)}  end {align}}}

Таким образом, скорость сходимости контролируется главным образом R { displaystyle R}R , так как эта граница уменьшается в R — 2 { displaystyle R ^ {- 2}}{ displaystyle R ^ {- 2}} для каждой дополнительной итерации.

Для сравнения можно рассмотреть, как скорость сходимости степенного метода зависит от ρ { displaystyle rho} rho , но поскольку степенной метод в первую очередь чувствителен к частному между модулями собственных значений нам нужно | λ n | ⩽ | λ 2 | { displaystyle | lambda _ {n} | leqslant | lambda _ {2} |}{ displaystyle |  lambda _ {n} |  leqslant |  lambda _ {2} |} для собственного промежутка между λ 1 { displaystyle lambda _ {1}} lambda _ {1} и λ 2 { displaystyle lambda _ {2}} lambda _ {2} , чтобы быть доминирующим. При этом ограничении наиболее благоприятного для степенного метода является случай λ n = — λ 2 { displaystyle lambda _ {n} = — lambda _ {2}}{ displaystyle  lambda _ {n} = -  lambda _ {2}} , поэтому рассмотрим что. В конце метода мощности вектор итерации:

u = (1 — t 2) 1/2 z 1 + tz 2 ≈ z 1 + tz 2, { displaystyle u = (1-t ^ {2}) ^ {1 / 2} z_ {1} + tz_ {2} приблизительно z_ {1} + tz_ {2},}{ displaystyle u = (1-t ^ {2}) ^ {1/2} z_ {1} + tz_ { 2}  приблизительно z_ {1} + tz_ {2},}

, каждая где новая итерация эффективно умножает z 2 { displaystyle z_ {2}}z_ {2} -амплитуда t { displaystyle t}t на

λ 2 λ 1 = λ 2 λ 2 + (λ 1 — λ 2) = 1 1 + λ 1 — λ 2 λ 2 знак равно 1 1 + 2 ρ. { displaystyle { frac { lambda _ {2}} { lambda _ {1}}} = { frac { lambda _ {2}} { lambda _ {2} + ( lambda _ {1} — lambda _ {2})}} = { frac {1} {1 + { frac { lambda _ {1} — lambda _ {2}} { lambda _ {2}}}}} = { frac {1} {1 + 2 rho}}.}{ displaystyle { frac { lambda _ {2}} { lambda _ {1}}} = { frac {  lambda _ {2}} { lambda _ {2} + ( lambda _ {1} -  lambda _ {2})}} = { frac {1} {1 + { frac { lambda _ { 1} -  lambda _ {2}} { lambda _ {2}}}}} = { frac {1} {1 + 2  rho}}.}

Тогда оценка наибольшего собственного значения будет

u ∗ A u = (1 — t 2) λ 1 + t 2 λ 2, { displaystyle u ^ {*} Au = (1-t ^ {2}) lambda _ {1} + t ^ {2} lambda _ {2},}{ displaystyle u ^ { *} Au = (1-t ^ {2})  lambda _ {1} + t ^ {2}  lambda _ {2},}

, поэтому указанная выше граница сходимости алгоритма Ланцоша скорость следует сравнить с

λ 1 — u ∗ A U знак равно (λ 1 — λ 2) t 2, { displaystyle lambda _ {1} -u ^ {*} Au = ( lambda _ {1} — lambda _ {2}) t ^ {2},}{ displaystyle  lambda _ {1} -u ^ {*} Au = ( lambda _ {1 } -  lambda _ {2}) t ^ {2},}

, который сжимается в (1 + 2 ρ) — 2 { displaystyle (1 + 2 rho) ^ {- 2}}{ displaystyle (1 + 2  rho) ^ {- 2}} для каждой итерации. Таким образом, разница сводится к разнице между 1 + 2 ρ { displaystyle 1 + 2 rho}{ displaystyle 1 + 2  rho} и R = 1 + 2 ρ + 2 ρ 2 + ρ { displaystyle R = 1 + 2 rho +2 { sqrt { rho ^ {2} + rho}}}{ displaystyle R = 1 + 2  rho +2 { sqrt { rho ^ {2} +  rho}}} . В области ρ ≫ 1 { displaystyle rho gg 1}{ displaystyle  rho  gg 1} последнее больше похоже на 1 + 4 ρ { displaystyle 1 + 4 rho}{ displaystyle 1 + 4  rho} и работает так же, как и силовой метод, с вдвое большей собственной щелью; заметное улучшение. Однако более сложным является случай ρ ≪ 1, { displaystyle rho ll 1,}{ displaystyle  rho  ll 1,} , в котором R ≈ 1 + 2 ρ { displaystyle R приблизительно 1+ 2 { sqrt { rho}}}{ displaystyle R  приблизительно 1 + 2 { sqrt { rho}}} — еще большее улучшение собственной щели; область ρ ≫ 1 { displaystyle rho gg 1}{ displaystyle  rho  gg 1} — это область, в которой алгоритм Ланцоша с точки зрения сходимости дает наименьшее улучшение по сравнению с методом мощности.

Числовая стабильность

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

Для алгоритма Ланцоша можно доказать, что с помощью точной арифметики векторов наборов v 1, v 2, ⋯, vm + 1 { displaystyle v_ {1}, v_ {2}, cdots, v_ {m + 1}}v_ {1}, v_ {2},  cdots, v _ {{m + 1}} строит ортонормированный базис, вычисленные собственные значения / основы хорошими приближениями к значениям исходной матрицы. Однако на практике (вычисления выполняются в арифметике с плавающей запятой, где неточность неизбежна) ортогональность быстро теряется, и в некоторых случаях новый вектор может даже линейно зависеть от уже построенного набора. В результате некоторых собственных значений результирующей трехдиагональной матрицы могут быть приближения к исходной матрице. Следовательно, алгоритм Ланцоша не очень стабилен.

Пользователи этого алгоритма должны иметь возможность находить и удалить эти «ложные» собственные значения. Практические алгоритмы реализации Ланцоша идут в трех направлениях для борьбы с этой проблемой стабильности:

  1. Предотвратить потерю ортогональности,
  2. Восстановить ортогональность после создания основы.
  3. После Все «ложные» собственные значения идентифицируют, ложные удаляются.

Варианты

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

Многие реализации алгоритма Ланцоша перезапускаются после определенного количества итераций. Одним из наиболее важных вариантов перезапуска является неявно перезапускаемый метод Ланцоша, который реализован в ARPACK. Это привело к ряду других перезапущенных вариаций, таких как перезапуск бидиагонализации Ланцоша. Другой успешный вариант с перезапуском — это метод Ланцоша с толстым перезапуском, который был реализован в программном пакете под названием TRLan.

Пустое пространство над конечным полем

В 1995 году Питер Монтгомери опубликовал алгоритм, основанный на алгоритме Ланцоша, для поиска элементов нулевого пространства большой разреженной матрицы над GF (2) ; как множество людей, интересующихся большими разреженными матрицами над конечными полями и множеством людей, интересующимися большими проблемами собственных значений, почти не пересекаются, это часто также называют блочным алгоритмом Ланцоша, не вызывая необоснованной путаницы.

Приложения

Алгоритмы Ланцоша очень привлекательны, потому что умножение на A { displaystyle A ,}A , является единственной крупномасштабной операцией. Временной алгоритм поиска текста с взвешенными терминами реализуют именно этот механизм, алгоритм Ланцоша может эффективно использовать текстовым документам (см. Скрытое семантическое индексирование ). Собственные рекомендации также важны для крупномасштабных методов ранжирования, таких как алгоритм HITS, примеры Джоном Клейнбергом, или алгоритм PageRank, инструмент Google.

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

Реализации

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

MATLAB и GNU Octave поставляются со встроенным ARPACK. Как сохраненные, так и неявные матрицы могут быть проанализированы с помощью функций eigs () (Matlab / Octave ).

Реализация алгоритма Ланцоша в Matlab (обратите внимание на проблемы с точностью) доступна как часть пакета Matlab для распространения веры по Гауссу. Библиотека совместной фильтрации GraphLab включает крупномасштабную параллельную реалима Ланцоша (на C ++) для многоядерных процессоров.

Библиотека PRIMME также реализует алгоритм типа Ланцоша.

Примечания

Ссылки

Дополнительная литература

  • Голуб, Джин Х. ; Ван Лоан, Чарльз Ф. (1996). «Методы Ланцоша». Матричные вычисления. Балтимор: Издательство Университета Джона Хопкинса. С. 470–507. ISBN 0-8018-5414-8.
  • Нг, Эндрю Ю. ; Чжэн, Алиса X.; Джордан, Майкл И. (2001). «Анализ связи, собственные основы и стабильность» (PDF). IJCAI’01 Труды 17-й международной совместной конференции по искусственному интеллекту. Том 2: 903–910.

В Алгоритм Ланцоша это прямой алгоритм разработан Корнелиус Ланцош это адаптация силовые методы найти м «самый полезный» (стремящийся к экстремально высокому / низкому) собственные значения и собственные векторы из п  раз п Эрмитова матрица, куда м часто, но не обязательно, намного меньше, чем п.[1] Несмотря на то, что в принципе вычислительно эффективный метод, изначально сформулированный метод не был полезен из-за его числовая нестабильность.

В 1970 году Оялво и Ньюман показали, как сделать метод численно устойчивым, и применили его к решению очень больших инженерных сооружений, подвергающихся динамической нагрузке.[2] Это было достигнуто с использованием метода очистки векторов Ланцоша (т.е. путем многократной реортогонализации каждого вновь созданного вектора с помощью все ранее созданные)[2] с любой степенью точности, которая, если ее не выполнять, давала серию векторов, которые были сильно загрязнены векторами, связанными с самыми низкими собственными частотами.

В своей первоначальной работе эти авторы также предложили, как выбрать начальный вектор (т.е. использовать генератор случайных чисел для выбора каждого элемента начального вектора), и предложили эмпирически определенный метод определения м— уменьшенное количество векторов (т.е. его следует выбирать примерно в 1,5 раза больше желаемого точного количества собственных значений). Вскоре после этого за их работой последовала Пейдж, которая также представила анализ ошибок.[3][4] В 1988 году Оялво представил более подробную историю этого алгоритма и эффективный тест на ошибку собственных значений.[5]

Алгоритм

Вход а Эрмитова матрица А размера п  раз п, и, возможно, несколько итераций м (по умолчанию пусть m = n).
Выход ан п  раз м матрица V с ортонормированный колонны и трехдиагональный вещественная симметричная матрица { displaystyle T = V ^ {*} AV} размера м  раз м. Если m = n, тогда V является унитарный, и { displaystyle A = VTV ^ {*}}.
Предупреждение Итерация Ланцоша подвержена численной нестабильности. При выполнении неточной арифметики необходимо принять дополнительные меры (как описано в следующих разделах) для обеспечения достоверности результатов.

  1. Позволять { displaystyle v_ {1}  in  mathbb {C} ^ {n}} — произвольный вектор с Евклидова норма 1.
  2. Сокращенный этап начальной итерации:
    1. Позволять { displaystyle w_ {1} '= Av_ {1}}.
    2. Позволять { displaystyle  alpha _ {1} = w_ {1} '^ {*} v_ {1}}.
    3. Позволять { displaystyle w_ {1} = w_ {1} '-  alpha _ {1} v_ {1}}.
  3. За { displaystyle j = 2,  dots, m} делать:
    1. Позволять { Displaystyle  бета _ {j} =  | w_ {j-1}  |} (также Евклидова норма ).
    2. Если { displaystyle  beta _ {j}  neq 0}, тогда пусть { displaystyle v_ {j} = w_ {j-1} /  beta _ {j}},
      иначе выберите как v_ {j} произвольный вектор с евклидовой нормой 1 что ортогонально всем { displaystyle v_ {1},  dots, v_ {j-1}}.
    3. Позволять { displaystyle w_ {j} '= Av_ {j}}.
    4. Позволять { displaystyle  alpha _ {j} = w_ {j} '^ {*} v_ {j}}.
    5. Позволять { displaystyle w_ {j} = w_ {j} '-  alpha _ {j} v_ {j} -  beta _ {j} v_ {j-1}}.
  4. Позволять V матрица со столбцами { displaystyle v_ {1},  dots, v_ {m}}. Позволять { displaystyle T = { begin {pmatrix}  alpha _ {1} &  beta _ {2} &&&& 0  beta _ {2} &  alpha _ {2} &  beta _ {3} &&&  &  beta _ {3} &  alpha _ {3} &  ddots &&  &&  ddots &  ddots &  beta _ {m-1} &  &&&  beta _ {m-1} &  alpha _ {m-1} &  beta _ {m}  0 &&&&  beta _ {m} &  alpha _ {m}  end {pmatrix}}}.
Примечание { displaystyle Av_ {j} = w_ {j} '=  beta _ {j + 1} v_ {j + 1} +  alpha _ {j} v_ {j} +  beta _ {j} v_ {j- 1}} за { displaystyle 1 <j <m}.

В принципе, существует четыре способа написать итерационную процедуру. Пейдж и другие работы показывают, что приведенный выше порядок операций является наиболее численно устойчивым.[6][7]На практике начальный вектор v_ {1} можно рассматривать как еще один аргумент процедуры, с { displaystyle  beta _ {j} = 0} и индикаторы числовой неточности, включенные в качестве дополнительных условий завершения цикла.

Не считая умножения матрицы на вектор, каждая итерация делает На) арифметические операции. Умножение матрицы на вектор может быть выполнено в { Displaystyle О (дн)} арифметические операции, где d — среднее количество ненулевых элементов в строке. Таким образом, общая сложность { displaystyle O (dmn)}, или же { Displaystyle О (дн ^ {2})} если m = n; алгоритм Ланцоша может быть очень быстрым для разреженных матриц. Схемы для улучшения числовой стабильности обычно оцениваются по этой высокой производительности.

Векторы v_ {j} называются Векторы Ланцоша. Вектор { displaystyle w_ {j} '} не используется после w_ {j} вычисляется, а вектор w_ {j} не используется после { displaystyle v_ {j + 1}} вычисляется. Следовательно, можно использовать одно и то же хранилище для всех трех. Точно так же, если только трехдиагональная матрица Т ищется, то сырая итерация не нужна { displaystyle v_ {j-1}} после вычисления w_ {j}, хотя некоторым схемам повышения численной устойчивости он понадобится в дальнейшем. Иногда последующие векторы Ланцоша пересчитываются из v_ {1} при необходимости.

Приложение к проблеме собственных значений

Алгоритм Ланцоша чаще всего упоминается в контексте поиска собственные значения и собственные векторы матрицы, но в то время как обычный диагонализация матрицы сделает собственные векторы и собственные значения очевидными при проверке, этого нельзя сказать о трехдиагонализации, выполняемой алгоритмом Ланцоша; Для вычисления даже одного собственного значения или собственного вектора необходимы нетривиальные дополнительные шаги. Тем не менее, применение алгоритма Ланцоша часто является значительным шагом вперед в вычислении собственного разложения. Если  lambda является собственным значением А, и если { displaystyle Tx =  lambda x} (Икс является собственным вектором Т) тогда { displaystyle y = Vx} — соответствующий собственный вектор А (поскольку { Displaystyle Ay = AVx = VTV ^ {*} Vx = VTIx = VTx = V ( lambda x) =  lambda Vx =  lambda y}). Таким образом, алгоритм Ланцоша преобразует задачу собственного разложения для А в задачу собственного разложения для Т.

  1. Для трехдиагональных матриц существует ряд специализированных алгоритмов, часто с большей вычислительной сложностью, чем алгоритмы общего назначения. Например, если Т является м  раз м трехдиагональная симметричная матрица, тогда:
  2. Некоторые общие алгоритмы разложения на собственные числа, в частности QR-алгоритм, как известно, сходятся быстрее для трехдиагональных матриц, чем для обычных матриц. Асимптотическая сложность трехдиагонального QR равна { Displaystyle О (м ^ {2})} точно так же, как для алгоритма «разделяй и властвуй» (хотя постоянный коэффициент может быть другим); так как собственные векторы вместе имеют м ^ {2} элементов, это асимптотически оптимально.
  3. Даже алгоритмы, скорость сходимости которых не зависит от унитарных преобразований, таких как силовой метод и обратная итерация, может обладать низкими преимуществами производительности от применения к трехдиагональной матрице Т а не исходная матрица А. С Т очень разреженный, со всеми ненулевыми элементами в хорошо предсказуемых положениях, он обеспечивает компактное хранение с отличной производительностью по сравнению с кеширование. Так же, Т это настоящий матрица со всеми собственными векторами и собственными значениями действительными, тогда как А в общем, может иметь комплексные элементы и собственные векторы, поэтому вещественной арифметики достаточно для нахождения собственных векторов и собственных значений Т.
  4. Если п очень большой, то уменьшение м так что Т имеет управляемый размер, но позволит находить наиболее экстремальные собственные значения и собственные векторы А; в { displaystyle m  ll n} области алгоритм Ланцоша можно рассматривать как сжатие с потерями схема для эрмитовых матриц, подчеркивающая сохранение крайних собственных значений.

Сочетание хорошей производительности для разреженных матриц и способности вычислять несколько (без вычисления всех) собственных значений являются основными причинами использования алгоритма Ланцоша.

Применение к тридиагонализации

Хотя проблема собственных значений часто является мотивацией для применения алгоритма Ланцоша, операция, которую в первую очередь выполняет алгоритм, — это трехдиагонализация матрицы, для которой численно стабильная Преобразования домовладельцев пользуются популярностью с 1950-х годов. В 60-е годы алгоритм Ланцоша не принимался во внимание. Интерес к нему был возрожден теорией сходимости Каниэля – Пейджа и развитием методов предотвращения числовой нестабильности, но алгоритм Ланцоша остается альтернативным алгоритмом, который можно пробовать только в том случае, если Хаусхолдер не удовлетворителен.[9]

Аспекты, в которых различаются два алгоритма, включают:

  • Ланцош пользуется А будучи разреженной матрицей, тогда как Хаусхолдер нет и будет генерировать заполните.
  • Ланцош полностью работает с исходной матрицей А (и не имеет проблем с тем, что он известен только неявно), тогда как необработанный Хаусхолдер хочет изменить матрицу во время вычисления (хотя этого можно избежать).
  • Каждая итерация алгоритма Ланцоша создает еще один столбец окончательной матрицы преобразования. V, тогда как итерация Хаусхолдера дает еще один фактор в унитарной факторизации { displaystyle Q_ {1} Q_ {2}  dots Q_ {n}} из V. Однако каждый фактор определяется одним вектором, поэтому требования к памяти одинаковы для обоих алгоритмов, и { displaystyle V = Q_ {1} Q_ {2}  dots Q_ {n}} можно вычислить в О (п ^ {3}) время.
  • Домохозяин численно стабилен, тогда как сырой Ланцош — нет.
  • Ланцош очень параллелен, только На) точки синхронизация (вычисления  alpha _ {j} и  beta _ {j}). Домохозяин менее параллелен, имея последовательность О (п ^ {2}) вычисляются скалярные величины, каждая из которых зависит от предыдущей величины в последовательности.

Вывод алгоритма

Есть несколько аргументов, которые приводят к алгоритму Ланцоша.

Более предусмотрительный метод силы

Степенной метод нахождения наибольшего собственного значения и соответствующего собственного вектора матрицы А примерно

  1. Выберите случайный вектор { displaystyle u_ {1}  neq 0}.
  2. За { displaystyle j  geqslant 1} (до направления u_ {j} сошлась) делать:
    1. Позволять { displaystyle u_ {j + 1} '= Au_ {j}.}
    2. Позволять { displaystyle u_ {j + 1} = u_ {j + 1} '/  | u_ {j + 1}'  |.}

Этот метод можно критиковать за то, что он расточителен: он тратит много работы (произведение матрица-вектор на шаге 2.1), извлекая информацию из матрицы. А, но обращает внимание только на самый последний результат; реализации обычно используют одну и ту же переменную для всех векторов u_ {j}, при котором каждая новая итерация перезаписывает результаты предыдущей. Что, если вместо этого мы сохраним все промежуточные результаты и систематизируем их данные?

Одна часть информации, которую легко получить из векторов u_ {j} это цепочка Крыловские подпространства. Один из способов заявить, что без введения наборов в алгоритм, — это заявить, что он вычисляет

подмножество { Displaystyle  {v_ {j} } _ {j = 1} ^ {m}} основы { displaystyle  mathbb {C} ^ {n}} такой, что { displaystyle Ax  in  operatorname {span} (v_ {1},  dotsc, v_ {j + 1})} для каждого { displaystyle x  in  operatorname {span} (v_ {1},  dotsc, v_ {j})} и все { Displaystyle 1  leqslant j <m;}

это тривиально удовлетворяется { displaystyle v_ {j} = u_ {j}} так долго как u_ {j} линейно не зависит от { displaystyle u_ {1},  dotsc, u_ {j-1}} (и в случае наличия такой зависимости можно продолжить последовательность, выбрав v_ {j} произвольный вектор, линейно независимый от { displaystyle u_ {1},  dotsc, u_ {j-1}}). Основа, содержащая u_ {j} векторы, однако, вероятно, будут численно плохо воспитанный, так как эта последовательность векторов по замыслу должна сходиться к собственному вектору А. Чтобы избежать этого, можно комбинировать итерацию мощности с Процесс Грама – Шмидта, чтобы вместо этого создать ортонормированный базис этих подпространств Крылова.

  1. Выберите случайный вектор u_ {1} евклидовой нормы 1. Позволять { displaystyle v_ {1} = u_ {1}}.
  2. За { Displaystyle J = 1,  dotsc, м-1} делать:
    1. Позволять { displaystyle u_ {j + 1} '= Au_ {j}}.
    2. Для всех { Displaystyle к = 1,  dotsc, j} позволять { displaystyle g_ {k, j} = v_ {k} ^ {*} u_ {j + 1} '}. (Это координаты { displaystyle Au_ {j} = u_ {j + 1} '} относительно базисных векторов { displaystyle v_ {1},  dotsc, v_ {j}}.)
    3. Позволять { displaystyle w_ {j + 1} = u_ {j + 1} '-  sum _ {k = 1} ^ {j} g_ {k, j} v_ {k}}. (Отменить компонент { displaystyle u_ {j + 1} '} это в { displaystyle  operatorname {span} (v_ {1},  dotsc, v_ {j})}.)
    4. Если { displaystyle w_ {j + 1}  neq 0} тогда пусть { displaystyle u_ {j + 1} = u_ {j + 1} '/  | u_ {j + 1}'  |} и { Displaystyle v_ {j + 1} = w_ {j + 1} /  | w_ {j + 1}  |},
      в противном случае выберите как { displaystyle u_ {j + 1} = v_ {j + 1}} произвольный вектор евклидовой нормы 1 что ортогонально всем { displaystyle v_ {1},  dotsc, v_ {j}}.

Связь между векторами степенных итераций u_ {j} и ортогональные векторы v_ {j} в том, что

{ Displaystyle Au_ {j} =  | u_ {j + 1} ' | u_ {j + 1} = u_ {j + 1}' = w_ {j + 1} +  sum _ {k = 1} ^ {j} g_ {k, j} v_ {k} =  | w_ {j + 1}  | v_ {j + 1} +  sum _ {k = 1} ^ {j} g_ {k, j} v_ {k}}.

Здесь можно заметить, что на самом деле нам не нужен u_ {j} векторов для вычисления этих v_ {j}, потому что { displaystyle u_ {j} -v_ {j}  in  operatorname {span} (v_ {1},  dotsc, v_ {j-1})} и поэтому разница между { displaystyle u_ {j + 1} '= Au_ {j}} и { displaystyle w_ {j + 1} '= Av_ {j}} в { displaystyle  operatorname {span} (v_ {1},  dotsc, v_ {j})}, который компенсируется процессом ортогонализации. Таким образом, тот же базис для цепочки подпространств Крылова вычисляется с помощью

  1. Выберите случайный вектор v_ {1} евклидовой нормы 1.
  2. За { Displaystyle J = 1,  dotsc, м-1} делать:
    1. Позволять { displaystyle w_ {j + 1} '= Av_ {j}}.
    2. Для всех { Displaystyle к = 1,  dotsc, j} позволять { displaystyle h_ {k, j} = v_ {k} ^ {*} w_ {j + 1} '}.
    3. Позволять { displaystyle w_ {j + 1} = w_ {j + 1} '-  sum _ {k = 1} ^ {j} h_ {k, j} v_ {k}}.
    4. Позволять { displaystyle h_ {j + 1, j} =  | w_ {j + 1}  |}.
    5. Если { displaystyle h_ {j + 1, j}  neq 0} тогда пусть { Displaystyle v_ {j + 1} = w_ {j + 1} / h_ {j + 1, j}},
      в противном случае выберите как { displaystyle v_ {j + 1}} произвольный вектор евклидовой нормы 1 что ортогонально всем { displaystyle v_ {1},  dotsc, v_ {j}}.

Априори коэффициенты { displaystyle h_ {k, j}} удовлетворить

{ displaystyle Av_ {j} =  sum _ {k = 1} ^ {j + 1} h_ {k, j} v_ {k}} для всех { displaystyle j <m};

Определение { displaystyle h_ {j + 1, j} =  | w_ {j + 1}  |} может показаться немного странным, но соответствует общей схеме { displaystyle h_ {k, j} = v_ {k} ^ {*} w_ {j + 1} '} поскольку

{ Displaystyle v_ {j + 1} ^ {*} w_ {j + 1} '= v_ {j + 1} ^ {*} w_ {j + 1} =  | w_ {j + 1}  | v_ { j + 1} ^ {*} v_ {j + 1} =  | w_ {j + 1}  |.}

Поскольку векторы степенной итерации u_ {j} которые были исключены из этой рекурсии, удовлетворяют { displaystyle u_ {j}  in  operatorname {span} (v_ {1},  ldots, v_ {j}),} векторы { Displaystyle  {v_ {j} } _ {j = 1} ^ {m}} и коэффициенты { displaystyle h_ {k, j}} содержать достаточно информации из А что все u_ {1},  ldots, u_ {m} можно вычислить, поэтому при переключении векторов ничего не потеряно. (Действительно, оказывается, что собранные здесь данные дают значительно лучшее приближение к наибольшему собственному значению, чем получается при равном количестве итераций в степенном методе, хотя на данный момент это не обязательно очевидно.)

Эта последняя процедура является Итерация Арнольди. Алгоритм Ланцоша возникает как упрощение, получаемое от исключения этапов вычислений, которые оказываются тривиальными, когда А является эрмитовым — в частности, большинство { displaystyle h_ {k, j}} коэффициенты оказываются равными нулю.

Элементарно, если А эрмитово тогда

{ displaystyle h_ {k, j} = v_ {k} ^ {*} w_ {j + 1} '= v_ {k} ^ {*} Av_ {j} = v_ {k} ^ {*} A ^ { *} v_ {j} = (Av_ {k}) ^ {*} v_ {j}.}

За { Displaystyle к <j-1} мы знаем это { displaystyle Av_ {k}  in  operatorname {span} (v_ {1},  ldots, v_ {j-1})}, и с тех пор v_ {j} по построению ортогонален этому подпространству, это внутреннее произведение должно быть нулевым. (По сути, это также причина того, почему последовательности ортогональных многочленов всегда могут быть заданы трехчленное рекуррентное соотношение.) За { Displaystyle к = j-1} один получает

{ displaystyle h_ {j-1, j} = (Av_ {j-1}) ^ {*} v_ {j} = { overline {v_ {j} ^ {*} Av_ {j-1}}} = { overline {h_ {j, j-1}}} = h_ {j, j-1}}

поскольку последний реален в силу того, что является нормой вектора. За { displaystyle k = j} один получает

{ displaystyle h_ {j, j} = (Av_ {j}) ^ {*} v_ {j} = { overline {v_ {j} ^ {*} Av_ {j}}} = { overline {h_ { j, j}}},}

это значит, что это тоже реально.

Более абстрактно, если V матрица со столбцами { displaystyle v_ {1},  ldots, v_ {m}} тогда числа { displaystyle h_ {k, j}} можно идентифицировать как элементы матрицы { displaystyle H = V ^ {*} AV}, и { displaystyle h_ {k, j} = 0} за { displaystyle k> j + 1;} матрица ЧАС является Верхний Гессенберг. С

{ displaystyle H ^ {*} =  left (V ^ {*} AV  right) ^ {*} = V ^ {*} A ^ {*} V = V ^ {*} AV = H}

матрица ЧАС эрмитово. Отсюда следует, что ЧАС также является более низким по Гессенбергу, поэтому на самом деле он должен быть трехъядерным. Поскольку его главная диагональ является эрмитовой, она действительна, и поскольку ее первая поддиагональ реальна по построению, то же самое верно и для ее первой наддиагонали. Следовательно, ЧАС — действительная симметричная матрица — матрица Т спецификации алгоритма Ланцоша.

Одновременное приближение крайних собственных значений

Один из способов характеризации собственных векторов эрмитовой матрицы А как есть стационарные точки из Фактор Рэлея

{ displaystyle r (x) = { frac {x ^ {*} Ax} {x ^ {*} x}},  qquad x  in  mathbb {C} ^ {n}.}

В частности, наибольшее собственное значение  lambda_  max это глобальный максимум р и наименьшее собственное значение  lambda_  min это глобальный минимум р.

В подпространстве малой размерности { mathcal {L}} из { displaystyle  mathbb {C} ^ {n}} возможно найти максимальное Икс и минимум у из р. Повторяя это для возрастающей цепочки { Displaystyle { mathcal {L}} _ {1}  subset { mathcal {L}} _ {2}  subset  cdots} производит две последовательности векторов: x_1, x_2,  ldots и { displaystyle y_ {1}, y_ {2},  dotsc} такой, что { displaystyle x_ {j}, y_ {j}  in { mathcal {L}} _ {j}} и

{ displaystyle { begin {align} r (x_ {1}) &  leqslant r (x_ {2})  leqslant  cdots  leqslant  lambda _ { max}  r (y_ {1}) &  geqslant r (y_ {2})  geqslant  cdots  geqslant  lambda _ { min}  end {выровнено}}}

Тогда возникает вопрос, как выбрать подпространства, чтобы эти последовательности сходились с оптимальной скоростью.

Из x_ {j}, оптимальное направление поиска больших значений р это то из градиент { Displaystyle  набла г (x_ {j})}, а также от y_ {j} оптимальное направление поиска меньших значений р это отрицательный градиент { displaystyle -  nabla r (y_ {j})}. В целом

{ Displaystyle  nabla r (x) = { frac {2} {x ^ {*} x}} (Ax-r (x) x)},

так что интересующие направления достаточно легко вычислить в матричной арифметике, но если кто-то хочет улучшить оба x_ {j} и y_ {j} Затем следует принять во внимание два новых направления: { displaystyle Ax_ {j}} и { displaystyle Ay_ {j};} поскольку x_ {j} и y_ {j} могут быть линейно независимыми векторами (действительно, близкими к ортогональным), в общем случае нельзя ожидать { displaystyle Ax_ {j}} и { displaystyle Ay_ {j}} быть параллельным. Следовательно, необходимо ли увеличивать размер  mathcal {L} _j к 2 на каждом шагу? Не если { Displaystyle  {{ mathcal {L}} _ {j} } _ {j = 1} ^ {m}} считаются подпространствами Крылова, потому что тогда { displaystyle Az  in { mathcal {L}} _ {j + 1}} для всех { displaystyle z  in { mathcal {L}} _ {j},} таким образом, в частности для обоих { displaystyle z = x_ {j}} и { displaystyle z = y_ {j}}.

Другими словами, мы можем начать с произвольного начального вектора { displaystyle x_ {1} = y_ {1},} построить векторные пространства

{ displaystyle { mathcal {L}} _ {j} =  operatorname {span} (x_ {1}, Ax_ {1},  ldots, A ^ {j-1} x_ {1})}

а затем искать { displaystyle x_ {j}, y_ {j}  in { mathcal {L}} _ {j}} такой, что

{ displaystyle r (x_ {j}) =  max _ {z  in { mathcal {L}} _ {j}} r (z)  qquad { text {and}}  qquad r (y_ {j }) =  min _ {z  in { mathcal {L}} _ {j}} r (z).}

Поскольку jth power метод итерации u_ {j} принадлежит { displaystyle { mathcal {L}} _ {j},} из этого следует, что итерация для получения x_ {j} и y_ {j} не может сходиться медленнее, чем в степенном методе, и добьется большего, аппроксимируя оба крайних значения собственных значений. Для подзадачи оптимизации р на некоторых { displaystyle { mathcal {L}} _ {j}}, удобно иметь ортонормированный базис { Displaystyle  {v_ {1},  ldots, v_ {j} }} для этого векторного пространства. Таким образом, мы снова приходим к проблеме итеративного вычисления такого базиса для последовательности подпространств Крылова.

Конвергенция и другая динамика

При анализе динамики алгоритма удобно брать собственные значения и собственные векторы А как указано, даже если они явно не известны пользователю. Чтобы зафиксировать обозначения, пусть { displaystyle  lambda _ {1}  geqslant  lambda _ {2}  geqslant  dotsb  geqslant  lambda _ {n}} быть собственными числами (все они, как известно, действительны и, следовательно, их можно упорядочить), и пусть { displaystyle z_ {1},  dotsc, z_ {n}} — ортонормированный набор собственных векторов таких, что { displaystyle Az_ {k} =  lambda _ {k} z_ {k}} для всех { Displaystyle к = 1,  dotsc, п}.

Также удобно зафиксировать обозначения для коэффициентов исходного вектора Ланцоша v_ {1} относительно этого собственного базиса; позволять { displaystyle d_ {k} = z_ {k} ^ {*} v_ {1}} для всех { Displaystyle к = 1,  dotsc, п}, так что { displaystyle  textstyle v_ {1} =  sum _ {k = 1} ^ {n} d_ {k} z_ {k}}. Начальный вектор v_ {1} исчерпание некоторого собственного значения приведет к задержке сходимости к соответствующему собственному значению, и даже несмотря на то, что это просто является постоянным множителем в границах ошибки, истощение остается нежелательным. Один из распространенных методов, позволяющих избежать постоянных ударов, — это выбрать v_ {1} сначала нарисовав элементы случайным образом в соответствии с тем же нормальное распределение со средним { displaystyle 0} а затем масштабируйте вектор до нормы 1. Перед изменением масштаба это приводит к тому, что коэффициенты d_ {k} также быть независимыми нормально распределенными стохастическими переменными из того же нормального распределения (поскольку изменение координат унитарно), и после масштабирования вектора { displaystyle (d_ {1},  dotsc, d_ {n})} будет равномерное распределение на единичной сфере в  mathbb {C} ^ {n}. Это позволяет ограничить вероятность того, что, например, { displaystyle | d_ {1} | < varepsilon}.

Тот факт, что алгоритм Ланцоша не зависит от координат — операции смотрят только на внутренние произведения векторов, а не на отдельные элементы векторов, — позволяет легко создавать примеры с известной собственной структурой для запуска алгоритма: make А диагональная матрица с желаемыми собственными значениями на диагонали; пока начальный вектор v_ {1} имеет достаточно ненулевых элементов, алгоритм выдаст общую трехдиагональную симметричную матрицу как Т.

Теория сходимости Кэниела – Пейджа

После м итерационные шаги алгоритма Ланцоша, Т является м  раз м вещественная симметричная матрица, которая, как и выше, имеет м собственные значения { displaystyle  theta _ {1}  geqslant  theta _ {2}  geqslant  dots  geqslant  theta _ {m}.} Под сходимостью в первую очередь понимается сходимость  theta _ {1} к  lambda _ {1} (и симметричная сходимость  theta _ {m} к  lambda _ {n}) в качестве м растет, и во вторую очередь сближение некоторого диапазона { displaystyle  theta _ {1},  ldots,  theta _ {k}} собственных значений Т своим коллегам { displaystyle  lambda _ {1},  ldots,  lambda _ {k}} из А. Сходимость для алгоритма Ланцоша часто на порядки быстрее, чем для алгоритма степенных итераций.[9]:477

Границы для  theta _ {1} происходят из приведенной выше интерпретации собственных значений как крайних значений коэффициента Рэлея г (х). С  lambda _ {1} является априори максимумом р в целом { displaystyle  mathbb {C} ^ {n},} в то время как  theta _ {1} это просто максимум на м-мерное подпространство Крылова, тривиально получаем { displaystyle  lambda _ {1}  geqslant  theta _ {1}}. И наоборот, любая точка Икс в этом подпространстве Крылова оценивается снизу г (х) за  theta _ {1}, так что если можно выставить точку, за которую { displaystyle  lambda _ {1} -r (x)} мала, то это обеспечивает жесткую границу  theta _ {1}.

Измерение м Крылова подпространство

{ displaystyle  operatorname {span}  left  {v_ {1}, Av_ {1}, A ^ {2} v_ {1},  ldots, A ^ {m-1} v_ {1}  right } ,}

так что любой его элемент может быть выражен как { displaystyle p (A) v_ {1}} для некоторого полинома п степени не более м-1; коэффициенты этого многочлена — это просто коэффициенты линейной комбинации векторов { displaystyle v_ {1}, Av_ {1}, A ^ {2} v_ {1},  ldots, A ^ {m-1} v_ {1}}. У желаемого многочлена окажутся действительные коэффициенты, но на данный момент мы должны учитывать и комплексные коэффициенты, и мы напишем п ^ {*} для полинома, полученного комплексным сопряжением всех коэффициентов п. В этой параметризации подпространства Крылова имеем

{ displaystyle r (p (A) v_ {1}) = { frac {(p (A) v_ {1}) ^ {*} Ap (A) v_ {1}} {(p (A) v_ { 1}) ^ {*} p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p (A) ^ {*} Ap (A) v_ {1}} {v_ { 1} ^ {*} p (A) ^ {*} p (A) v_ {1}}} = { frac {v_ {1} ^ {*} p ^ {*} (A ^ {*}) Ap (A) v_ {1}} {v_ {1} ^ {*} p ^ {*} (A ^ {*}) p (A) v_ {1}}} = { frac {v_ {1} ^ { *} p ^ {*} (A) Ap (A) v_ {1}} {v_ {1} ^ {*} p ^ {*} (A) p (A) v_ {1}}}}

Используя теперь выражение для v_ {1} как линейную комбинацию собственных векторов, получаем

{ displaystyle Av_ {1} = A  sum _ {k = 1} ^ {n} d_ {k} z_ {k} =  sum _ {k = 1} ^ {n} d_ {k}  lambda _ { k} z_ {k}}

и вообще

{ displaystyle q (A) v_ {1} =  sum _ {k = 1} ^ {n} d_ {k} q ( lambda _ {k}) z_ {k}}

для любого полинома q.

Таким образом

{ displaystyle  lambda _ {1} -r (p (A) v_ {1}) =  lambda _ {1} - { frac {v_ {1} ^ {*}  sum _ {k = 1} ^ {n} d_ {k} p ^ {*} ( lambda _ {k})  lambda _ {k} p ( lambda _ {k}) z_ {k}} {v_ {1} ^ {*}  сумма _ {k = 1} ^ {n} d_ {k} p ^ {*} ( lambda _ {k}) p ( lambda _ {k}) z_ {k}}} =  lambda _ {1} - { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2}  lambda _ {k} p ( lambda _ {k}) ^ {*} p ( lambda _ {k})} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} p ( lambda _ {k}) ^ {*} p ( lambda _ {k} )}} = { frac { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k})  left | p (  lambda _ {k})  right | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2}  left | p ( lambda _ {k})  right | ^ {2}}}.}

Ключевое различие между числителем и знаменателем заключается в том, что k = 1 член исчезает в числителе, но не в знаменателе. Таким образом, если можно выбрать п быть большим в  lambda _ {1} но мал во всех остальных собственных значениях, можно получить жесткую границу ошибки { displaystyle  lambda _ {1} -  theta _ {1}}.

С А имеет гораздо больше собственных значений, чем п имеет коэффициенты, это может показаться сложной задачей, но один из способов удовлетворить это — использовать Полиномы Чебышева. Письмо c_ {k} на степень k Многочлен Чебышева первого рода (удовлетворяющий { Displaystyle с_ {к} ( соз х) =  соз (кх)} для всех Икс), у нас есть многочлен, который остается в диапазоне [-1,1] на известном интервале [-1,1] но быстро растет вне его. При некотором масштабировании аргумента мы можем отобразить все собственные значения, кроме  lambda _ {1} в [-1,1]. Позволять

{ displaystyle p (x) = c_ {m-1}  left ({ frac {2x-  lambda _ {2} -  lambda _ {n}} { lambda _ {2} -  lambda _ {n) }}}верно)}

(в случае { displaystyle  lambda _ {2} =  lambda _ {1}}, используйте вместо этого наибольшее собственное значение, строго меньшее, чем  lambda _ {1}), то максимальное значение { Displaystyle | п ( лямбда _ {к}) | ^ {2}} за { Displaystyle к  geqslant 2} является 1 а минимальное значение равно { displaystyle 0}, так

{ displaystyle  lambda _ {1} -  theta _ {1}  leqslant  lambda _ {1} -r (p (A) v_ {1}) = { frac { sum _ {k = 2} ^ {n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k}) | p ( lambda _ {k}) | ^ {2}} { sum _ {k = 1} ^ {n} | d_ {k} | ^ {2} | p ( lambda _ {k}) | ^ {2}}}  leqslant { frac { sum _ {k = 2} ^ { n} | d_ {k} | ^ {2} ( lambda _ {1} -  lambda _ {k})} {| d_ {1} | ^ {2} | p ( lambda _ {1}) | ^ {2}}}  leqslant { frac {( lambda _ {1} -  lambda _ {n})  sum _ {k = 2} ^ {n} | d_ {k} | ^ {2}} {| p ( lambda _ {1}) | ^ {2} | d_ {1} | ^ {2}}}.}

более того

{ displaystyle p ( lambda _ {1}) = c_ {m-1}  left ({ frac {2  lambda _ {1} -  lambda _ {2} -  lambda _ {n}} { lambda _ {2} -  lambda _ {n}}}  right) = c_ {m-1}  left (2 { frac { lambda _ {1} -  lambda _ {2}} { lambda _ {2} -  lambda _ {n}}} + 1  right);}

количество

{ displaystyle  rho = { frac { lambda _ {1} -  lambda _ {2}} { lambda _ {2} -  lambda _ {n}}}}

(т. е. отношение первых собственная щель к диаметру остальной части спектр ) имеет ключевое значение для скорости сходимости здесь. Также пишу

{ displaystyle R = e ^ { operatorname {arcosh} (1 + 2  rho)} = 1 + 2  rho +2 { sqrt { rho ^ {2} +  rho}},}

мы можем сделать вывод, что

{ displaystyle { begin {align}  lambda _ {1} -  theta _ {1} &  leqslant { frac {( lambda _ {1} -  lambda _ {n})  left (1- | d_ {1} | ^ {2}  right)} {c_ {m-1} (2  rho +1) ^ {2} | d_ {1} | ^ {2}}}  [6pt] & = { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) { frac {1 } { cosh ^ {2} ((m-1)  operatorname {arcosh} (1 + 2  rho))}}  [6pt] & = { frac {1- | d_ {1} | ^ { 2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) { frac {4} { left (R ^ {m-1} + R ^ {- (m-1)}  right) ^ {2}}}  [6pt] &  leqslant 4 { frac {1- | d_ {1} | ^ {2}} {| d_ {1} | ^ {2}}} ( lambda _ {1} -  lambda _ {n}) R ^ {- 2 (m-1)}  end {align}}}

Таким образом, скорость сходимости определяется главным образом р, поскольку эта граница уменьшается в раз { displaystyle R ^ {- 2}} за каждую дополнительную итерацию.

Для сравнения можно рассмотреть, как скорость сходимости степенного метода зависит от  rho, но поскольку степенной метод в первую очередь чувствителен к отношению абсолютных значений собственных значений, нам нужно { displaystyle |  lambda _ {n} |  leqslant |  lambda _ {2} |} для собственного зазора между  lambda _ {1} и  lambda _ {2} быть доминирующим. При этом ограничении наиболее благоприятным для степенного метода является то, что { displaystyle  lambda _ {n} = -  lambda _ {2}}, так что считайте это. В конце метода мощности вектор итерации:

{ displaystyle u = (1-t ^ {2}) ^ {1/2} z_ {1} + tz_ {2}  приблизительно z_ {1} + tz_ {2},}[примечание 1]

где каждая новая итерация эффективно умножает z_ {2}-амплитуда т к

{ displaystyle { frac { lambda _ {2}} { lambda _ {1}}} = { frac { lambda _ {2}} { lambda _ {2} + ( lambda _ {1} -  lambda _ {2})}} = { frac {1} {1 + { frac { lambda _ {1} -  lambda _ {2}} { lambda _ {2}}}}} = { frac {1} {1 + 2  rho}}.}

Тогда оценка наибольшего собственного значения имеет вид

{ displaystyle u ^ {*} Au = (1-t ^ {2})  lambda _ {1} + t ^ {2}  lambda _ {2},}

поэтому приведенную выше оценку скорости сходимости алгоритма Ланцоша следует сравнить с

{ displaystyle  lambda _ {1} -u ^ {*} Au = ( lambda _ {1} -  lambda _ {2}) t ^ {2},}

который сжимается в раз { Displaystyle (1 + 2  rho) ^ {- 2}} для каждой итерации. Таким образом, разница сводится к тому, что между { displaystyle 1 + 2  rho} и { Displaystyle R = 1 + 2  rho +2 { sqrt { rho ^ {2} +  rho}}}. в { displaystyle  rho  gg 1} регион, последний больше похож на { displaystyle 1 + 4  rho}, и работает так же, как и силовой метод, с вдвое большей собственной щелью; заметное улучшение. Однако более сложным является случай { displaystyle  rho  ll 1,} в котором { Displaystyle R  приблизительно 1 + 2 { sqrt { rho}}} — еще большее улучшение собственной щели; в { displaystyle  rho  gg 1} область, в которой алгоритм Ланцоша делает самый маленький улучшение по силовому методу.

Численная стабильность

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

Для алгоритма Ланцоша можно доказать, что с точная арифметика, множество векторов v_ {1}, v_ {2},  cdots, v _ {{m + 1}} создает ортонормированный базис, и решенные собственные значения / векторы являются хорошими приближениями к исходной матрице. Однако на практике (поскольку вычисления выполняются в арифметике с плавающей запятой, где неточность неизбежна) ортогональность быстро теряется, и в некоторых случаях новый вектор может даже линейно зависеть от уже построенного набора. В результате некоторые собственные значения результирующей трехдиагональной матрицы могут не быть приближениями к исходной матрице. Следовательно, алгоритм Ланцоша не очень стабилен.

Пользователи этого алгоритма должны иметь возможность находить и удалять эти «ложные» собственные значения. Практические реализации алгоритма Ланцоша идут в трех направлениях для борьбы с этой проблемой стабильности:[6][7]

  1. Предотвратить потерю ортогональности,
  2. Восстановите ортогональность после создания основы.
  3. После того, как все хорошие и «ложные» собственные значения определены, удалите ложные.

Вариации

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

Многие реализации алгоритма Ланцоша перезапускаются после определенного количества итераций. Одним из наиболее важных вариантов перезапуска является неявно перезапускаемый метод Ланцоша,[10] который реализован в ARPACK.[11] Это привело к ряду других перезапущенных вариаций, таких как перезапуск бидиагонализации Ланцоша.[12] Другой успешный вариант перезапуска — метод Ланцоша с толстым перезапуском,[13] который был реализован в программном пакете под названием TRLan.[14]

Нулевое пространство над конечным полем

В 1995 г. Питер Монтгомери опубликовал алгоритм, основанный на алгоритме Ланцоша, для поиска элементов пустое пространство большой разреженной матрицы над GF (2); поскольку множество людей, интересующихся большими разреженными матрицами над конечными полями, и множество людей, интересующихся большими проблемами собственных значений, почти не пересекаются, это часто также называют блочный алгоритм Ланцоша не вызывая необоснованной путаницы.[нужна цитата ]

Приложения

Алгоритмы Ланцоша очень привлекательны тем, что умножение на А , единственная крупномасштабная линейная операция.Поскольку механизмы взвешенного поиска текста реализуют именно эту операцию, алгоритм Ланцоша можно эффективно применять к текстовым документам (см. Скрытое семантическое индексирование ). Собственные векторы также важны для крупномасштабных методов ранжирования, таких как Алгоритм HITS разработан Джон Кляйнберг, или PageRank алгоритм, используемый Google.

Алгоритмы Ланцоша также используются в Физика конденсированного состояния как метод решения Гамильтонианы из сильно коррелированные электронные системы,[15] а также в модель оболочки коды в ядерная физика.[16]

Реализации

В Библиотека NAG содержит несколько процедур[17] для решения крупномасштабных линейных систем и собственных задач, использующих алгоритм Ланцоша.

MATLAB и GNU Octave поставляются со встроенным ARPACK. Как хранимые, так и неявные матрицы можно анализировать с помощью eigs () функция (Matlab /Октава ).

Реализация алгоритма Ланцоша в Matlab (проблемы с точностью примечания) доступна как часть Пакет Matlab для распространения веры по Гауссу. В GraphLab[18] Библиотека совместной фильтрации включает крупномасштабную параллельную реализацию алгоритма Ланцоша (на C ++) для многоядерных процессоров.

В ПРИММ библиотека также реализует алгоритм, подобный Ланцошу.

Примечания

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

  1. ^ Ланцош, К. (1950). «Итерационный метод решения задачи на собственные значения линейных дифференциальных и интегральных операторов» (PDF). Журнал исследований Национального бюро стандартов. 45 (4): 255–282. Дои:10.6028 / jres.045.026.
  2. ^ а б Ojalvo, I.U .; Ньюман, М. (1970). «Режимы вибрации крупногабаритных конструкций методом автоматического уменьшения матриц». Журнал AIAA. 8 (7): 1234–1239. Bibcode:1970AIAAJ … 8.1234N. Дои:10.2514/3.5878.
  3. ^ Пейдж, К. С. (1971). Вычисление собственных значений и собственных векторов очень больших разреженных матриц (Кандидатская диссертация). Лондонский университет. OCLC  654214109.
  4. ^ Пейдж, К. С. (1972). «Вычислительные варианты метода Ланцоша для задачи собственных значений». J. Inst. Приложения по математике. 10 (3): 373–381. Дои:10.1093 / imamat / 10.3.373.
  5. ^ Оялво, И. У. (1988). «Происхождение и преимущества векторов Ланцоша для больших динамических систем». Proc. 6-я Конференция по модальному анализу (IMAC), Киссимми, Флорида. С. 489–494.
  6. ^ а б Cullum; Уиллоби. Алгоритмы Ланцоша для вычисления больших симметричных собственных значений. 1. ISBN  0-8176-3058-9.
  7. ^ а б Юсеф Саад (1992-06-22). Численные методы решения больших задач на собственные значения. ISBN  0-470-21820-7.
  8. ^ Coakley, Ed S .; Рохлин, Владимир (2013). «Быстрый алгоритм« разделяй и властвуй »для вычисления спектров вещественных симметричных трехдиагональных матриц». Прикладной и вычислительный гармонический анализ. 34 (3): 379–414. Дои:10.1016 / j.acha.2012.06.003.
  9. ^ а б Golub, Gene H .; Ван Лоан, Чарльз Ф. (1996). Матричные вычисления (3-е изд.). Балтимор: Johns Hopkins Univ. Нажмите. ISBN  0-8018-5413-X.
  10. ^ Д. Кальветти; Л. Райхель; Д.К. Соренсен (1994). «Неявно перезапущенный метод Ланцоша для больших симметричных задач на собственные значения». Электронные транзакции по численному анализу. 2: 1–21.
  11. ^ Р. Б. Лехук; Д. К. Соренсен; К. Ян (1998). Руководство пользователя ARPACK: решение крупномасштабных проблем собственных значений с помощью неявно перезапускаемых методов Арнольди. СИАМ. Дои:10.1137/1.9780898719628. ISBN  978-0-89871-407-4.
  12. ^ Э. Кокиопулу; К. Бекас; Э. Галлопулос (2004). «Вычисление наименьших сингулярных троек с неявно перезапущенной бидиагонализацией Ланцоша» (PDF). Appl. Нумер. Математика. 49: 39–61. Дои:10.1016 / j.apnum.2003.11.011.
  13. ^ Кешенг Ву; Хорст Саймон (2000). «Толстый перезапуск метода Ланцоша для больших симметричных задач на собственные значения». Журнал SIAM по матричному анализу и приложениям. СИАМ. 22 (2): 602–616. Дои:10.1137 / S0895479898334605.
  14. ^ Кешенг Ву; Хорст Саймон (2001). «Программный комплекс TRLan». Архивировано из оригинал на 2007-07-01. Получено 2007-06-30.
  15. ^ Чен, HY; Аткинсон, W.A .; Уортис, Р. (июль 2011 г.). «Вызванная беспорядком аномалия нулевого смещения в модели Андерсона-Хаббарда: численные и аналитические расчеты». Физический обзор B. 84 (4): 045113. arXiv:1012.1031. Bibcode:2011PhRvB..84d5113C. Дои:10.1103 / PhysRevB.84.045113.
  16. ^ Симидзу, Норитака (21 октября 2013 г.). «Код модели ядерной оболочки для массовых параллельных вычислений», KSHELL««. arXiv:1310.5431 [ядерный ].
  17. ^ Группа численных алгоритмов. «Указатель ключевых слов: Ланцош». Руководство библиотеки NAG, Mark 23. Получено 2012-02-09.
  18. ^ GraphLab В архиве 2011-03-14 на Wayback Machine

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

  • Голуб, Джин Х.; Ван Лоан, Чарльз Ф. (1996). «Методы Ланцоша». Матричные вычисления. Балтимор: Издательство Университета Джона Хопкинса. С. 470–507. ISBN  0-8018-5414-8.
  • Нг, Эндрю Ю.; Чжэн, Алиса X .; Джордан, Майкл И. (2001). «Анализ связей, собственные векторы и стабильность» (PDF). IJCAI’01 Труды 17-й международной совместной конференции по искусственному интеллекту. Том 2: 903–910.

Часто при получении технического задания на проведение расчета фигурирует условие, согласно которому проектируемую конструкцию необходимо подобрать или проверить по прочности, деформативности и устойчивости с учетом сейсмического воздействия. В текущей постановке задачи, сделать это совсем несложно, например, используя в качестве расчетного программный комплекс SCAD. Ранее уже была представлена статья с аналогичной тематикой, но в рамках программного комплекса ЛИРА-САПР. О том, как осуществить задание сейсмики в SCAD, пойдет речь в текущей статье.

Нюансы в подготовке расчетной схемы

Чтобы правильно применить сейсмику к расчетной схеме, необходимо уточнить несколько нюансов, касаемых граничных условий.

  • Если в расчетной схеме отражен свайный фундамент с помощью конечных элементов №51, которые их моделируют, то такие элементы следует заменить на жесткие связи во всех направлениях, ограничив так же и углы поворота.
  • Если же в расчетной схеме здания или сооружения присутствуют модель фундамента на естественном основании, то в этом случае следует увеличить в 10 раз модули деформации грунтов при назначении коэффициентов постели (например, в программе КРОСС).

Назначение к расчетной схеме сейсмического загружения

Сейсмику в SCAD можно задавать уже тогда, когда набрана геометрия расчетной схемы, установлены связи и назначены все остальные загружения на рассматриваемый объект. Так как сейсмика представляет из себя динамическое загружение, то активация окна настройки осуществляется по кнопке «Динамические воздействия» — «Создание нового загружения» (рис. 1).

Рис. 1. Кнопка создания нового динамического загружения

В новом окне в левом верхнем углу следует поставить галочку напротив «Сейсмические воздействия», затем появится перечень норм, согласно которым нужно делать расчет (рис. 2). На счет остальных настроек стоит остановиться поподробнее, чтобы более корректно осуществить задание сейсмики в SCAD.

Вкладка «Общие данные» при задании сейсмики в SCAD

  1. Преобразование статических нагрузок в массы – следует активировать этот пункт. Из-за того, что сейсмика учитывается только в особых сочетаниях, то от каждого типа нагрузок задается коэффициент пересчета, согласно следующим коэффициентам:
  • Постоянные — 0.9.
  • Длительные — 0.8.
  • Кратковременные — 0.5. Причем кратковременные нагрузки, не имеющие длительной части
    (например, ветровая нагрузка), не входят в особые сочетания.

2. Определение собственных форм и частот выполняется методом Ланцоша, согласно кеоторому происходит автоматическое определение количества форм, пока не наберется требуемая в СП 14.13330.2018, п.5.9 общая сумма масс системы по направлениям X=90% Y=90% Z=75%.

Окно настроек сейсмики в SCAD

Рис. 2. Окно настроек сейсмики в SCAD, первая вкладка

Вкладка с настройками, согласно выбранным нормам в SCAD

Остальные настройки назначаются во второй вкладке текущего окна (рис. 3).

  1. Число учитываемых частот колебаний определяется модальным анализом.
  2. Ориентация высоты здания на схеме – по оси Z.
  3. Категория грунта определяется из отчета по инженерно-геологическим изысканиям (СП 14.13330.2018, табл. 1).
  4. Сейсмичность — требуемая балльность, согласно техническому заданию или району предполагаемого размещению объекта.
  5. Поправочный коэффициент — обычно, 1. Можно усиливать влияние сейсмики на конструкцию, вплоть до назначения 10 баллов, введя коэффициент 2.
  6. Тип сооружения, назначается согласно СП14.13330.2018, табл. 5.3.
  7. Коэффициент допускаемых повреждений, назначается согласно СП14.13330.2018, табл. 5.4.
  8. Характеристика сооружения, назначается согласно СП14.13330.2018, табл. 5.5.

Рис. 3. Окно настроек сейсмики в SCAD, вторая вкладка

После нажатия «ОК» новое сейсмическое воздействие появится в общем списке загружений.

Чтобы задать сейсмику в SCAD в РСУ, нужно в дереве проекта нажать на соответствующую кнопку, после чего в появившейся таблице отредактировать список загружений, согласно ниженаписанным параметрам:

  1. У сейсмического загружения задать тип — особая нагрузка, а вид — сейсмическое воздействие.
  2. Сейсмика строго знакопеременна, отметить этот пункт галочкой.
  3. Сейсмика может входить в сочетание только с теми нагрузками, которые были пересчитаны при задании самого воздействия (постоянные и временные нагрузки, которые имеют длительную часть). Напротив сейсмического воздействия ставим галочку в желтом столбце; для постоянных и временных нагрузок с длительной частью (за исключением нагрузок, которые не имеют длительной составляющей, например ветровая нагрузка) – галочку в зеленном столбце напротив каждого загружения.
  4. При задании двух и более сейсмических воздействий необходимо задать взаимоисключение данных нагрузок.
  5. В области «Связи загружений» необходимо зайти в «Сопутствия» и поставить галочки по всем ячейкам.

Задание сейсмики в SCAD завершается на этапе получения результатов расчета. Анализ результатов от сейсмического воздействия в режиме «Графический анализ», во вкладке «Деформации» выполняется по нагрузке «SD –амплитуда от суммарной динамической нагрузки». Значение суммарной амплитуды в среде SCAD всегда несколько завышено в силу того, что программный комплекс складывает значения амплитуд по модулю, без учета знака. Следует учитывать, что при больших значениях перемещений узлов от сейсмического воздействия, результат может быть обусловлен наличием некоторых отдельных частей расчетной схемы (консольный стержень и т.п.). При удалении данных элементов перемещения, вероятнее всего, будут на порядок ниже.

Результаты армирования проводятся аналогичным образом, как и при решении стандартной классической задачи.

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

Элементы “узел-поверхность”

Элементы “узел-узел”

Контакт деформируемых тел

Контакт деформируемого тела с жестким

9 Граничные условия

Для геометрической и для КЭ-моделей (заданные перемещения и кинематические связи групп узлов)

Начальные условия

Ввод нагрузок в форме таблиц или функций

Тепловые нагрузки

Преднапряжение

9Модели материалов

Упругие изотропные, трансверсально-изотропные, ортотропные

Пластичность металлов (теория течения с различными упрочнениями)

Гиперупругость (несжимаемые резиноподобные)

Вязкопластичность металлов

Ползучесть металлов

Образование трещин в бетоне и железобетоне

Нелинейная модель грунта (Друкера-Прагера)

Пользовательские материалы (нелинейная модель кирпичной кладки, деревянные клееные)

9Конечные элементы

Объемные КЭ (“солиды”)

Оболочечные элементы

Балочные КЭ

Трубы

2D и 3D гиперупругие

2D и 3D оболочки и “солиды” для тепловых задач

Многоточечные MPC

2D и 3D контактные

2D и 3D поверхностного эффекта

Опция “рождение-смерть”

9Теплопередача

Стационарные и нестационарные задачи

Теплопроводность

Теплообмен конвекцией

9Многодисциплинарные связанные задачи

Теплообмен + Прочность

9Оптимизация

Оптимизация параметров

Параметрическое моделирование

9Дополнительные возможности

Циклическая симметрия

Субмоделирование (дополнительный анализ зон конструкции)

Модальный синтез

Суперэлементы/подконструкции

9Методы решения

СЛАУ

Прямой разреженный метод (Sparse)

Итерационный метод сопряженных градиентов с предобуславливанием

(PCG)

Решение задач на собственные значения

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

12

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

Блочный метод Ланцоша

Метод Ланцоша-PCG

Метод итераций в подпространстве

Решение нелинейных задач

Метод Ньютона-Рафсона

Метод окаймляющих дуг (Arc-length)

Интегрирование нестационарных уравнений теории поля (теплопроводность и т.п.)

“Метод трапеций” (Hughes)

Интегрирование уравнений динамики

Метод Ньюмарка

Метод HHT (Hilbert-Hughes-Taylor)

Спектральный расчет

Суперэлементные алгоритмы

Контактные взаимодействия

Метод штрафных функций

Метод множителей Лагранжа

Расширенный метод множителей Лагранжа

Оптимизация

Метод аппроксимации подзадачи

Метод 1-го порядка

4.3Реализация верифицируемых типов решаемых задач (виды расчетов) в ПК

ANSYS Mechanical

Численное моделирование статического, температурного и динамического напряженно-деформированного состояния зданий, сооружений и конструкций без какихлибо существенных ограничений в ПК ANSYS основано на реализации метода конечных элементов (МКЭ) в форме перемещений. Для решения основной системы уравнений формируются глобальные матрицы жесткости [K], демпфирования [C] и матрицы масс [M], а также вектор внешней узловой нагрузки {F}.

4.3.1Линейная статика

Для задач линейной статики решается следующая система линейных алгебраических уравнений (СЛАУ):

или

[K ] {u}= {F a }+{F r },

(2)

где:

[K] – глобальная матрица жесткости

N

[K ]= [Ke ];

m=1

{u} – вектор узловых перемещений; N – количество элементов;

[Ke] – элементная матрица жесткости;

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

13

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

{Fr} – вектор реакций от нагрузки;

{Fa} – вектор глобальной внешней нагрузки,

{F a }= {F nd }+{F ac }+ N ({Feth }+{Fepr })

m=1

где:

{Fnd} – вектор приложенной узловой нагрузки; {Fac} – вектор инерционных сил,

{F ac }= [M ] {ac }

где:

[M] – глобальная матрица масс,

N

[M ]= [Me ]

m=1

[Me] – элементная матрица масс; {ac} – глобальный вектор ускорений;

{Feth} – вектор температурной нагрузки в пределах одного элемента; {Fepr} – вектор давлений в пределах одного элемента.

Решение системы линейных уравнений (1) или (2) в программе осуществляется прямыми (Разреженный Sparse, Фронтальный Frontal) или итерационными (Сопряженных градиентов с предобуславливанием PCG, Сопряженных градиентов Якоби JCG, Сопряженных градиентов с неполным разложением Холецкого ICCG) методами.

В рамках верификации были рассмотрены наиболее эффективные универсальные схемы:

1)прямой разреженный метод (Sparse)

2)итерационный метод сопряженных градиентов с предобуславливанием (PCG).

4.3.1.1Прямой разреженный метод (Sparse Direct Solver)

Линейные матричные уравнения (1) решаются триангуляцией матрицы жесткости [K] для получения следующего уравнения:

[L] [U ] {u}= {F}

(3)

где:

[L] – нижняя матрица треугольного вида

[U] – верхняя матрица треугольного вида

Обозначим

[U ] {u}= {w}

(4)

Искомый вектор узловых перемещений {u} определяем, предварительно решив СЛАУ относительно {w}:

а затем

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

14

ANSYS Mechanical. Верификационный отчет. Том 1

vk.com/club152685050 | vk.com/id446425943

[U ] {u}= {w}

(6)

Когда матрица жесткости [K] симметрична, ее можно записать в виде:

[K ]= [L] [L]T

(7)

в свою очередь

[K ]= [L

] [D][L ]

(8)

T

где [D] – диагональная матрица, члены которой могут быть отрицательными для некоторых нелинейных задач, что позволяет сформировать матрицу [L] без учета квадратного корня из отрицательного числа. Поэтому уравнения (3)-(6) можно представить в виде:

[L ] [D] [L ]

{u}= {F}

(9)

T

T

{u}

(10)

{w}= [D] [L ]

(11)

[L ] {w}= {F}

T

{u}= {F}

(12)

[D] [L ]

В том случае, когда матрица [K] редкозаполненная с коэффициентами, расположенными, в основном, вокруг главной диагонали, прямой разреженный метод предназначен для обработки только ненулевых элементов матрицы [K]. В целом, в ходе разложения Холецкого матрицы [K], (3) или (9), матрицы [L] или [L’] заполняются ненулевыми коэффициентами, расположенными на нулевых позициях матрицы [K]. Эффективность прямого разреженного метода определяется максимальной оптимизацией вышеописанного процесса.

4.3.1.2Итерационный метод сопряженных градиентов с предобуславливанием

(Preconditioned Conjugate Gradient)

Итерационный метод сопряженных градиентов с предобуславливанием (PCG) является эффективным и надежным для всех типов расчетов. PCG метод применим только для симметричных матриц жесткости.

Решается основная система линейных уравнений (1). Вектор узловых перемещений ищется в виде:

{u}=α1 {p1 }+α2 {p2 }++αm {pm }

(13)

где m n, где n – размер матрицы.

Алгоритм метода сопряженных градиентов реализован следующим образом (14):

{u0 }= {0} {R0 }= {F}

{z0 }= [Q]1 {F}

Do i = 1, n

If(Norm (R)ε 2 ) then

Set {u}={ui-1} Quit loop

Else

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

15

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

If(i=1)then

β1=0

{p1}={R0}

α1 =

{z0 }T {R0 }

{p1 }T [K ] {p1 }

{R1 }={R0 }+α1 [K ] {p1 }

Else

Applying preconditioning:{zi-1}=[Q]-1{Ri-1}

β

=

{zi1 }T {Ri1 }

i

{zi2 }T {Ri2 }

{pi }= {zi1 }+ βi {pi1 }

α

=

{zi1 }T {Ri1 }

i

{pi }T [K ] {pi }

{Ri }= {Ri1 }+αi [K ] {pi }

Endif

Endif

End loop

Условие сходимости:

{Ri }T {Ri }

ε 2

(15)

{F}T {F}

где:

ε – точность, заданная пользователем;

{Ri }= {F}[K ] {ui }

{ui} – вектор решений на i-ой итерации. Вектор {u0} может быть нулевым.

4.3.2 Стационарные задачи теплопроводности (фильтрации)

Для стационарных задач теплопроводности (фильтрации) решаем СЛАУ (1) или (2), подставляя вместо глобальной матрицы [K ] матрицу теплопроводности, вместо вектора

перемещений {u} – искомый вектор узловых температур {T}, а вместо вектора приложенной глобальной внешней нагрузки {F a }{Qa }, где

{Qa }= {Qnd }+ N ({Qe }+{Qeg }+{Qec }), m=1

4.3.3Собственные частоты и формы колебаний

Уравнение движения для задач определения собственных частот и форм колебаний без учета демпфирования имеет вид:

[M ] {u}+[K ] {u}= {0}

(16)

Эффекты преднапряженного состояния могут быть учтены в матрице жесткости [K ]

(команда PSTRES,ON).

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

16

ANSYS Mechanical. Верификационный отчет. Том 1

vk.com/club152685050 | vk.com/id446425943

Для линейных систем свободные колебания являются гармоническими:

{u}= {φ}i cosωi t

(17)

где:

{φ}i – собственный вектор, соответствующий i-ой собственной частоте;

ωi i-я собственная круговая частота (радиан в единицу времени);

t – время.

Таким образом, уравнение (16) примет вид:

(ω2 [M ]+[K ])

{φ} = {0}

(18)

i

i

Нетривиальным решением (18) является:

[K ]ω2 [M ]

= 0

(19)

Через полученные значения круговых частот собственных колебаний {ω} можно выразить частоты собственных колебаний {f}:

fi

=

ωi

(20)

2π

Проблема собственных частот и форм колебаний может быть решена одним из методов, реализованных в ПК ANSYS Mechanical:

Редуцированный метод;

Метод итераций в подпространстве;

Прямой блочный метод Ланцоша;

Метод Ланцоша–PCG;

Несимметричный метод;

Метод демпфирования;

QR-разложение для задач с демпфированием.

Врамках настоящей верификации рассмотрены наиболее эффективные для задач большой размерности:

1) метод итераций в подпространстве;

2) прямой блочный метод Ланцоша;

3) метод Ланцоша-PCG.

4.3.3.1Метод итераций в подпространстве

Основной алгоритм метода итераций в подпространстве выглядит следующим образом:

1.Определение так называемых «сдвигов» s. В случае частотного анализа (ANTYPE,MODAL),) s = FREQB – низшая частота в частотном диапазоне.

2.Инициализация начальных векторов [X 0 ].

Количество начальных векторов (итераций) определяется равенством

где:

p – необходимое количество вычисляемых форм;

d – дополнительное число итерируемых векторов (по умолчанию d = 4)

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

17

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

3.

Триангуляция “сдвинутой” матрицы

[K ]= [K ]+ s [M ]

(22)

[K ] – глобальная матрица жесткости системы;

[M ] – глобальная матрица масс (для модального анализа).

В качестве проверки используется свойство последовательности Штурма со сдвигом

s.

4.Для каждой итерации в подпространстве n от 1 до NM выполняются нижеследующие пункты 5-14. NM – максимальное количество итераций в подпространстве.

5.Формируется

[F ]масштабируется по {λn1}, где {λn1} – предварительно оцениваемый вектор собственных значений.

6.Прямым фронтальным методом (EQSLV,FRONT) решается система уравнений

(29)относительно [X n ]:

7.Вектор [X n ] масштабируется {(λn1 s) / λn1}.

8.Для сохраниения численной устойчивости проводится ортогонализация по Граму-Шмидту.

9.Определяются матрицы подпространства [K ] и [M ]:

[

]= [

n ]T [K ] [

n ]

(25)

K

X

X

[

]= [

n ]T [M ] [

n ]

(26)

M

X

X

10.

С учетом сдвига, получается

[

]= [

]+ s [

]

(27)

K

K

M

11.

Вычисляются собственные значения и векторы

подпространства с

применением обобщенного метода Якоби:

[K ] [Q]= [

] [Q] {λn }

(28)

M

где:

[Q] – собственные вектора подпространства;

{λn } – обновленные собственные значения.

12.

Обновление приближения к собственным векторам:

[X n ]= [

n ] [Q]

(29)

X

13.Если найдены отрицательные или лишние формы колебаний, их нужно удалить

исоздать новый случайный вектор.

14.Анализ сходимости полученных приближений:

Если для всех форм сходимость достигается:

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

18

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

ei

=

(λi )n (λi )n1

< tol

(30)

B

где:

(λi )n i-е собственное значение, вычисленное на n-ой итерации;

(λi )n1 i-е собственное значение, вычисленное на (n-1)-ой итерации;

1.0

B = ( ) – выбирается наибольшее значение;

λi n

tol – предел сходимости, равный 10-5, то переходим к пункту 15.

Если требуется задать новый сдвиг, возвращаемся к пункту 3.

Для перехода на следующую итерацию, переходим к пункту 4.

15.Выполняется последняя необходимая проверка с использованием свойства последовательности Штурма.

4.3.3.2Прямой блочный метод Ланцоша

Для решения большой симметричной проблемы собственных значений помимо метода итераций в подпространстве применяют прямой блочный метод Ланцоша, имеющий более быструю сходимость.

Алгоритм блочного метода Ланцоша со сдвигом подробно описан в [194]. Для получения требуемого количества собственных векторов в модальном анализе блочный метод Ланцоша применяется совместно с проверкой последовательности Штурма.

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

Альтернативой блочному методу Ланцоша является метод Ланцоша-PCG, требующий меньше вычислительных затрат.

4.3.3.3 Метод Ланцоша-PCG

Теоретические выкладки по реализации метода Ланцоша-PCG можно также найти в работе [194].

Несмотря на то, что данный метод основан на блочном методе Ланцоша, их реализация несколько отличается:

Значение сдвига в ходе вычислений остается неизменным;

Для решения уравнения (24) применяется метод PCG;

По умолчанию не выполняется проверка последовательности Штурма;

Не применим к задачам на устойчивость.

4.3.4Линейная устойчивость

Расчет на устойчивость в линейной постановке (частичная проблема собственных

значений) формулируется следующим образом:

([K ]+ λi [S]) {ψ}i ={0}

(31)

где:

[K ] – матрица жесткости системы;

[S] – матрица геометрической жесткости (stress stiffness matrix);

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

19

vk.com/club152685050ANSYS Mechanical. Верификационный| vk.com/id446425943отчет. Том 1

λi i-е собственное значение (критическая нагрузка);

{ψ}i i-й собственный вектор перемещений (форма потери устойчивости).

Методы решения проблемы собственных значений, реализованных в ПК ANSYS Mechanical, перечислены в п. 3.3.3.

В рамках настоящей верификации применительно к задачам на линейную устойчивость рассмотрен прямой блочный метод Ланцоша (см. п. 3.3.3.2).

4.3.5Гармонический анализ (установившиеся вибрации)

При гармоническом анализе линейных систем с установившимися вибрациями решаются уравнения движения во времени:

[M ] {u}+[C] {u}+[K ] {u}= {F a }

(32)

где:

[M ] – матрица масс системы;

[C] – матрица демпфирования (диссипации) системы; [K ]– матрица жесткости системы;

{u} — вектор узловых ускорений; {u} — вектор узловых скоростей; {u} — вектор узловых перемещений;

{F a }— функция нагрузки, зависящая от времени.

Известно, что все точки системы движутся с одной частотой, но необязательно в одной фазе. Сдвиг по фазе объясняется наличием демпфирования. Поэтому перемещения могут быть представлены следующим образом:

{u}= {umax eiφ } eit

(33)

где:

umax

– максимальные перемещения;

i =

1 ;

Ω –круговая частота внешней нагрузки (радианы в единицу времени), Ω = 2πf ; f – вынуждающая частота;

t– время;

φ– сдвиг по фазе для перемещений (радианы).

Вкомплексной форме перемещения можно записать следующим образом:

{u}={umax (cosφ +isinφ)} eit

(34)

или

{u}={{u

}+i{u

2

}} eit

(35)

1

где:

{u1

}={umax cosφ} – вектор действительных значений перемещений;

{u2 }={umax sinφ} – вектор мнимых значений перемещений.

Вектор нагрузки может быть представлен по аналогии:

{F}={Fmax eiψ }eit

(36)

{F}={F

(cosψ +isinψ )} eit

(37)

max

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

20

ANSYS Mechanical. Верификационный отчет. Том 1

vk.com/club152685050 | vk.com/id446425943

{F}={{F

}+i{F }} eit

(38)

1

2

где:

Fmax – амплитуда приложенной силы;

Ψ – сдвиг по фазе для нагрузки (радианы);

{F1}={Fmax cosψ} – вектор действительных значений нагрузки;

{F2 }={Fmax sinψ} – вектор мнимых значений нагрузки.

Подставив выражения (35) и (38) в (32), получим:

(−Ω2 [M ]+i[C]+[K ]) ({u1}+i{u2 }) eit = ({F1}+i{F2 }) eit

(39)

Выполнив необходимые преобразования, представим уравнение (39) в виде:

(− Ω2 [M ]+i[C]+[K ]) ({u1}+i{u2 })= ({F1}+ i{F2 })

(40)

Существует четыре метода решения представленной выше системы уравнений (40):

Полный метод решения (Full Solution Method);

Редуцированный метод решения (Reduced Solution Method);

Метод суперпозиций форм колебаний;

Вариационный метод решения (Variational Technology).

Врамках данной верификации остановимся на методе суперпозиций форм колебаний.

4.3.5.1Метод суперпозиций форм колебаний

Уравнение движения (32) в частотной (модальной) форме записывается следующим образом (подробнее см. “Documentation for ANSYS, Theory Reference, Chapter 15. Analysis Tools, 15.10 Mode Superposition Method”):

y j + 2ωjξj y j +ω2j y j = f j

(41)

где:

y j

– модальная (нормальная) координата (modal coordinate);

ωj

– собственная круговая частота j-й формы колебаний;

ξj

– коэффициент затухания для j-й формы колебаний;

fi – нагрузка в модальных координатах.

Вектор нагрузки в модальных координатах:

{F}= {F nd }+ s{F s }

(42)

где:

{F nd }– вектор узловых сил;

s – масштабный коэффициент нагрузки;

{F s } – вектор нагрузки из модального анализа (подробнее см. “Documentation for ANSYS,

Theory Reference, Chapter 15. Analysis Tools, 15.10 Mode Superposition Method” []).

Для установившихся гармонических колебаний

ЗАО НИЦ СтаДиО (www.stadyo.ru stadyo@stadyo.ru), МГСУ (niccm@mgsu.ru), 2009

21

Соседние файлы в предмете Информатика

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

The Lanczos algorithm is an iterative method devised by Cornelius Lanczos that is an adaptation of power methods to find the m «most useful» (tending towards extreme highest/lowest) eigenvalues and eigenvectors of an ntimes n Hermitian matrix, where m is often but not necessarily much smaller than n.[1] Although computationally efficient in principle, the method as initially formulated was not useful, due to its numerical instability.

In 1970, Ojalvo and Newman showed how to make the method numerically stable and applied it to the solution of very large engineering structures subjected to dynamic loading.[2] This was achieved using a method for purifying the Lanczos vectors (i.e. by repeatedly reorthogonalizing each newly generated vector with all previously generated ones)[2] to any degree of accuracy, which when not performed, produced a series of vectors that were highly contaminated by those associated with the lowest natural frequencies.

In their original work, these authors also suggested how to select a starting vector (i.e. use a random-number generator to select each element of the starting vector) and suggested an empirically determined method for determining m, the reduced number of vectors (i.e. it should be selected to be approximately 1.5 times the number of accurate eigenvalues desired). Soon thereafter their work was followed by Paige, who also provided an error analysis.[3][4] In 1988, Ojalvo produced a more detailed history of this algorithm and an efficient eigenvalue error test.[5]

The algorithm[edit]

Input a Hermitian matrix A of size ntimes n, and optionally a number of iterations m (as default, let m=n).
Output an ntimes m matrix V with orthonormal columns and a tridiagonal real symmetric matrix {displaystyle T=V^{*}AV} of size mtimes m. If m=n, then V is unitary, and {displaystyle A=VTV^{*}}.
Warning The Lanczos iteration is prone to numerical instability. When executed in non-exact arithmetic, additional measures (as outlined in later sections) should be taken to ensure validity of the results.

  1. Let {displaystyle v_{1}in mathbb {C} ^{n}} be an arbitrary vector with Euclidean norm 1.
  2. Abbreviated initial iteration step:
    1. Let {displaystyle w_{1}'=Av_{1}}.
    2. Let {displaystyle alpha _{1}=w_{1}'^{*}v_{1}}.
    3. Let {displaystyle w_{1}=w_{1}'-alpha _{1}v_{1}}.
  3. For {displaystyle j=2,dots ,m} do:
    1. Let {displaystyle beta _{j}=|w_{j-1}|} (also Euclidean norm).
    2. If {displaystyle beta _{j}neq 0}, then let {displaystyle v_{j}=w_{j-1}/beta _{j}},
      else pick as v_{j} an arbitrary vector with Euclidean norm 1 that is orthogonal to all of {displaystyle v_{1},dots ,v_{j-1}}.
    3. Let {displaystyle w_{j}'=Av_{j}}.
    4. Let {displaystyle alpha _{j}=w_{j}'^{*}v_{j}}.
    5. Let {displaystyle w_{j}=w_{j}'-alpha _{j}v_{j}-beta _{j}v_{j-1}}.
  4. Let V be the matrix with columns {displaystyle v_{1},dots ,v_{m}}. Let {displaystyle T={begin{pmatrix}alpha _{1}&beta _{2}&&&&0\beta _{2}&alpha _{2}&beta _{3}&&&\&beta _{3}&alpha _{3}&ddots &&\&&ddots &ddots &beta _{m-1}&\&&&beta _{m-1}&alpha _{m-1}&beta _{m}\0&&&&beta _{m}&alpha _{m}\end{pmatrix}}}.
Note {displaystyle Av_{j}=w_{j}'=beta _{j+1}v_{j+1}+alpha _{j}v_{j}+beta _{j}v_{j-1}} for {displaystyle 1<j<m}.

There are in principle four ways to write the iteration procedure. Paige and other works show that the above order of operations is the most numerically stable.[6][7]
In practice the initial vector v_{1} may be taken as another argument of the procedure, with {displaystyle beta _{j}=0} and indicators of numerical imprecision being included as additional loop termination conditions.

Not counting the matrix–vector multiplication, each iteration does O(n) arithmetical operations. The matrix–vector multiplication can be done in {displaystyle O(dn)} arithmetical operations where d is the average number of nonzero elements in a row. The total complexity is thus {displaystyle O(dmn)}, or {displaystyle O(dn^{2})} if m=n; the Lanczos algorithm can be very fast for sparse matrices. Schemes for improving numerical stability are typically judged against this high performance.

The vectors v_{j} are called Lanczos vectors.
The vector {displaystyle w_{j}'} is not used after w_{j} is computed, and the vector w_{j} is not used after {displaystyle v_{j+1}} is computed. Hence one may use the same storage for all three. Likewise, if only the tridiagonal matrix T is sought, then the raw iteration does not need {displaystyle v_{j-1}} after having computed w_{j}, although some schemes for improving the numerical stability would need it later on. Sometimes the subsequent Lanczos vectors are recomputed from v_{1} when needed.

Application to the eigenproblem[edit]

The Lanczos algorithm is most often brought up in the context of finding the eigenvalues and eigenvectors of a matrix, but whereas an ordinary diagonalization of a matrix would make eigenvectors and eigenvalues apparent from inspection, the same is not true for the tridiagonalization performed by the Lanczos algorithm; nontrivial additional steps are needed to compute even a single eigenvalue or eigenvector. Nonetheless, applying the Lanczos algorithm is often a significant step forward in computing the eigendecomposition. If lambda is an eigenvalue of A, and if {displaystyle Tx=lambda x} (x is an eigenvector of T) then {displaystyle y=Vx} is the corresponding eigenvector of A (since {displaystyle Ay=AVx=VTV^{*}Vx=VTIx=VTx=V(lambda x)=lambda Vx=lambda y}). Thus the Lanczos algorithm transforms the eigendecomposition problem for A into the eigendecomposition problem for T.

  1. For tridiagonal matrices, there exist a number of specialised algorithms, often with better computational complexity than general-purpose algorithms. For example, if T is an mtimes m tridiagonal symmetric matrix then:
  2. Some general eigendecomposition algorithms, notably the QR algorithm, are known to converge faster for tridiagonal matrices than for general matrices. Asymptotic complexity of tridiagonal QR is {displaystyle O(m^{2})} just as for the divide-and-conquer algorithm (though the constant factor may be different); since the eigenvectors together have m^{2} elements, this is asymptotically optimal.
  3. Even algorithms whose convergence rates are unaffected by unitary transformations, such as the power method and inverse iteration, may enjoy low-level performance benefits from being applied to the tridiagonal matrix T rather than the original matrix A. Since T is very sparse with all nonzero elements in highly predictable positions, it permits compact storage with excellent performance vis-à-vis caching. Likewise, T is a real matrix with all eigenvectors and eigenvalues real, whereas A in general may have complex elements and eigenvectors, so real arithmetic is sufficient for finding the eigenvectors and eigenvalues of T.
  4. If n is very large, then reducing m so that T is of a manageable size will still allow finding the more extreme eigenvalues and eigenvectors of A; in the {displaystyle mll n} region, the Lanczos algorithm can be viewed as a lossy compression scheme for Hermitian matrices, that emphasises preserving the extreme eigenvalues.

The combination of good performance for sparse matrices and the ability to compute several (without computing all) eigenvalues are the main reasons for choosing to use the Lanczos algorithm.

Application to tridiagonalization[edit]

Though the eigenproblem is often the motivation for applying the Lanczos algorithm, the operation the algorithm primarily performs is tridiagonalization of a matrix, for which numerically stable Householder transformations have been favoured since the 1950s. During the 1960s the Lanczos algorithm was disregarded. Interest in it was rejuvenated by the Kaniel–Paige convergence theory and the development of methods to prevent numerical instability, but the Lanczos algorithm remains the alternative algorithm that one tries only if Householder is not satisfactory.[9]

Aspects in which the two algorithms differ include:

Derivation of the algorithm[edit]

There are several lines of reasoning which lead to the Lanczos algorithm.

A more provident power method[edit]

The power method for finding the eigenvalue of largest magnitude and a corresponding eigenvector of a matrix A is roughly

  1. Pick a random vector {displaystyle u_{1}neq 0}.
  2. For {displaystyle jgeqslant 1} (until the direction of u_{j} has converged) do:
    1. Let {displaystyle u_{j+1}'=Au_{j}.}
    2. Let {displaystyle u_{j+1}=u_{j+1}'/|u_{j+1}'|.}

A critique that can be raised against this method is that it is wasteful: it spends a lot of work (the matrix–vector products in step 2.1) extracting information from the matrix A, but pays attention only to the very last result; implementations typically use the same variable for all the vectors u_{j}, having each new iteration overwrite the results from the previous one. What if we instead kept all the intermediate results and organised their data?

One piece of information that trivially is available from the vectors u_{j} is a chain of Krylov subspaces. One way of stating that without introducing sets into the algorithm is to claim that it computes

a subset {displaystyle {v_{j}}_{j=1}^{m}} of a basis of {displaystyle mathbb {C} ^{n}} such that {displaystyle Axin operatorname {span} (v_{1},dotsc ,v_{j+1})} for every {displaystyle xin operatorname {span} (v_{1},dotsc ,v_{j})} and all {displaystyle 1leqslant j<m;}

this is trivially satisfied by {displaystyle v_{j}=u_{j}} as long as u_{j} is linearly independent of {displaystyle u_{1},dotsc ,u_{j-1}} (and in the case that there is such a dependence then one may continue the sequence by picking as v_{j} an arbitrary vector linearly independent of {displaystyle u_{1},dotsc ,u_{j-1}}). A basis containing the u_{j} vectors is however likely to be numerically ill-conditioned, since this sequence of vectors is by design meant to converge to an eigenvector of A. To avoid that, one can combine the power iteration with a Gram–Schmidt process, to instead produce an orthonormal basis of these Krylov subspaces.

  1. Pick a random vector u_{1} of Euclidean norm 1. Let {displaystyle v_{1}=u_{1}}.
  2. For {displaystyle j=1,dotsc ,m-1} do:
    1. Let {displaystyle u_{j+1}'=Au_{j}}.
    2. For all {displaystyle k=1,dotsc ,j} let {displaystyle g_{k,j}=v_{k}^{*}u_{j+1}'}. (These are the coordinates of {displaystyle Au_{j}=u_{j+1}'} with respect to the basis vectors {displaystyle v_{1},dotsc ,v_{j}}.)
    3. Let {displaystyle w_{j+1}=u_{j+1}'-sum _{k=1}^{j}g_{k,j}v_{k}}. (Cancel the component of {displaystyle u_{j+1}'} that is in {displaystyle operatorname {span} (v_{1},dotsc ,v_{j})}.)
    4. If {displaystyle w_{j+1}neq 0} then let {displaystyle u_{j+1}=u_{j+1}'/|u_{j+1}'|} and {displaystyle v_{j+1}=w_{j+1}/|w_{j+1}|},
      otherwise pick as {displaystyle u_{j+1}=v_{j+1}} an arbitrary vector of Euclidean norm 1 that is orthogonal to all of {displaystyle v_{1},dotsc ,v_{j}}.

The relation between the power iteration vectors u_{j} and the orthogonal vectors v_{j} is that

{displaystyle Au_{j}=|u_{j+1}'|u_{j+1}=u_{j+1}'=w_{j+1}+sum _{k=1}^{j}g_{k,j}v_{k}=|w_{j+1}|v_{j+1}+sum _{k=1}^{j}g_{k,j}v_{k}}.

Here it may be observed that we do not actually need the u_{j} vectors to compute these v_{j}, because {displaystyle u_{j}-v_{j}in operatorname {span} (v_{1},dotsc ,v_{j-1})} and therefore the difference between {displaystyle u_{j+1}'=Au_{j}} and {displaystyle w_{j+1}'=Av_{j}} is in {displaystyle operatorname {span} (v_{1},dotsc ,v_{j})}, which is cancelled out by the orthogonalisation process. Thus the same basis for the chain of Krylov subspaces is computed by

  1. Pick a random vector v_{1} of Euclidean norm 1.
  2. For {displaystyle j=1,dotsc ,m-1} do:
    1. Let {displaystyle w_{j+1}'=Av_{j}}.
    2. For all {displaystyle k=1,dotsc ,j} let {displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'}.
    3. Let {displaystyle w_{j+1}=w_{j+1}'-sum _{k=1}^{j}h_{k,j}v_{k}}.
    4. Let {displaystyle h_{j+1,j}=|w_{j+1}|}.
    5. If {displaystyle h_{j+1,j}neq 0} then let {displaystyle v_{j+1}=w_{j+1}/h_{j+1,j}},
      otherwise pick as {displaystyle v_{j+1}} an arbitrary vector of Euclidean norm 1 that is orthogonal to all of {displaystyle v_{1},dotsc ,v_{j}}.

A priori the coefficients {displaystyle h_{k,j}} satisfy

{displaystyle Av_{j}=sum _{k=1}^{j+1}h_{k,j}v_{k}} for all {displaystyle j<m};

the definition {displaystyle h_{j+1,j}=|w_{j+1}|} may seem a bit odd, but fits the general pattern {displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'} since

{displaystyle v_{j+1}^{*}w_{j+1}'=v_{j+1}^{*}w_{j+1}=|w_{j+1}|v_{j+1}^{*}v_{j+1}=|w_{j+1}|.}

Because the power iteration vectors u_{j} that were eliminated from this recursion satisfy {displaystyle u_{j}in operatorname {span} (v_{1},ldots ,v_{j}),} the vectors {displaystyle {v_{j}}_{j=1}^{m}} and coefficients {displaystyle h_{k,j}} contain enough information from A that all of u_{1},ldots ,u_{m} can be computed, so nothing was lost by switching vectors. (Indeed, it turns out that the data collected here give significantly better approximations of the largest eigenvalue than one gets from an equal number of iterations in the power method, although that is not necessarily obvious at this point.)

This last procedure is the Arnoldi iteration. The Lanczos algorithm then arises as the simplification one gets from eliminating calculation steps that turn out to be trivial when A is Hermitian—in particular most of the {displaystyle h_{k,j}} coefficients turn out to be zero.

Elementarily, if A is Hermitian then

{displaystyle h_{k,j}=v_{k}^{*}w_{j+1}'=v_{k}^{*}Av_{j}=v_{k}^{*}A^{*}v_{j}=(Av_{k})^{*}v_{j}.}

For {displaystyle k<j-1} we know that {displaystyle Av_{k}in operatorname {span} (v_{1},ldots ,v_{j-1})}, and since v_{j} by construction is orthogonal to this subspace, this inner product must be zero. (This is essentially also the reason why sequences of orthogonal polynomials can always be given a three-term recurrence relation.) For {displaystyle k=j-1} one gets

{displaystyle h_{j-1,j}=(Av_{j-1})^{*}v_{j}={overline {v_{j}^{*}Av_{j-1}}}={overline {h_{j,j-1}}}=h_{j,j-1}}

since the latter is real on account of being the norm of a vector. For {displaystyle k=j} one gets

{displaystyle h_{j,j}=(Av_{j})^{*}v_{j}={overline {v_{j}^{*}Av_{j}}}={overline {h_{j,j}}},}

meaning this is real too.

More abstractly, if V is the matrix with columns {displaystyle v_{1},ldots ,v_{m}} then the numbers {displaystyle h_{k,j}} can be identified as elements of the matrix {displaystyle H=V^{*}AV}, and {displaystyle h_{k,j}=0} for {displaystyle k>j+1;} the matrix H is upper Hessenberg. Since

{displaystyle H^{*}=left(V^{*}AVright)^{*}=V^{*}A^{*}V=V^{*}AV=H}

the matrix H is Hermitian. This implies that H is also lower Hessenberg, so it must in fact be tridiagional. Being Hermitian, its main diagonal is real, and since its first subdiagonal is real by construction, the same is true for its first superdiagonal. Therefore, H is a real, symmetric matrix—the matrix T of the Lanczos algorithm specification.

Simultaneous approximation of extreme eigenvalues[edit]

One way of characterising the eigenvectors of a Hermitian matrix A is as stationary points of the Rayleigh quotient

{displaystyle r(x)={frac {x^{*}Ax}{x^{*}x}},qquad xin mathbb {C} ^{n}.}

In particular, the largest eigenvalue lambda_max is the global maximum of r and the smallest eigenvalue lambda_min is the global minimum of r.

Within a low-dimensional subspace {mathcal {L}} of {displaystyle mathbb {C} ^{n}} it can be feasible to locate the maximum x and minimum y of r. Repeating that for an increasing chain {displaystyle {mathcal {L}}_{1}subset {mathcal {L}}_{2}subset cdots } produces two sequences of vectors: x_1, x_2, ldots and {displaystyle y_{1},y_{2},dotsc } such that {displaystyle x_{j},y_{j}in {mathcal {L}}_{j}} and

{displaystyle {begin{aligned}r(x_{1})&leqslant r(x_{2})leqslant cdots leqslant lambda _{max }\r(y_{1})&geqslant r(y_{2})geqslant cdots geqslant lambda _{min }end{aligned}}}

The question then arises how to choose the subspaces so that these sequences converge at optimal rate.

From x_{j}, the optimal direction in which to seek larger values of r is that of the gradient {displaystyle nabla r(x_{j})}, and likewise from y_{j} the optimal direction in which to seek smaller values of r is that of the negative gradient {displaystyle -nabla r(y_{j})}. In general

{displaystyle nabla r(x)={frac {2}{x^{*}x}}(Ax-r(x)x),}

so the directions of interest are easy enough to compute in matrix arithmetic, but if one wishes to improve on both x_{j} and y_{j} then there are two new directions to take into account: {displaystyle Ax_{j}} and {displaystyle Ay_{j};} since x_{j} and y_{j} can be linearly independent vectors (indeed, are close to orthogonal), one cannot in general expect {displaystyle Ax_{j}} and {displaystyle Ay_{j}} to be parallel. Is it therefore necessary to increase the dimension of mathcal{L}_j by 2 on every step? Not if {displaystyle {{mathcal {L}}_{j}}_{j=1}^{m}} are taken to be Krylov subspaces, because then {displaystyle Azin {mathcal {L}}_{j+1}} for all {displaystyle zin {mathcal {L}}_{j},} thus in particular for both {displaystyle z=x_{j}} and {displaystyle z=y_{j}}.

In other words, we can start with some arbitrary initial vector {displaystyle x_{1}=y_{1},} construct the vector spaces

{displaystyle {mathcal {L}}_{j}=operatorname {span} (x_{1},Ax_{1},ldots ,A^{j-1}x_{1})}

and then seek {displaystyle x_{j},y_{j}in {mathcal {L}}_{j}} such that

{displaystyle r(x_{j})=max _{zin {mathcal {L}}_{j}}r(z)qquad {text{and}}qquad r(y_{j})=min _{zin {mathcal {L}}_{j}}r(z).}

Since the jth power method iterate u_{j} belongs to {displaystyle {mathcal {L}}_{j},} it follows that an iteration to produce the x_{j} and y_{j} cannot converge slower than that of the power method, and will achieve more by approximating both eigenvalue extremes. For the subproblem of optimising r on some {displaystyle {mathcal {L}}_{j}}, it is convenient to have an orthonormal basis {displaystyle {v_{1},ldots ,v_{j}}} for this vector space. Thus we are again led to the problem of iteratively computing such a basis for the sequence of Krylov subspaces.

Convergence and other dynamics[edit]

When analysing the dynamics of the algorithm, it is convenient to take the eigenvalues and eigenvectors of A as given, even though they are not explicitly known to the user. To fix notation, let {displaystyle lambda _{1}geqslant lambda _{2}geqslant dotsb geqslant lambda _{n}} be the eigenvalues (these are known to all be real, and thus possible to order) and let {displaystyle z_{1},dotsc ,z_{n}} be an orthonormal set of eigenvectors such that {displaystyle Az_{k}=lambda _{k}z_{k}} for all {displaystyle k=1,dotsc ,n}.

It is also convenient to fix a notation for the coefficients of the initial Lanczos vector v_{1} with respect to this eigenbasis; let {displaystyle d_{k}=z_{k}^{*}v_{1}} for all {displaystyle k=1,dotsc ,n}, so that {displaystyle textstyle v_{1}=sum _{k=1}^{n}d_{k}z_{k}}. A starting vector v_{1} depleted of some eigencomponent will delay convergence to the corresponding eigenvalue, and even though this just comes out as a constant factor in the error bounds, depletion remains undesirable. One common technique for avoiding being consistently hit by it is to pick v_{1} by first drawing the elements randomly according to the same normal distribution with mean {displaystyle 0} and then rescale the vector to norm 1. Prior to the rescaling, this causes the coefficients d_{k} to also be independent normally distributed stochastic variables from the same normal distribution (since the change of coordinates is unitary), and after rescaling the vector {displaystyle (d_{1},dotsc ,d_{n})} will have a uniform distribution on the unit sphere in mathbb {C} ^{n}. This makes it possible to bound the probability that for example {displaystyle |d_{1}|<varepsilon }.

The fact that the Lanczos algorithm is coordinate-agnostic – operations only look at inner products of vectors, never at individual elements of vectors – makes it easy to construct examples with known eigenstructure to run the algorithm on: make A a diagonal matrix with the desired eigenvalues on the diagonal; as long as the starting vector v_{1} has enough nonzero elements, the algorithm will output a general tridiagonal symmetric matrix as T.

Kaniel–Paige convergence theory[edit]

After m iteration steps of the Lanczos algorithm, T is an mtimes m real symmetric matrix, that similarly to the above has m eigenvalues {displaystyle theta _{1}geqslant theta _{2}geqslant dots geqslant theta _{m}.} By convergence is primarily understood the convergence of theta _{1} to lambda _{1} (and the symmetrical convergence of theta _{m} to lambda _{n}) as m grows, and secondarily the convergence of some range {displaystyle theta _{1},ldots ,theta _{k}} of eigenvalues of T to their counterparts {displaystyle lambda _{1},ldots ,lambda _{k}} of A. The convergence for the Lanczos algorithm is often orders of magnitude faster than that for the power iteration algorithm.[9]: 477 

The bounds for theta _{1} come from the above interpretation of eigenvalues as extreme values of the Rayleigh quotient r(x). Since lambda _{1} is a priori the maximum of r on the whole of {displaystyle mathbb {C} ^{n},} whereas theta _{1} is merely the maximum on an m-dimensional Krylov subspace, we trivially get {displaystyle lambda _{1}geqslant theta _{1}}. Conversely, any point x in that Krylov subspace provides a lower bound r(x) for theta _{1}, so if a point can be exhibited for which {displaystyle lambda _{1}-r(x)} is small then this provides a tight bound on theta _{1}.

The dimension m Krylov subspace is

{displaystyle operatorname {span} left{v_{1},Av_{1},A^{2}v_{1},ldots ,A^{m-1}v_{1}right},}

so any element of it can be expressed as {displaystyle p(A)v_{1}} for some polynomial p of degree at most m-1; the coefficients of that polynomial are simply the coefficients in the linear combination of the vectors {displaystyle v_{1},Av_{1},A^{2}v_{1},ldots ,A^{m-1}v_{1}}. The polynomial we want will turn out to have real coefficients, but for the moment we should allow also for complex coefficients, and we will write p^{*} for the polynomial obtained by complex conjugating all coefficients of p. In this parametrisation of the Krylov subspace, we have

{displaystyle r(p(A)v_{1})={frac {(p(A)v_{1})^{*}Ap(A)v_{1}}{(p(A)v_{1})^{*}p(A)v_{1}}}={frac {v_{1}^{*}p(A)^{*}Ap(A)v_{1}}{v_{1}^{*}p(A)^{*}p(A)v_{1}}}={frac {v_{1}^{*}p^{*}(A^{*})Ap(A)v_{1}}{v_{1}^{*}p^{*}(A^{*})p(A)v_{1}}}={frac {v_{1}^{*}p^{*}(A)Ap(A)v_{1}}{v_{1}^{*}p^{*}(A)p(A)v_{1}}}}

Using now the expression for v_{1} as a linear combination of eigenvectors, we get

{displaystyle Av_{1}=Asum _{k=1}^{n}d_{k}z_{k}=sum _{k=1}^{n}d_{k}lambda _{k}z_{k}}

and more generally

{displaystyle q(A)v_{1}=sum _{k=1}^{n}d_{k}q(lambda _{k})z_{k}}

for any polynomial q.

Thus

{displaystyle lambda _{1}-r(p(A)v_{1})=lambda _{1}-{frac {v_{1}^{*}sum _{k=1}^{n}d_{k}p^{*}(lambda _{k})lambda _{k}p(lambda _{k})z_{k}}{v_{1}^{*}sum _{k=1}^{n}d_{k}p^{*}(lambda _{k})p(lambda _{k})z_{k}}}=lambda _{1}-{frac {sum _{k=1}^{n}|d_{k}|^{2}lambda _{k}p(lambda _{k})^{*}p(lambda _{k})}{sum _{k=1}^{n}|d_{k}|^{2}p(lambda _{k})^{*}p(lambda _{k})}}={frac {sum _{k=1}^{n}|d_{k}|^{2}(lambda _{1}-lambda _{k})left|p(lambda _{k})right|^{2}}{sum _{k=1}^{n}|d_{k}|^{2}left|p(lambda _{k})right|^{2}}}.}

A key difference between numerator and denominator here is that the k=1 term vanishes in the numerator, but not in the denominator. Thus if one can pick p to be large at lambda _{1} but small at all other eigenvalues, one will get a tight bound on the error {displaystyle lambda _{1}-theta _{1}}.

Since A has many more eigenvalues than p has coefficients, this may seem a tall order, but one way to meet it is to use Chebyshev polynomials. Writing c_{k} for the degree k Chebyshev polynomial of the first kind (that which satisfies {displaystyle c_{k}(cos x)=cos(kx)} for all x), we have a polynomial which stays in the range [-1,1] on the known interval [-1,1] but grows rapidly outside it. With some scaling of the argument, we can have it map all eigenvalues except lambda _{1} into [-1,1]. Let

{displaystyle p(x)=c_{m-1}left({frac {2x-lambda _{2}-lambda _{n}}{lambda _{2}-lambda _{n}}}right)}

(in case {displaystyle lambda _{2}=lambda _{1}}, use instead the largest eigenvalue strictly less than lambda _{1}), then the maximal value of {displaystyle |p(lambda _{k})|^{2}} for {displaystyle kgeqslant 2} is 1 and the minimal value is {displaystyle 0}, so

{displaystyle lambda _{1}-theta _{1}leqslant lambda _{1}-r(p(A)v_{1})={frac {sum _{k=2}^{n}|d_{k}|^{2}(lambda _{1}-lambda _{k})|p(lambda _{k})|^{2}}{sum _{k=1}^{n}|d_{k}|^{2}|p(lambda _{k})|^{2}}}leqslant {frac {sum _{k=2}^{n}|d_{k}|^{2}(lambda _{1}-lambda _{k})}{|d_{1}|^{2}|p(lambda _{1})|^{2}}}leqslant {frac {(lambda _{1}-lambda _{n})sum _{k=2}^{n}|d_{k}|^{2}}{|p(lambda _{1})|^{2}|d_{1}|^{2}}}.}

Furthermore

{displaystyle p(lambda _{1})=c_{m-1}left({frac {2lambda _{1}-lambda _{2}-lambda _{n}}{lambda _{2}-lambda _{n}}}right)=c_{m-1}left(2{frac {lambda _{1}-lambda _{2}}{lambda _{2}-lambda _{n}}}+1right);}

the quantity

{displaystyle rho ={frac {lambda _{1}-lambda _{2}}{lambda _{2}-lambda _{n}}}}

(i.e., the ratio of the first eigengap to the diameter of the rest of the spectrum) is thus of key importance for the convergence rate here. Also writing

{displaystyle R=e^{operatorname {arcosh} (1+2rho )}=1+2rho +2{sqrt {rho ^{2}+rho }},}

we may conclude that

{displaystyle {begin{aligned}lambda _{1}-theta _{1}&leqslant {frac {(lambda _{1}-lambda _{n})left(1-|d_{1}|^{2}right)}{c_{m-1}(2rho +1)^{2}|d_{1}|^{2}}}\[6pt]&={frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(lambda _{1}-lambda _{n}){frac {1}{cosh ^{2}((m-1)operatorname {arcosh} (1+2rho ))}}\[6pt]&={frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(lambda _{1}-lambda _{n}){frac {4}{left(R^{m-1}+R^{-(m-1)}right)^{2}}}\[6pt]&leqslant 4{frac {1-|d_{1}|^{2}}{|d_{1}|^{2}}}(lambda _{1}-lambda _{n})R^{-2(m-1)}end{aligned}}}

The convergence rate is thus controlled chiefly by R, since this bound shrinks by a factor {displaystyle R^{-2}} for each extra iteration.

For comparison, one may consider how the convergence rate of the power method depends on rho , but since the power method primarily is sensitive to the quotient between absolute values of the eigenvalues, we need {displaystyle |lambda _{n}|leqslant |lambda _{2}|} for the eigengap between lambda _{1} and lambda _{2} to be the dominant one. Under that constraint, the case that most favours the power method is that {displaystyle lambda _{n}=-lambda _{2}}, so consider that. Late in the power method, the iteration vector:

{displaystyle u=(1-t^{2})^{1/2}z_{1}+tz_{2}approx z_{1}+tz_{2},}[note 1]

where each new iteration effectively multiplies the z_{2}-amplitude t by

{displaystyle {frac {lambda _{2}}{lambda _{1}}}={frac {lambda _{2}}{lambda _{2}+(lambda _{1}-lambda _{2})}}={frac {1}{1+{frac {lambda _{1}-lambda _{2}}{lambda _{2}}}}}={frac {1}{1+2rho }}.}

The estimate of the largest eigenvalue is then

{displaystyle u^{*}Au=(1-t^{2})lambda _{1}+t^{2}lambda _{2},}

so the above bound for the Lanczos algorithm convergence rate should be compared to

{displaystyle lambda _{1}-u^{*}Au=(lambda _{1}-lambda _{2})t^{2},}

which shrinks by a factor of {displaystyle (1+2rho )^{-2}} for each iteration. The difference thus boils down to that between {displaystyle 1+2rho } and {displaystyle R=1+2rho +2{sqrt {rho ^{2}+rho }}}. In the {displaystyle rho gg 1} region, the latter is more like {displaystyle 1+4rho }, and performs like the power method would with an eigengap twice as large; a notable improvement. The more challenging case is however that of {displaystyle rho ll 1,} in which {displaystyle Rapprox 1+2{sqrt {rho }}} is an even larger improvement on the eigengap; the {displaystyle rho gg 1} region is where the Lanczos algorithm convergence-wise makes the smallest improvement on the power method.

Numerical stability[edit]

Stability means how much the algorithm will be affected (i.e. will it produce the approximate result close to the original one) if there are small numerical errors introduced and accumulated. Numerical stability is the central criterion for judging the usefulness of implementing an algorithm on a computer with roundoff.

For the Lanczos algorithm, it can be proved that with exact arithmetic, the set of vectors v_{1},v_{2},cdots ,v_{{m+1}} constructs an orthonormal basis, and the eigenvalues/vectors solved are good approximations to those of the original matrix. However, in practice (as the calculations are performed in floating point arithmetic where inaccuracy is inevitable), the orthogonality is quickly lost and in some cases the new vector could even be linearly dependent on the set that is already constructed. As a result, some of the eigenvalues of the resultant tridiagonal matrix may not be approximations to the original matrix. Therefore, the Lanczos algorithm is not very stable.

Users of this algorithm must be able to find and remove those «spurious» eigenvalues. Practical implementations of the Lanczos algorithm go in three directions to fight this stability issue:[6][7]

  1. Prevent the loss of orthogonality,
  2. Recover the orthogonality after the basis is generated.
  3. After the good and «spurious» eigenvalues are all identified, remove the spurious ones.

Variations[edit]

Variations on the Lanczos algorithm exist where the vectors involved are tall, narrow matrices instead of vectors and the normalizing constants are small square matrices. These are called «block» Lanczos algorithms and can be much faster on computers with large numbers of registers and long memory-fetch times.

Many implementations of the Lanczos algorithm restart after a certain number of iterations. One of the most influential restarted variations is the implicitly restarted Lanczos method,[10] which is implemented in ARPACK.[11] This has led into a number of other restarted variations such as restarted Lanczos bidiagonalization.[12] Another successful restarted variation is the Thick-Restart Lanczos method,[13] which has been implemented in a software package called TRLan.[14]

Nullspace over a finite field[edit]

In 1995, Peter Montgomery published an algorithm, based on the Lanczos algorithm, for finding elements of the nullspace of a large sparse matrix over GF(2); since the set of people interested in large sparse matrices over finite fields and the set of people interested in large eigenvalue problems scarcely overlap, this is often also called the block Lanczos algorithm without causing unreasonable confusion.[citation needed]

Applications[edit]

Lanczos algorithms are very attractive because the multiplication by A, is the only large-scale linear operation. Since weighted-term text retrieval engines implement just this operation, the Lanczos algorithm can be applied efficiently to text documents (see latent semantic indexing). Eigenvectors are also important for large-scale ranking methods such as the HITS algorithm developed by Jon Kleinberg, or the PageRank algorithm used by Google.

Lanczos algorithms are also used in condensed matter physics as a method for solving Hamiltonians of strongly correlated electron systems,[15] as well as in shell model codes in nuclear physics.[16]

Implementations[edit]

The NAG Library contains several routines[17] for the solution of large scale linear systems and eigenproblems which use the Lanczos algorithm.

MATLAB and GNU Octave come with ARPACK built-in. Both stored and implicit matrices can be analyzed through the eigs() function (Matlab/Octave).

Similarly, in Python, the SciPy package has scipy.sparse.linalg.eigsh which is also a wrapper for the SSEUPD and DSEUPD functions functions from ARPACK which use the Implicitly Restarted Lanczos Method.

A Matlab implementation of the Lanczos algorithm (note precision issues) is available as a part of the Gaussian Belief Propagation Matlab Package. The GraphLab[18] collaborative filtering library incorporates a large scale parallel implementation of the Lanczos algorithm (in C++) for multicore.

The PRIMME library also implements a Lanczos-like algorithm.

Notes[edit]

References[edit]

  1. ^ Lanczos, C. (1950). «An iteration method for the solution of the eigenvalue problem of linear differential and integral operators» (PDF). Journal of Research of the National Bureau of Standards. 45 (4): 255–282. doi:10.6028/jres.045.026.
  2. ^ a b Ojalvo, I. U.; Newman, M. (1970). «Vibration modes of large structures by an automatic matrix-reduction method». AIAA Journal. 8 (7): 1234–1239. Bibcode:1970AIAAJ…8.1234N. doi:10.2514/3.5878.
  3. ^ Paige, C. C. (1971). The computation of eigenvalues and eigenvectors of very large sparse matrices (Ph.D. thesis). U. of London. OCLC 654214109.
  4. ^ Paige, C. C. (1972). «Computational Variants of the Lanczos Method for the Eigenproblem». J. Inst. Maths Applics. 10 (3): 373–381. doi:10.1093/imamat/10.3.373.
  5. ^ Ojalvo, I. U. (1988). «Origins and advantages of Lanczos vectors for large dynamic systems». Proc. 6th Modal Analysis Conference (IMAC), Kissimmee, FL. pp. 489–494.
  6. ^ a b Cullum; Willoughby (1985). Lanczos Algorithms for Large Symmetric Eigenvalue Computations. Vol. 1. ISBN 0-8176-3058-9.
  7. ^ a b Yousef Saad (1992-06-22). Numerical Methods for Large Eigenvalue Problems. ISBN 0-470-21820-7.
  8. ^ Coakley, Ed S.; Rokhlin, Vladimir (2013). «A fast divide-and-conquer algorithm for computing the spectra of real symmetric tridiagonal matrices». Applied and Computational Harmonic Analysis. 34 (3): 379–414. doi:10.1016/j.acha.2012.06.003.
  9. ^ a b Golub, Gene H.; Van Loan, Charles F. (1996). Matrix computations (3. ed.). Baltimore: Johns Hopkins Univ. Press. ISBN 0-8018-5413-X.
  10. ^ D. Calvetti; L. Reichel; D.C. Sorensen (1994). «An Implicitly Restarted Lanczos Method for Large Symmetric Eigenvalue Problems». Electronic Transactions on Numerical Analysis. 2: 1–21.
  11. ^ R. B. Lehoucq; D. C. Sorensen; C. Yang (1998). ARPACK Users Guide: Solution of Large-Scale Eigenvalue Problems with Implicitly Restarted Arnoldi Methods. SIAM. doi:10.1137/1.9780898719628. ISBN 978-0-89871-407-4.
  12. ^ E. Kokiopoulou; C. Bekas; E. Gallopoulos (2004). «Computing smallest singular triplets with implicitly restarted Lanczos bidiagonalization» (PDF). Appl. Numer. Math. 49: 39–61. doi:10.1016/j.apnum.2003.11.011.
  13. ^ Kesheng Wu; Horst Simon (2000). «Thick-Restart Lanczos Method for Large Symmetric Eigenvalue Problems». SIAM Journal on Matrix Analysis and Applications. SIAM. 22 (2): 602–616. doi:10.1137/S0895479898334605.
  14. ^ Kesheng Wu; Horst Simon (2001). «TRLan software package». Archived from the original on 2007-07-01. Retrieved 2007-06-30.
  15. ^ Chen, HY; Atkinson, W.A.; Wortis, R. (July 2011). «Disorder-induced zero-bias anomaly in the Anderson-Hubbard model: Numerical and analytical calculations». Physical Review B. 84 (4): 045113. arXiv:1012.1031. Bibcode:2011PhRvB..84d5113C. doi:10.1103/PhysRevB.84.045113. S2CID 118722138.
  16. ^ Shimizu, Noritaka (21 October 2013). «Nuclear shell-model code for massive parallel computation, «KSHELL»«. arXiv:1310.5431 [nucl-th].
  17. ^ The Numerical Algorithms Group. «Keyword Index: Lanczos». NAG Library Manual, Mark 23. Retrieved 2012-02-09.
  18. ^ GraphLab Archived 2011-03-14 at the Wayback Machine

Further reading[edit]

  • Golub, Gene H.; Van Loan, Charles F. (1996). «Lanczos Methods». Matrix Computations. Baltimore: Johns Hopkins University Press. pp. 470–507. ISBN 0-8018-5414-8.
  • Ng, Andrew Y.; Zheng, Alice X.; Jordan, Michael I. (2001). «Link Analysis, Eigenvectors and Stability» (PDF). IJCAI’01 Proceedings of the 17th International Joint Conference on Artificial Intelligence. 2: 903–910.

Введение

При решении задач сейсмического анализа зданий и сооружений чаще всего применяется линейно-спектральный метод. Значительной по трудоемкости составляющей этого подхода является определение частот и форм собственных колебаний. При этом возникает вопрос: а сколько частот и форм собственных колебаний следует удерживать, чтобы результат был достоверным? В сейсмических нормах многих стран (Еврокод 8, UBC-97, сейсмические нормы Украины и др.) принято, что сумма модальных масс по каждому из направлений сейсмического воздействия должна быть не менее установленной границы. Обычно для горизонтальной составляющей сейсмического воздействия принимается 85−90%, для вертикальной — 70−90%. Под направлением сейсмического воздействия понимается направление, совпадающее с одной из осей глобальной системы координат OXYZ расчетной модели сооружения. Считается, что сейсмическое воздействие поочередно прикладывается вдоль каждой оси, причем принимается гипотеза об их статистической независимости [5, 8].

Модальной массой при сейсмическом воздействии в направлении dir (dir = OX, OY, OZ) называется величина

(1)

, где Гidir = (Mψi, Idir), M — матрица масс, ψi — собственный вектор (форма колебаний, отвечающая i-й частоте), Idir — вектор, компоненты которого равны 1, если соответствуют степени свободы сейсмического входа по направлению dir, и нулю в противном случае,

— общая масса, участвующая в движении по направлению dir.

Суммой модальных масс по направлению dir называется величина
, причем

(2)

, где N — количество степеней свободы дискретной модели [3, 5, 8], n — количество удерживаемых собственных форм, n < < N.

В [3] на примере простой задачи показана зависимость некоторых внутренних усилий от суммы модальных масс (рис. 1).


Рис. 1

Рис. 1

Здесь NΛ = NA ⁄ NA100; VΛ = V ⁄ V100; MΛ = Mov ⁄ Mov100, NA — продольная сила в стержне А, V — суммарная сдвигающая сила в основании, Mov — опрокидывающий момент. Символ 100 означает, что этот фактор получен при удержании в решении всех собственных форм дискретной модели (100% модальных масс).

Рис. 1 иллюстрирует тот факт, что для получения достоверной сейсмической реакции сооружения необходимо удерживать такое количество собственных форм, чтобы обеспечить высокий процент модальных масс (не менее 80%). При этом, разумеется, расчетная модель должна достаточно достоверно описывать поведение системы.

Таким образом, сумма модальных масс в сейсмическом анализе используется как индикатор достаточного количества удерживаемых форм колебаний.

При решении ряда задач было обнаружено, что суммы модальных масс сходятся крайне неравномерно и очень медленно [2]. При работе с расчетными моделями, содержащими большое количество степеней свободы (несколько сот тысяч), возникает серьезная проблема определения большого количества частот и форм собственных колебаний (порядка нескольких тысяч), представляющая собой сложную вычислительную задачу.

В этой работе представлен один из методов решения — блочный метод Ланцоша со сдвигами, реализованный автором в программном комплексе SCAD.

Блочный метод Ланцоша со сдвигами

В основу этой статьи положена работа Р. Граймса, Дж. Льюиса и Г. Саймона «A shifted block Lanczos algorithm for solving sparse symmetric generalized eigenproblems» [7]. Алгоритм данной реализации метода приведен в [4], а ее внедрение в программный комплекс SCAD представлено в [1]. Отметим, что блочная версия алгоритма позволяет сократить медленные операции ввода-вывода по сравнению с классической (неблочной) версией. Введение сдвигов существенно улучшает сходимость, а в случае определения большого количества собственных пар разделяет длинный частотный интервал на относительно короткие подинтервалы, ограничивая тем самым размерность пространства Крылова и заменяя экспоненциальный рост количества вычислений квазилинейным. Если исходная задача на собственные значения представляется как
(3)

, где K, M — соответственно положительно определенная разреженная матрица жесткости и полуопределенная матрица масс, {λ, ψ} — собственная пара. Вводя сдвиги σ12,…,σk, разбиваем этот частотный интервал на к+1 подинтервалов, на каждом из которых решаем задачу

(4)

где Kσ = K — σkM, λk = 1 ⁄ (ω2 — σk).

Таким образом, на каждом частотном подинтервале решается отдельная задача (4). Алгоритм выглядит так: при отсутствии какой-либо информации о спектре собственных частот полагаем σ1 = 0. Затем выполняем L шагов блочного метода Ланцоша и определяем сошедшиеся собственные пары. Далее анализируется сумма модальных масс для сошедшихся собственных пар. Если хотя бы по одному из направлений сейсмического входа сумма модальных масс меньше указанной, осуществляется переход к новому частотному интервалу. Кроме сошедшихся собственных пар имеются приближения собственных частот, которые еще не сошлись. Именно они используются для прогнозирования нового значения параметра сдвига σ2. Приняв сдвиг на основе такого прогноза, продолжаем вычисления на новом частотном интервале до тех пор, пока не определим все собственные числа, лежащие слева от сдвига и справа от последнего собственного числа, соответствующего сошедшейся собственной паре с предыдущего частотного интервала. Затем снова определяем суммы модальных масс. И так до тех пор, пока не будет достигнута достаточная сумма модальных масс.

Пример расчета

На рис. 2 приведена расчетная модель здания, включающая 8937 узлов, 9073 конечных элементов и 52 572 уравнения.


Рис. 2. Расчетная модель здания

Рис. 2. Расчетная модель здания

По количеству уравнений эта задача на сегодняшний день относится к классу средних, однако по сложности решения обобщенной проблемы собственных значений она очень трудна, так как вследствие значительной жесткости несущих конструкций в нижней части спектра расположены локальные формы колебаний (рис. 3, 4), и только форма колебаний, соответствующая 522-й частоте (рис. 5), существенно влияет на сейсмическую реакцию сооружения (m522ox = 29%, тогда как
).


Рис. 3. Первая форма колебаний, частота 4,183 Гц

Рис. 3. Первая форма колебаний, частота 4,183 Гц


Рис. 4. Четвертая форма колебаний, частота 4,365 Гц

Рис. 4. Четвертая форма колебаний, частота 4,365 Гц

Наибольший вклад дает 523-я форма колебаний, представленная на рис. 5.


Рис. 5. 523-я форма колебаний, частота 5,756 Гц

Рис. 5. 523-я форма колебаний, частота 5,756 Гц

Для обеспечения требуемых сумм модальных масс пришлось определить 2398 собственных пар.


Спектр собственных частот для этой задачи очень густой — в интервале [4.183, 5.756] Гц лежит 523 собственных частоты.
Зависимость сумм модальных масс от количества удерживаемых собственных форм приведена на рис. 6.


Рис. 6. Зависимость сумм модальных масс (Mx, My, Mz) от количества удерживаемых собственных форм

Рис. 6. Зависимость сумм модальных масс (Mx, My, Mz) от количества удерживаемых собственных форм

Выводы

При расчетах зданий и сооружений на сейсмику периодически встречаются задачи, в которых в нижней части спектра лежит большое количество локальных форм колебаний, причем спектр собственных частот является очень густым. Такие задачи создают серьезные проблемы, поскольку вычислительные алгоритмы, реализованные в современных компьютерных системах МКЭ-анализа, как правило, в таких случаях оказываются малоэффективными. Разработанный в программном комплексе SCAD алгоритм блочного метода Ланцоша со сдвигами, реализующий сейсмический режим, позволяет значительно продвинуться в решении этой проблемы.

Литература

  1. Карпиловский В.С., Криксунов Э.З., Фиалко С.Ю. Блочный метод Ланцоша со спектральными трансформациями для решения больших МКЭ задач собственных колебаний. — Вісник Одеського національного морського університету. — 2003, № 10, с. 93−99.
  2. Перельмутер А.В., Карпиловский В.С., Фиалко С.Ю., Егупов К.В. Опыт реализации проекта МСН СНГ «Строительство в сейсмических районах» в программной системе SCAD. — Вісник Одеської державної академії будівництва та архітектури. — 2003, випуск 9, с. 147−159.
  3. Фиалко С.Ю. Некоторые особенности анализа частот и форм собственных колебаний при расчете сооружений на сейсмические воздействия. — Вісник Одеської державної академії будівництва та архітектури. — 2002, випуск 8, с. 193−201.
  4. Фиалко С.Ю. О решении обобщенной проблемы собственных значений. — В кн. Перельмутер А.В., Сливкер В.И. Расчетные модели сооружений и возможность их анализа. — Издание второе. К.: Сталь, 2002, с. 570−597.
  5. Clough R., Penzien J. Dynamics of structures. — New York: McGraw-Hill, Inc., 1975. — 527 p.
  6. Fialko S.Yu., Kriksunov E.Z. and Karpilovskyy V.S. A block Lanczos method with spectral transformations for natural vibrations and seismic analysis of large structures in SCAD software. Proceedings of the CMM-2003 — Computer Methods in Mechanics, June 3−6, 2003. Gliwice, Poland, р. 129−130.
  7. Grimes R.G., Lewis J.G., Simon H.D. A shifted block Lanczos algorithm for solving sparse symmetric generalized eigenproblems. SIAM J. Matrix Anal. Appl. V. 15, 1: pp. 1−45, 1994.
  8. Wilson E.L. Three dimensional dynamic analysis of structures. California, Computers and Structures, Inc., Berkeley, USA, 1996. — 261 p.

Сергей Фиалко

д.т.н., с.н.с., проф.

Киевский национальный университет

строительства и архитектуры

Особенности задания данных сейсмических воздействий

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

  • категория грунта требует изменения сейсмичности площадки (например,
    уменьшения ее на один балл), что приводит к необходимости задания
    6-балльной сейсмики (см., например, таблицу 1 СП 14.13330.2014).
    Учитывая то, что повышение сейсмичности на 1 балл приводит к удвоению
    результата, можно указать сейсмичность пло­щадки как 7-балльную и
    задать значение поправочного коэффициента равным 0,5;
  • необходимо проверить расчетом реально существующую конструкцию
    на воздействие землетрясения интенсив­ностью 8,5 баллов. Достаточно
    указать сейсмичность площадки в 8 баллов и задать значение поправочного
    коэффициента равным 20,5 = 1,414, т.к. значение ускорения
    грунта вычисляется по формуле K*2N
    и (K*28,5)/(K*28) = 1,414.

Требование об учете
крутящего сейсмического момента
 в актуализированной редакции
российских норм «Строительство в сейсмических районах» (СП 14.13330.2014)
формулируется следующим образом:

«5.16 При расчете зданий и сооружений длиной
или шириной более 30 м по консольной
РДМ
помимо сейсмической нагрузки, определяемой по 5.5, необходимо
учитывать крутящий момент относительно вертикальной оси здания или сооружения,
проходящей через его центр жесткости. Значение расчетного эксцентриситета
между центрами жесткостей и масс зданий или сооружений в рассматриваемом
уровне следует принимать не менее 0,1B, где B – размер здания или сооружения
в плане в направлении, перпендикулярном к действию силы Sk».

Аналогичные требования имеются в нормах Украины — ДБН В.1.1-12:2006,
Казахстана — РК 2.03-30-2006 и ряда других стран.

При использовании SCAD обычно
применяются  расчетные динамические модели (РДМ) плоского или
пространственного типов и указанная рекомендация, относящаяся к консольным
РДМ теряет свою силу. Однако расчет на условный крутящий момент может
потребоваться в тех случаях, когда регулярная конструктивная схема под
действием сейсмики претерпевает только поступательные перемещения.

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

Если рассчитываемый объект именно таков и закручивание дисков перекрытий
нет, то рекомендуется искусственно ввести несимметрию в схему. Это можно
сделать, взяв собственный вес (следовательно, и массу) в одной половине
здания с коэффициентом надежности по нагрузке, а в другой половине — без
этого коэффициента. Тогда появится естественное закручивание и не потребуется
использовать рекомендацию п. 5.15 СНиП.

Можно также использовать описанное ниже смещение центров масс этажей.

Сдвиг центров масс

Реальное сейсмическое воздействие отличается тем, что ускорения грунтового
основания под сооружением не являются строго синхронными и за счет этой
неравномерности могут проявляться эффекты закручивания сооружения.

Для учета пространственных изменений движения грунта и погрешностей,
возможных при определении центра масс, в Еврокоде и в нормах республики
Казахстан предлагается  расчетный центр масс на каждом этаже
сместить от своего номинального положения на величину случайного эксцентриситета:

ek=Lkhek,
hek=±0,05fek

где Lk – размер
перекрытия, перпендикулярного к направлению действия сейсмической нагрузки,
fek – коэффициент
учитывающий нерегулярность здания в уровне k-го
этажа (указан в нормах Казахстана).

Смещение ЦМ

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

При заданном направлении сейсмического воздействия размер Lk
определяется автоматически как расстояние между наиболее удаленными друг
от друга узлами, в которых имеются приведенные массы. Поэтому в расчетной
схеме в виде консольного стержня с единственной массой на этаже Lk=0 и никакого смещения
не будет.

Для задания данных о смещении центров масс этажей следует воспользоваться
одноименной кнопкой (предполагается, что предварительно созданы группы
элементов, которые соответствуют различным этажам). Нажатие кнопки приводит
к появлению диалогового окна, в котором с помощью кнопок Добавить и Удалить
можно создать таблицу с данными о требуемых сдвигах центров масс. В первом
столбце этой таблицы из списка имеющихся групп элементов выбирается нужная
группа (этаж), а во втором столбце следует задать описанный выше коэффициент
hek.

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

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

Учет вертикальной
составляющей сейсмической нагрузки
требуется для ряда случаев сейсмической
нагрузки. Но она не может быть учтена автоматически, поскольку в описании
расчетной схемы, принятом в комплексе SCAD
и многих других программах, использующих метод конечных элементов, отсутствуют
такие понятия, как «горизонтальная или наклонная консольная конструкция»,
«пролетное строение моста» или «…пролет более 24 метров». Эти и другие
случаи рассчитываются на действие вертикальной сейсмической нагрузки,
если при задании исходных данных указать ее направление вдоль оси Z.

Расчетные значения
НДС
, например, в соответствии с формулой (8) СП 14.13330.2014,
компоненты сейсмической реакции вычисляются как корень квадратный из суммы
квадратов значений, соответствующих различным формам собственных колебаний.
Это нелинейное преобразование (оценка Розенблюма) приводит к тому, что
перемещения и внутренние усилия не соответствуют друг другу и не удовлетворяют
условиям равновесия, поскольку для разных форм собственных колебаний они
реализуются в различные моменты времени. Этот факт следует учитывать при
анализе результатов расчета. Соответствие указанных компонентов гарантируется
лишь для каждой формы в отдельности.

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

Пример.
Пусть вертикально стоящая консоль с массой на вершине имеет формы колебаний
(векторы записаны в строку) f1(1)={1;
0} и f2(1)={0; 1}.
Тогда при направляющих косинусах {1; 0} мы получим полный учет первой
формы, а вторая форма не сработает, и ответ в некоторых условных единицах
будет {1; 0}. Но, если эта же пара кратных форм определится как f1(2)={0,707; 0,707}
и f2(2) ={0,707; -0,707},
то мы получим ответ {1; 1}. Разнозначные компоненты не уничто­жат
друг друга, так как суммируются квадраты (!)
компонент и затем извлекается корень из суммы.

Остается только заметить, что для кратных собственных значений, характерных
для симме­трич­ных конструкций, когда все направления равноправны, решение
f1(1), f2(1)
и решение f1(2), f2(2) аб­со­лютно равноправны.
Какое из них выберет программа (любая, а не только SCAD),
опре­деляется такими неуправляемыми деталями, как ошибки округления чисел
с плавающей запятой.

Проблема исчезает при расчете по акселерограммам, поскольку там нет
операции «корень из суммы квадратов».

Учет близости частот.
Например, в соответствии с формулой (9) СП 14.13330.2014 компоненты сейсмической
реакции необходимо вычислять с учетом взаимной корреляции близких частот.
При расчете по некоторым нормативным документам можно выбрать способ корреляции,
если разрешено несколько вариантов.

Вычисление остаточных
членов.
Данный маркер указывает программе на необходимость добавить
к множеству собственных форм колебаний «остаточные формы», которые дополнят
сумму модальных масс по соответствующим направлениям до 100%. Этим формам
«приписывается» частота, равная частоте последней формы, которая определена
на основании стандартного модального анализа. Здесь следует обратить внимание
на то, что даже если не определено ни одной собственной пары, то остаточные
формы все равно обеспечат 100% модальных масс (в нормативных документах
вводится следующее требование: определенный процент модальных масс необходимо
набрать «честно» и только остаток разрешается покрыть за счет остаточных
форм). Предполагается, что взаимной корреляции остаточных форм  нет.

Графики коэффициентов
динамичности
— некоторые нормы допускают использование специальных
форм графика (спектра) коэффициентов динамичности. График может быть задан
в виде кусочно-линейной функции и сохраняться в файле с расши­рением .spd. Кроме единого графика предусмотрена
возможность задания до шести графиков — отдельно для каждого направления
воздействия.

Ниже приведен формат файла с описанием графика коэффициентов динамичности.
Аналогичный по формату файл может быть получен с использованием программы-сателлита
Редактор
графика коэффициентов динамичности
, входящей в комплект поставки
системы SCAD Office. Если файл
с графиком выбран, то кнопка , позволяет вызвать Редактор графика коэффициента динамичности
для просмотра графика.

           Спектр
коэффициентов динамичности

           #

           0.030   1.030   0.060   1.45   0.100   2.500    0.147   3.100

           0.202   2.820   0.261   2.64   0.359   2.560    0.464   2.030

           0.681   1.400   1.000   1.06   1.565   0.650    0.966   0.390

До символа # идет комментарий, затем описываются вер­шины ломаной, аппроксимирующей
график, где последо­вательно для каждой точки задаются период в секундах
и значение соответствующего ему коэффициента.

Файлы акселлерограмм
(расширение .spc) используются
при расчетах по акселерограммах. Они должны находиться в том же каталоге,
что и данные задачи. Вместе с комплексом поставляется несколько стандартных
акселлерограмм, которые находятся в каталоге программ. Приведем пример
одной из них, имеющей имя 1m1-z.spc:

   Расчетная акселерограмма в cм/(c*c) для MPЗ   на
площадке атомного реактора.

          Компонента  —  Z.  Mодель
— M1c. Amax =  42.2 cм/(c*c).

          Количество
точек N =  2047; Шаг по времени Dt =  0.05000
c.

#

0.01 2047 0.05

    0.0     0.0    -0.0    -0.3    -0.6    -0.4     0.8     1.8     1.9     0.3

   -1.6    -2.5    -3.5    -2.7
   -1.7    -1.3     2.0     3.6     0.1    -0.6

Ординаты акселлерограммы могут быть заданы в любых единицах измерения.
Первое число после символа # — коэффициент перевода используемых единиц,
на который умножаются заданные значения для получения данных в м/с2.
В данном случае этот коэффициент равен 0,01. Затем следуют количество
точек (2047), шаг по времени (0.05 сек) и последовательно значения ординат.
В качестве разделителя целой и дробной частей используется десятичная
точка. На странице предусмотрено задание масштабного множителя к ординатам
акселлерограммы.

Для упрощения процесса подготовки акселерограмм в SCAD
Office
включена специальная программа Редактор Акселерограмм.
Если файл с акселерограммой выбран, то кнопка ,
позволяет вызвать Редактор Акселерограмм
для просмотра акселерограммы и ее параметров.

Недостаточное количество итераций при определении собственных векторов скад

blank

Да, в новом так не работает, но легко решается через «Спектр жесткостных характеристик».

blank

При возможности посмотрю на очередном расчёте. Не пытались писать письма в SCAD?

blank

Собственно, справка скада:
В случаях, когда выполняется проверка устойчивости по комбинациям загружений, среди которых имеются динамические, требуется проявить некоторую осторожность, связанную с двумя обстоятельствами:

результаты динамического нагружения являются знакопеременными;
в тех случаях, когда результаты динамического расчета сформированы как корень квадратный из суммы квадратов (ККСК) модальных вкладов, нарушены условия равновесия и геометрической связности узловых перемещений.
Рассмотрим эти обстоятельства порознь.

Поскольку заранее неизвестно, какой знак результата динамического расчета является более опасным с точки зрения проверки устойчивости, то следует рассмотреть обе возможности. Так, например, если при расчете устойчивости рассматривается комбинация (L1)*1+(L2)*0.9+(L3)*0.7+(L4)*0.8, в которой нагружение (L3) является динамическим, то следует также выполнить проверку на комбинацию (L1)*1+(L2)*0.9+(L3)*(-0.7)+(L4)*0.8. При наличии нескольких динамических нагружений приходится перебирать все варианты знаков для их результатов.

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

Но несовместность узловых перемещений приводит к тому, что имеющиеся в схеме абсолютно жесткие тела получают искажения (по сути, они деформируются, что не соответствует их физической природе). Сложность состоит в том, что для этих элементов матрица К1(λ), не определяется внутренними силами или напряжениями, а вычисляется по значениям узловых перемещений, которые определяют изменение пространственной ориентации бесконечно жесткого конечного элемента (см. 9.5.1 в работе [3]). Несовместность узловых перемещений может привести к фатальной ошибке при вычислении К1(λ).

В связи с этим программа предусматривает обнуление матрицы К1(λ) при проверке устойчивости для комбинаций содержащих динамическое нагружение с более чем одной учитываемой формой собственных колебаний. Об этом в протоколе расчета появляется соответствующее предупреждение.

Источник

CADmaster

cm 40 scad.pdfpage0

Реализация в программном комплексе SCAD блочного метода Ланцоша со сдвигами применительно к сейсмическому анализу сооружений

Как избежать проблем, возникающих из-за большого количества локальных форм колебаний при расчетах зданий и сооружений на сейсмику? Разработанный в программном комплексе SCAD алгоритм блочного метода Ланцоша со сдвигами, реализующий сейсмический режим, позволяет значительно продвинуться в решении этой задачи.

Скачать статью в формате PDF — 793.8 Кбайт

Главная » CADmaster №5(40) 2007 » Архитектура и строительство Реализация в программном комплексе SCAD блочного метода Ланцоша со сдвигами применительно к сейсмическому анализу сооружений

Введение

cm40 scad form 1 prev

cm40 scad form 31 prev

Суммой модальных масс по направлению dir называется величина cm40 scad form 7 prev, причем

cm40 scad form 8 prev

Рис. 1 иллюстрирует тот факт, что для получения достоверной сейсмической реакции сооружения необходимо удерживать такое количество собственных форм, чтобы обеспечить высокий процент модальных масс (не менее 80%). При этом, разумеется, расчетная модель должна достаточно достоверно описывать поведение системы.

Таким образом, сумма модальных масс в сейсмическом анализе используется как индикатор достаточного количества удерживаемых форм колебаний.

При решении ряда задач было обнаружено, что суммы модальных масс сходятся крайне неравномерно и очень медленно [2]. При работе с расчетными моделями, содержащими большое количество степеней свободы (несколько сот тысяч), возникает серьезная проблема определения большого количества частот и форм собственных колебаний (порядка нескольких тысяч), представляющая собой сложную вычислительную задачу.

В этой работе представлен один из методов решения — блочный метод Ланцоша со сдвигами, реализованный автором в программном комплексе SCAD.

Блочный метод Ланцоша со сдвигами

, где K, M — соответственно положительно определенная разреженная матрица жесткости и полуопределенная матрица масс, <λ, ψ>— собственная пара. Вводя сдвиги σ12,…,σk, разбиваем этот частотный интервал на к+1 подинтервалов, на каждом из которых решаем задачу

cm40 scad form 19 prev

Таким образом, на каждом частотном подинтервале решается отдельная задача (4). Алгоритм выглядит так: при отсутствии какой-либо информации о спектре собственных частот полагаем σ1 = 0. Затем выполняем L шагов блочного метода Ланцоша и определяем сошедшиеся собственные пары. Далее анализируется сумма модальных масс для сошедшихся собственных пар. Если хотя бы по одному из направлений сейсмического входа сумма модальных масс меньше указанной, осуществляется переход к новому частотному интервалу. Кроме сошедшихся собственных пар имеются приближения собственных частот, которые еще не сошлись. Именно они используются для прогнозирования нового значения параметра сдвига σ2. Приняв сдвиг на основе такого прогноза, продолжаем вычисления на новом частотном интервале до тех пор, пока не определим все собственные числа, лежащие слева от сдвига и справа от последнего собственного числа, соответствующего сошедшейся собственной паре с предыдущего частотного интервала. Затем снова определяем суммы модальных масс. И так до тех пор, пока не будет достигнута достаточная сумма модальных масс.

Пример расчета

По количеству уравнений эта задача на сегодняшний день относится к классу средних, однако по сложности решения обобщенной проблемы собственных значений она очень трудна, так как вследствие значительной жесткости несущих конструкций в нижней части спектра расположены локальные формы колебаний (рис. 3, 4), и только форма колебаний, соответствующая 522-й частоте (рис. 5), существенно влияет на сейсмическую реакцию сооружения (m522 ox = 29%, тогда как cm40 scad form 26 prev).

Реальный размер: 1344×1014. Рис. 3. Первая форма колебаний, частота 4,183 Гц’>)» title=»Рис. 3. Первая форма колебаний, частота 4,183 Гц»> cm40 scad ris 3Рис. 3. Первая форма колебаний, частота 4,183 Гц Реальный размер: 1344×1014. Рис. 4. Четвертая форма колебаний, частота 4,365 Гц’>)» title=»Рис. 4. Четвертая форма колебаний, частота 4,365 Гц»> cm40 scad ris 4Рис. 4. Четвертая форма колебаний, частота 4,365 Гц

Наибольший вклад дает 523-я форма колебаний, представленная на рис. 5.

Для обеспечения требуемых сумм модальных масс пришлось определить 2398 собственных пар.

cm40 scad form 28 prev cm40 scad form 29 prev

Спектр собственных частот для этой задачи очень густой — в интервале [4.183, 5.756] Гц лежит 523 собственных частоты.
Зависимость сумм модальных масс от количества удерживаемых собственных форм приведена на рис. 6.

Источник

Методы решения задач о собственных
значениях и векторах матриц

Постановка задачи

Равенство (2.1) равносильно однородной относительно [math]X[/math] системе:

являются собственными векторами.

Требуется найти собственные значения и собственные векторы заданной матрицы. Поставленная задача часто именуется второй задачей линейной алгебры.

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

2. Попарно различным собственным значениям соответствуют линейно независимые собственные векторы; k-кратному корню характеристического уравнения соответствует не более [math]k[/math] линейно независимых собственных векторов.

3. Симметрическая матрица имеет полный спектр [math]\lambda_i,

4. Положительно определенная симметрическая матрица имеет полный спектр действительных положительных собственных значений.

Метод непосредственного развертывания

Полную проблему собственных значений для матриц невысокого порядка [math](n\leqslant10)[/math] можно решить методом непосредственного развертывания. В этом случае будем иметь

Алгоритм метода непосредственного развертывания

3. Для каждого собственного значения составить систему (2.4):

Замечание. Каждому собственному значению соответствует один или несколько векторов. Поскольку определитель [math]|A-\lambda_iE|[/math] системы равен нулю, то ранг матрицы системы меньше числа неизвестных: [math]\operatorname(A-\lambda_iE)=r и в системе имеется ровно [math]r[/math] независимых уравнений, а [math](n-r)[/math] уравнений являются зависимыми. Для нахождения решения системы следует выбрать [math]r[/math] уравнений с [math]r[/math] неизвестными так, чтобы определитель составленной системы был отличен от нуля. Остальные [math](n-r)[/math] неизвестных следует перенести в правую часть и считать параметрами. Придавая параметрам различные значения, можно получить различные решения системы. Для простоты, как правило, попеременно полагают значение одного параметра равным 1, а остальные равными 0.

2. Находим его корни (собственные значения): [math]\lambda_1=5,

3. Составим систему [math](A-\lambda_iE)X^i=0,

Для [math]\lambda_2=-1[/math] имеем

1. Запишем характеристическое уравнение (2.5):

2. Корни характеристического уравнения: [math]\lambda_<1,2>=1[/math] (кратный корень), [math]\lambda_3=3[/math] — собственные значения матрицы.

3. Найдем собственные векторы.

Для [math]\lambda_<1,2>=1[/math] запишем систему [math](A-\lambda_<1,2>E)\cdot X^<1,2>=0\colon[/math]

Для собственного значения [math]\lambda_3=3[/math] запишем систему [math](A-\lambda_3E)\cdot X^3=0\colon[/math]

Метод итераций для нахождения собственных значений и векторов

Пусть матрица [math]A[/math] имеет [math]n[/math] линейно независимых собственных векторов [math]X^i,

Алгоритм метода итераций

1. Процесс последовательных приближений

2. Вместо применяемой в пункте 4 алгоритма формулы для [math]\lambda_1^<(k+1)>[/math] можно взять среднее арифметическое соответствующих отношений для разных координат.

3. Метод может использоваться и в случае, если наибольшее по модулю собственное значение матрицы [math]A[/math] является кратным, т.е.

4. При неудачном выборе начального приближения [math]X^<1(0)>[/math] предел отношения [math]\frac>>[/math] может не существовать. В этом случае следует задать другое начальное приближение.

5. Рассмотренный итерационный процесс для [math]\lambda_1[/math] сходится линейно, с параметром [math]c=\frac<\lambda_2><\lambda_1>[/math] и может быть очень медленным. Для его ускорения используется алгоритм Эйткена.

6. Если [math]A=A^T[/math] (матрица [math]A[/math] симметрическая), то сходимость процесса при определении [math]\rho(A)[/math] может быть ускорена.

Так как собственный вектор определяется с точностью до постоянного множителя, то [math]X^1[/math] лучше пронормировать, т.е. поделить все его компоненты на величину нормы. Для рассматриваемого примера получим

Согласно замечаниям, в качестве собственного значения [math]\lambda_1[/math] матрицы можно взять не только отношение

Выполним расчеты согласно методике (табл. 10.11).

В результате получено собственное значение [math]\lambda_1\cong 3,\!00003[/math] и собственный вектор [math]X^1= \begin 88573&-88573&1\end^T[/math] или после нормировки

Метод вращений для нахождения собственных значений

При реализации метода вращений преобразование подобия применяется к исходной матрице [math]A[/math] многократно:

Угол поворота [math]\varphi^<(k)>[/math] определяется по формуле

где [math]|2\varphi^<(k)>|\leqslant \frac<\pi><2>,

i ( [math]a_[/math] выбирается в верхней треугольной наддиагональной части матрицы [math]A[/math] ).

Замечание. В двумерном пространстве с введенной в нем системой координат [math]Oxy[/math] с ортонормированным базисом [math]\<\vec,\vec\>[/math] матрица вращения легко получается из рис. 2.1, где система координат [math]Ox’y'[/math] повернута на угол [math]\varphi\colon[/math]

Алгоритм метода вращений

2. Выделить в верхней треугольной наддиагональной части матрицы [math]A^<(k)>[/math] максимальный по модулю элемент [math]a_^<(k)>,

Собственные векторы [math]X^i[/math] находятся как i-e столбцы матрицы, получающейся в результате перемножения:

2. Контроль правильности выполнения действий по каждому повороту осуществляется путем проверки сохранения следа преобразуемой матрицы.

3. При [math]n=2[/math] для решения задачи требуется одна итерация.

Пример 2.5. Для матрицы [math]A=\begin 2&1\\1&3 \end[/math] методом вращений найти собственные значения и собственные векторы.

3°. Находим угол поворота матрицы по формуле (2.7), используя в расчетах 11 цифр после запятой в соответствии с заданной точностью:

4°. Сформируем матрицу вращения:

5°. Выполним первую итерацию:

2. Максимальный по модулю наддиагональный элемент [math]|a_<12>|= 4,\!04620781325\cdot10^ <-12>. Для решения задачи (подчеркнем, что [math]n=2[/math] ) с принятой точностью потребовалась одна итерация, полученную матрицу можно считать диагональной. Найдены следующие собственные значения и собственные векторы:

3°. Находим угол поворота:

3(1). Найдем угол поворота:

3(2). Найдем угол поворота:

5(2). Выполним третью итерацию и положим [math]k=3[/math] и перейдем к пункту 2:

3(3). Найдем угол поворота:

5(3). Выполним четвертую итерацию и положим [math]k=4[/math] и перейдем к пункту 2:

3(4). Найдем угол поворота

5(4). Выполним пятую итерацию и положим [math]k=5[/math] и перейдем к пункту 2:

Собственные значения: [math]\lambda_1\cong a_<11>^<(5)>= 6,\!895\,,

X^3=\begin-0,\!473\\-0,\!171\\0,\!864 \end[/math] или после нормировки

Источник

n17.doc

6. Управление расчетом

В главе 1 уже отмечалось, что выполнение расчета возможно только при условии, когда исходные данные текущего проекта содержат обязательный минимум информации, т.е. геометрию расчетной схемы, описание жесткостных характеристик всех элементов и, по крайней мере, одно загружение. Так как полный контроль исходных данных выполняется на первом шаге расчета, то при наличии этой информации процессор стартует.
Рfile17 html m24ebbc9ис. 6.1. Диалоговое окно

Активизация расчета выполняется из соответству­ющего раздела Дерева проекта. После чего появляется диалоговое окно Параметры расчета (рис. 6.1), в котором следует выбрать режим работы процессора (Полный расчет или Продолжение расчета) и нажать кнопку Выполнить расчет. Как правило, режим Продолжение расчета используется в тех случаях, когда по какой-либо причине был прерван расчет задачи. Им можно воспользоваться и после модификации исходных данных, которые не затрагивали узлы, связи и элементы (например, после корректировки нагрузок).

Для изменения параметров настройки вычисли­тель­ного процесса используется кнопка Параметры, после нажа­тия которой в диалоговом окне становятся доступными поля ввода данных и опции управления расчетом (рис. 6.2).

file17 html 3cb11bb1Рис. 6.2. Диалоговое окно

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

В первой находятся параметры управления процессом оптимизации матрицы жесткости.

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

В третьей сосредоточены параметры настройки процесса анализа устойчивости.

Пятую составляют параметры управления ходом вычислений.

В шестой находятся параметры управления протоколом выполнения расчета.

Значения параметров управления расчетом, исполь­зуемые по умолчанию, соответствуют значениям, заданным при настройке комплекса (пункт меню Параметры расчета в разделе Опции окна управления проектом). Изменения, вносимые в эти данные при запуске на расчет конкретной задачи, запоминаются только для этой задачи.

Рассмотрим назначение основных параметров управления расчетом.

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

Точность решения собственной проблемы – определяет точность решения задачи на собственные значения.

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

Масштабный множитель – используется для ограничения интервала поиска коэффициента запаса устойчивости. Если значение коэффициента больше заданного значения параметра, система считается устойчивой.

Точность вычислений – параметр задает критерий окончания итерационного процесса поиска коэффициента запаса устойчивости. При очень малых значениях этого параметра время расчета может существенно увеличиться.

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

Точность определения формы потери устойчивости – допустимая погрешность при определении формы потери устойчивости.

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

Три параметра используются для управления формированием протокола выполнения расчета:

Максимальное количество ошибок – количество ошибок в исходных данных, сообщения о которых попадают в протокол.

Максимальное количество предупреждений – количество предупреждений о возможных ошибках в исходных данных, сообщения о которых попадает в протокол.

Учет нагрузок в связях – при активизации этой опции в протокол попадают значения суммарных нагрузок в узлах с учетом нагрузок, приходящих в узлы с наложенными связями.

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

Источник

Результаты расчета в SCAD: инструменты анализа

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

Цветовая шкала проверки элементов в SCAD.

Для всех заданных в расчете конструктивных элементов (тех, у кого задан материал) могут отображаться результаты проверки несущей способности. Чтобы произвести визульный просмотр результатов, необходимо в дереве управления проектом перейти в раздел «Графический анализ» (рис. 1).

В появившемся окне будет доступна так же расчетная схема. Например, чтобы наглядно увидеть проходит сечение или нет, нужно сделать расчет профилей, щелкнув по одноименной кнопке (рис. 2).

После расчета появится возможность отображения степени использования элементов по множеству параметров. Этот режим открывается нажатием кнопки «Отображение результатов проверки на схеме» (рис. 3). Конструктивные элементы ото­бражаются на схеме тремя цветами: зеленым, если несущая способность достаточна, красным — в противном случае или желтым, если несущая способность находится вблизи критического значения (фактор близок к 1,0), а красным — если элемент не проходит.

В случае, если проверяемый элемент красного цвета, то чтобы проверить причину его неудовлетворительного назначения, следует воспользоваться инструментом «Информация об элементе» — «Сталь. Факторы» — «Диаграмма факторов». В этом окне представлены всевозможные проверки действия назначенного сечения, а так же комбинация нагрузок, при котором достигаются наивысшие значения каждой из проверок (рис. 4.)

Анализ деформаций и перемещений в SCAD

Анализ перемещений в SCAD выполняется с помощью операций одноименного раздела (рис. 5) инструментальной панели. Для этого необходимо выполнить следующие действия:

Набор операций отображения позволяет получить различные формы представления резуль­татов расчета перемещений. Каждой форме соответствует кнопка в инструментальной панели. При анализе перемещений от статических нагрузок в стержневых конструкциях можно восполь­зоваться кнопками:

При этом допускается совместное отображение деформированной схемы и одного из видов цветовой индикации. Узлы имеют цветовую идентификацию согласно определенному промежутку перемещений при выбранном направлении.

Эпюры усилий в SCAD

Поскольку независимо от режима в комплексе сохра­ня­ется преемственность функций управления, то анализ силовых факторов (в данном случае — построение эпюр) выполняется по тем же правилам, что и анализ перемещений (рис. 6).

Таким образом можно осуществлять анализ перемещений в SCAD.

Источник

Понравилась статья? Поделить с друзьями:

Become a DeepAI PRO

500 AI generator calls per month + $5 per 500 more (includes images)

1750 AI Chat messages per month + $5 per 1750 more

60 Genius Mode messages per month + $5 per 60 more

HD image generator access

Private image generation

Complete styles library

API access

Ad-free experience

*

This is a recurring payment that will happen monthly

*

If you exceed number of images or messages listed, they will be charged at a rate of $5

Pay as you go

100 AI Generator Calls (includes images)

350 AI Chat messages

Does not include Genius Mode

Private image generation

Complete styles library

API access

Ad-free experience

Понравилась статья? Поделить с друзьями:
  • Бмв е39 ошибка 217
  • Бмв е39 ошибка 215
  • Бмв е39 ошибка 1df5
  • Бмв е39 дизель коды ошибок
  • Бмв е39 ошибка 130