как найти собственные векторы для кратного соб значения

den911

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

choconasty

Пусть A — квадратная вещественная матрица с собственным значением λ (одним из) кратности k ≥ 2.
Тогда матрица (A — λE) имеет ядро размерности k, которое называется собственным подпространством для матрицы A (соответствующим собственному значению k). Оно, очевидно, состоит в точности из всех собственных векторов для A с собственным значением k, и твоя задача — лишь найти в нём любой базис.
Найти это пространство можно элементарными преобразованиями над строками в паре {(A — λE) | E}.

den911

Дело в том, что мне нужно найти векторы, соответствующие определенному начальному приближению, то есть нужен итерационный процесс.

goga7152

Пусть A — квадратная вещественная матрица с собственным значением λ (одним из) кратности k ≥ 2.
Тогда матрица (A — λE) имеет ядро размерности k, которое называется собственным подпространством для матрицы A (соответствующим собственному значению k). Оно, очевидно, состоит в точности из всех собственных векторов для A с собственным значением k
Забыли условие симметричности матрицы А (без него написанное неверно).

Barmaglot

Для метода прямых/обратных итераций можно воспользоваться многократным применением этого метода с реортогонализацией на последующих шагах.
Пусть найден первый с.в. x1.
На втором шаге мы и ищем второй с.в. x2 (возможно кратный x1) применяя метод с ортогонализацией приближения к x1 на каждой итерации. На третьем шаге мы и ищем третий с.в. x3 – с ортогонализацией к x0, x1 и т.д. Так можно найти верхнюю часть спектра невысокой размерности, тк при большой размерности этот алгоритм может сломаться…
Реортогонализация должна проводиться модифицированным методом Грама - Шмидта

oren

можно поподробнее про модифицированный метод грамма-шмидта? спасибо.

vovatroff

Я главного не понял: вы это руками собираетесь делать, или вам программа нужна?

den911

мне нужен метод, а если есть программа, особенно на си или фортране, то это совсем замечательно.

vovatroff

Существуют блочные итерационные методы, более продвинутые, чем степенной,
и им, вообще говоря, безразлично, вырождены (т.е. кратны) собственные значения
или нет, если, конечно, соответствующие векторы ищутся одновременно. Например,
метод Ланцоша и метод Давидсона. Лучше варианты с предобуславливателями.
Советую поискать в гугле с ключевыми словами типа:
Lancos, Davidson, iteration, block, preconditioner, deflation, diagonalization, eigenvalue ...
Знанием собственного значения, возможно, придется пожертвовать, если не задаваться
целью переделывать готовые алгоритмы. Все они предполагают постепенное уточнение
собственных значений от итерации к итерации. А вот предварительные заготовки для
собственных векторов, наоборот, могут помочь, особенно если они -- хорошее начальное
приближение.
Кстати, для неэрмитовых матриц аналоги тоже вроде есть.
А вообще, если матрица не столь велика (ну до 1000 в длину, скажем то лучше не ломать
голову, а взять и диагонализовать ее целиком. Например, QL-алгоритмом.

den911

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

vovatroff

У всех матрицы большие Ну так все ж уже изобретено... см. выше...
Оставить комментарий
Имя или ник:
Комментарий: