Реализация QR-алгоритма с преобразованиями Хаусхолдера на C++ для вычисления собственных значений и векторов вещественных матриц.
├── include/
│ └── qr_decomposition.h
├── src/
│ └── qr_decomposition.cpp
├── apps/
│ └── main.cpp
├── tests/
│ ├── unit_tests.cpp
│ └── integration_tests.cpp
├── build/
├── Makefile
└── README.mdg++ -c qr_decomposition.cpp -o qr_decomposition.o -std=c++11
g++ -c main.cpp -o main.o -std=c++11
g++ qr_decomposition.o main.o -o eigen_solver -std=c++11Проект использует Makefile для удобной компиляции и тестирования.
# Основная сборка
make all # Сборка основной программы
make run # Сборка и запуск основной программы
# Тестирование
make test # Запуск всех тестов
make test-unit # Только модульные тесты
make test-integration # Только интеграционные тесты
# Утилиты
make clean # Очистка build директории
make rebuild # Полная пересборка
Пример формата файла
Создайте matrix.txt:
3
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0Математические основы Реализация использует следующие численные методы:
- Преобразования Хаусхолдера для QR-разложения
- Итерационный QR-алгоритм для приведения к верхней почти треугольной форме
- Решение характеристических уравнений 2×2 блоков для комплексных собственных значений
- Обратные итерации для вычисления собственных векторов
- Автоматическое определение вещественных и комплексных собственных значений
- Адаптивный критерий сходимости с допуском TOLERANCE = 0.0001
- Оптимизированные матричные операции для уменьшения вычислительной сложности
- Проверка точности через сравнение A·v и λ·v