|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|
QR алгоритм нахождения собственных значений23.10.2012, 16:11. Показов 11251. Ответов 13
Метки нет (Все метки)
Доброго времени суток. Такая у меня маленькая проблемка:
Реализую алгоритм, указанный в заголовке. Как разложить матрицу на ортогональную*верхнетреугольную дошел, не дошел, когда выходить из цикла A1=R0*Q0 A2=R1*Q1 (A1=Q1*R1) ... Вообще, как я понял, надо выйти из цикла, как только матрица будет An=треуголного вида (с некоторой точностью). Но: если у матрицы в спектре есть комплекснозначные собственные числа, то треугольного вида не будет . Матрица будет квазитреугольная, т.е. будут блоки на главной диагонали. Смотрел на Учитесь.ру инфу по этому вопросу, но не сильно помогло. Подскажите плиз, каким критерием пользоваться для выхода из цикла в общем случае.
0
|
|
| 23.10.2012, 16:11 | |
|
Ответы с готовыми решениями:
13
Расписать формулу для нахождения собственных значений матрицы QR - алгоритм нахождения собственных значений Приложение задачи нахождения собственных значений матрицы |
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
|
| 10.12.2015, 02:19 | |
|
cmath, скажите пожалуйста, доделали вы реализацию и не могли бы поделиться?
0
|
|
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
||
| 10.12.2015, 02:26 [ТС] | ||
|
1
|
||
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
|
| 10.12.2015, 08:04 | |
|
cmath, а у меня матрица нечетной размерности (7).
![]() Скажите, а как вы вначале алгоритма раскладываете А? (Т.е. как вы находите Q, R? A = QR) Преобразованиями Хаусхолдера? Еще интересует такой вопрос: все-таки когда нужно прекратить итерации? Видел такой случай: продолжают, пока поддиагональные элементы становятся меньшими заданной точности. Не по теме: Спасибо, что откликнулись :)
0
|
|
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|||
| 10.12.2015, 08:16 [ТС] | |||
|
0
|
|||
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
|
| 10.12.2015, 10:51 | |
|
cmath, я бы очень хотел посмотреть на Вашу реализацию
0
|
|
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|
| 10.12.2015, 12:10 [ТС] | |
|
Готово. Смотрим архив там две проги (проекты VC++2008). В одной - нахождение собственных чисел матрицы 3х3, в другой просто разложение QR. Делал давненько, когда еще только начинал C++ учить, все работает, но ничему там не удивляйтесь
1
|
|
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
||||||
| 10.12.2015, 14:23 | ||||||
|
cmath, Здорово, благодарю! Только мне надо будет перенести на размерность 5. И в связи с этим есть вопрос: в проекте "Алгоритм QR" как нужно изменить подсчет a, b, участвующих в определении точности?
0
|
||||||
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|
| 10.12.2015, 15:28 [ТС] | |
|
Там производится суммирование квадратов поддиагональных элементов по столбцу и извлекается корень. Отсюда вывод...
Добавлено через 4 минуты Да, кстати, для случая с размерностью =5 там будет 4 числа. Можно, канешь, обобщить алгоритм на матрицы произвольной размерности, но у меня сейчас нет времени этим заниматься.
1
|
|
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
|
| 10.12.2015, 20:24 | |
|
cmath,
А почему А[2][1] не участвовал в сумме квадратов под корнем? Правильно ли я понимаю, что в данном случае (все СЗ -- действительные) можно суммировать все поддиагональные элементы? (вернее находить корень из сумм их квадратов). Это повысит точность оценки процесса? И еще вопрос: блоки возникают, когда у нас есть комплексные СЗ? Выше вы говорили об алгоритме на проверку квазитреугольности матрицы: удалось ли вам его найти? У моей матрицы все СЗ -- действительные, но просто интересно, как этот алгоритм выглядит
0
|
|
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|||
| 11.12.2015, 06:22 [ТС] | |||
|
Добавлено через 1 час 4 минуты Добавлено через 6 минут P.S. Последний алгоритм можно применить к матрице с размерностью любой четности.
0
|
|||
|
10 / 10 / 1
Регистрация: 28.11.2013
Сообщений: 153
|
||||||||||||||||
| 11.12.2015, 12:51 | ||||||||||||||||
|
cmath, не могли бы Вы помочь с переносом вашего кода на размерность 5х5?
![]() Я попробовал добавить "итерации разложения" по аналогии с первой и второй. Но что-то не так... ![]() Измененный (5х5)
in.txt
Да, я понимаю, что double не хранит столько знаков. Но, если получится на double, то на длинную арифметику я перенесу.
Исходный (3х3)
0
|
||||||||||||||||
|
2525 / 1751 / 152
Регистрация: 11.08.2012
Сообщений: 3,349
|
|
| 11.12.2015, 13:43 [ТС] | |
|
Не по теме: Лень-матушка... Второй проект открывали? Хотя бы ради интереса. Там, меж прочим, разложение QR (без поиска СЗ) для общего случая (тоже не идеал, но все-таки), можно было бы использовать тот код и не писать //четвертая итерация и т.д. Допуская массу ошибок. Сам подход, который я тогда использовал вследствие отсутствия опыта и навыков - топорный, грабля короче, на которую вы сейчас наступаете. Я дал вам код второго проекта не просто так - проанализируйте его, там есть все, что нужно. P.S. Уже обладая некоторым опытом и навыками я бы на вашем месте сначала бы написал класс для квадратных матриц и для векторов, переопределил бы для них операции сложения, умножения, код бы понятнее стал на порядок.
0
|
|
|
2903 / 1937 / 210
Регистрация: 05.06.2011
Сообщений: 5,718
|
||
| 11.12.2015, 16:54 | ||
|
0
|
||
| 11.12.2015, 16:54 | |
|
Помогаю со студенческими работами здесь
14
Ортогональное разложение матрицы для нахождения собственных значений Метод Якоби для нахождения собственных значений матрицы Составить программу для нахождения двух наибольших по модулю собственных значений Разработать м-файл для нахождения собственных чисел и собственных векторов матрицы Метод итерации нахождения собственных чисел и собственных векторов матрицы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|