Я так понимаю, ответ уже не нужен?

Как Вы собираетесь сделать диагональную матрицу? Получить трехдиагональную, а затем методом вращений "убить" две "лишние" диагонали? Если да, то так не получится. Если интересно, могу объяснить почему.
У меня вот другая проблема. QR-алгоритм не сходится

Причем на матрицах, скажем, 10x10 отрабатывает нормально, а на матрицах, например, 20x20 не сходится. Может кто с такой проблемой встречался уже?