Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коршунов лабораторные / ЛинАлгбр алгол-пргр.rtf
Скачиваний:
22
Добавлен:
26.04.2015
Размер:
392.72 Кб
Скачать

5. Организация процедур и обозначения

Отметим ряд особенностей при организации приведенных выше процедур svd и minfit:

i. Матрица U, вычисляемая в процедуре svd, содержит лишь первые п столбцов матрицы Uc. Если же требуется знать всю матрицу Uc, то нужно использовать следующую модификацию процедуры svd: после строки «comment — формирование результирующей матрицы левых преобразований»; необходимо ввести текст

if withu then for i : = n + 1 step 1 until т do begin

for / : = n + 1 step 1 until m do и [i, /] ; = 0;

; и [i. i] ; = 1 end i;

а, кроме того, заменить переменную п переменной т в третьей и седьмой строках программы после этого комментария, записав эти строки в виде for /': = / step I until m do

2. В процедуре svd предполагается, что т^п. Однако это не обязательно. Если т < п, то следует запоминать матрицу Ат вместо А, т. е. использовать массив at [1 : п, 1 : т], где элементы at [i, j] соответствуют а;,/ и после обращения к процедуре svd (n, m, with ut with v, eps, /о/, at, q, v, и) будут вычислены матрицы U размера m X m и V размера п X ш. В процедуре minfit на величины тип ограничения не наложены.

3. При выполнении итераций элемент матрицы J(l) полагают равным нулю, если он не больше ех, где е — заданная точность, а х = max (|</t-1 -)-

t<i<n

+k-d.

Наибольшее сингулярное число ах находится в пределах х/у 2 ^ о^ <^2 }/~2.

4. Процедура svd организована таким образом, что позволяет экономно использовать память машины. Например, фактические параметры а и а могут быть одинаковыми. В этом случае сначала в исходном массиве содержится матрица а, а затем на ее место записывается вычисленный массив и. То же можно сказать о фактических параметрах а и и. Массив v, если он нужен, вычисляется и помещается в верхней части массива а, в противном случае массив а не меняется. Наконец, все три фактических параметра, соответствующих параметрам а, и и v, могут быть одинаковыми, если только не выполняется условие withu = = withv = true. При такой организации возрастает, однако, количество перемножений, необходимых для формирования матрицы U, приблизительно в т/п раз.

5. Параметр сдвига для выполнения (^-) преобразования выбирается так, чтобы уменьшить опасность переполнения разрядной сетки машины при вычислении экспонент.

6. Сингулярные числа, помещенные в массиве q, не упорядочены по значению. Их сортировку необходимо сопровождать соответствующей перестановкой столбцов матриц U и V и строк матрицы С.

7. Список формальных параметров можно дополнить параметром, который ограничивал бы число итераций, выполняемых в алгоритмах. Кроме этого, можно ввести метку для выхода из процедуры, если процесс вычислений не сходится за определенное количество шагов (скажем, 30 итераций при вычислении одного сингулярного числа).

6. Оценка точности решения

Устойчивость преобразования Хаусхолдера была установлена в работе [96], где показано, что при отсутствии ошибок округления процесс сходится глобально (при любых начальных отклонениях) и почти всегда обладает асимптотической кубической сходимостью.

Расчеты показывают, что число полных Q/^-итераций при преобразовании двухдиагональной матрицы составляет примерно две на сингулярное число. в процедуре применен прием неявного сдвига. Этот прием нельзя реализовать для расщепленной матрицы. Поэтому возникают трудности, если величины q^ или е^ малы. При применении устойчивых ортогональных преобразователей, описанных в п. I, численная неустойчивость не возникает. Однако в некоторых случаях скорость сходимости может оказаться очень малой.

Соседние файлы в папке Коршунов лабораторные