|
(******************************************************************************)
(**) ОТДЕЛ ПроСВект+;
(******************************************************************************
* НАЗНАЧЕНИЕ:
* нахождение тех собственных векторов квадратной матрицы, которые
* соответствуют вещественным собственным значениям
*
* ПРИМЕЧАНИЯ:
* Исходная матрица записана в файле "ПроМатр5.дан".
* В этом файле 1-я строка содержит размер матрицы (строк и столбцов),
* а последующие строки содержат значения элементов матрицы.
******************************************************************************)
ИСПОЛЬЗУЕТ
Вект ИЗ "...\Отделы\Числа\",
Матр ИЗ "...\Отделы\Числа\",
Собств ИЗ "...\Отделы\Числа\",
МатрВВ ИЗ "...\Отделы\Числа\",
Читать ИЗ "...\Отделы\Обмен\",
Вывод ИЗ "...\Отделы\Обмен\";
(******************************************************************************)
ЗАДАЧА Голова;
ПОСТ
TOL = 1.D-6; (* точность для вычислений с. векторов *)
ПЕР
п:Читать.Поток;
М,М1:Матр.Доступ; (* исходная и запасная матрица *)
в:Вект.Доступ; (* с. вектора *)
сзВещ,сзМнм:Вект.Доступ;
i,n:ЦЕЛ;
УКАЗ
п:=МатрВВ.ОткрытьПоток("ПроМатр5.дан");
М:=МатрВВ.ЧитатьМатр(п);
Читать.Закрыть(п);
n:=РАЗМЕР(М^);
СОЗДАТЬ(сзВещ,n);
СОЗДАТЬ(сзМнм,n);
СОЗДАТЬ(в,n);
СОЗДАТЬ(М1,n,n);
Матр.Списать(М^,М1^);
Вывод.Цепь("^Исходная матрица:^");
МатрВВ.ВыводМатр("%8.4f",М^);
ЕСЛИ Собств.Значения(М^,сзВещ^,сзМнм^) = 0 ТО
Вывод.Цепь("^Действительная часть собственных значений:^");
МатрВВ.ВыводВект("%8.4f",сзВещ^);
Вывод.Цепь("Мнимая часть собственных значений:^");
МатрВВ.ВыводВект("%8.4f",сзМнм^);
ОТ i:=0 ДО n-1 ВЫП
ЕСЛИ сзМнм[i] = 0 ТО
Вывод.ЧВещ("^Действительное собственное значение: %8.4f^",сзВещ[i],0,0,0);
ЕСЛИ Собств.Вектор(М^,сзВещ[i],TOL,в^) = 0 ТО
Вывод.Цепь("Соответствующий собственный вектор:^");
МатрВВ.ВыводВект("%8.4f",в^);
ИНАЧЕ
Вывод.Цепь("Нет схождения!^")
КОН
КОН
КОН
ИНАЧЕ
Вывод.Цепь("^Нет схождения!^")
КОН
КОН Голова;
(******************************************************************************)
УКАЗ
Голова
КОН ПроСВект.
▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|