Наиболее эффективными (но и ресурсоемкими) средствами решения произвольных СЛАУ (с матрицей А размера
NxM) по методу наименьших квадратов являются так называемые полные ортогональные разложения, имеющие, по определению, вид
A=UKVT.
Здесь U и V — ортогональные матрицы размером NxN и MхM соответственно, а
k— матрица размера NxM, имеющая следующую структуру:
причем w — матрица размера kxk, где k — ранг исходной матрицы А.
- А — действительная матрица.
Венцом современных алгоритмов решения произвольных СЛАУ является SVD-разложение. Прежде чем прокомментировать соответствующий алгоритм, приведенный в листинге 8.26, обратим внимание на матрицу
S, которая имеет блочную структуру. Согласно формуле (8.5), из матрицы s можно выделить подматрицу
w с ненулевыми диагональными элементами. Дальнейшая последовательность действий по построению нормального псевдорешения выглядит так:
1. Нахождение единственного решения вспомогательной СЛАУ: Wy=UTb (первые два элементы вектора у во второй строке листинга 8.26, которая учитывает диагональность матрицы
S).
2. Дополнение вектора нулевыми элементами до размера искомого вектора х.
3. Вычисление х простым умножением x=Vy (третья строка листинга).
Полученный результат (искомый вектор х и промежуточный у) выведен в конце листинга 8.26. Как вы можете убедиться, он совпадает с ответом, полученным в листинге 8.24 (см. предыдущий разд.) при помощи QR-разложения.
Листинг 8.26. Решение вырожденной СЛАУ при помощи
сингулярного разложения (продолжение листинга 8.25)