Практическое применение
25. Результаты, описанные в нескольких предыдущих параграфах, были подтверждены на практике, причем использовалась программа, написанная для DEUCE. С целью компенсации ожидавшейся плохой обусловленности матрицы В в процессе вычислений использовалась арифметика с двойной точностью и фиксированной запятой.
Вычислялись две последовательности из соотношений
где выбиралось так, чтобы Исходная матрица А имела элементы только одинарной точности и при образовании скалярные произведения накапливались точно с округлением после суммирования; это требовало лишь умножения величин с двойной точностью (62 двоичных разряда) на величины с одинарной точностью. Так как исходная А используется все время, мы можем полностью получать все преимущества от нулевых элементов, которые она может содержать. Уравнения
затем решались с использованием обычной арифметики с двойной точностью и фиксированной запятой, и окончательно коэффициенты
характеристического уравнения вычислялись из соотношений
с использованием арифметики с двойной точностью и плавающей запятой.
Предпринимались попытки выявления, как в § 21, линейной зависимости на самой ранней стадии; при этом заменялись нулями все элементы, меньшие по модулю некоторого предписанного числа. (В этом случае удобно нормировать даже если все время используется плавающая запятая с двойной точностью.) Для того чтобы вызвать наступление линейной зависимости, я так же пытался несколько раз предварительно умножать исходный вектор на А, чтобы начальный вектор имел малые составляющие по собственным векторам, соответствующим меньшим собственным значениям.
В целом мой опыт с этими методами был не очень удачным, и я отказался от их использования в пользу вычисления во всех случаях полной системы векторов. Результаты, полученные на практике, следующие:
(i) Для диагональной матрицы при начальном векторе характеристическое уравнение имело 13 правильных двоичных знаков в наиболее точных коэффициентах и 10 в остальных. Мы могли ожидать такую неточность, так как число обусловленности С порядка . Используя начальный вектор (23.7), мы получили наиболее точные коэффициенты с 15 правильными двоичными знаками, а остальные с 11. Все выведенные уравнения совершенно бесполезны для определения собственных значений (см. гл. 7, § 6.)
(ii) Для диагональной матрицы порядка 21 с при начальном векторе коэффициенты вычисленного характеристического полинома имели по крайней мере 30 правильных двоичных знаков, причем некоторые коэффициенты и значительно больше. Это эквивалентно определению собственных значений приблизительно с 20 двоичными знаками.
(iii) Для расположения вычисленные характеристические уравнения, соответствующие нескольким различным начальным векторам, были никак не связаны с правильным уравнением.
(iv) Для опыта с расположением без использования комплексной арифметики, мы брали трехдиагональную матрицу, имеющую 10 блоков вида
При начальном векторе это дало характеристическое уравнение, правильное с точностью до 60 двоичных знаков; собственные значения были правильными с той же точностью.
Для простых расположений с несколькими совпадающими или очень близкими собственными значениями обычно получались несколько правильных собственных значений, а некоторые были довольно произвольными, что подтверждает анализ § 24.