Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы II.doc
Скачиваний:
85
Добавлен:
05.06.2015
Размер:
4.45 Mб
Скачать

Программное обеспечение

Для вычисления нескольких наибольших или наименьших собственных значений задачи на собственные значения с вещественными матрицами A и B и соответствующих им собственных векторов в составе математической библиотеки Matlab’а имеется функция eigs. Обращение к ней осуществляется командой

[x,l]=eigs(a,b,m,s)

В качестве параметров в этой функции используются:

a

квадратная матрица размером n на n элементов, содержащая элементы матрицы A, которая образует задачу на собственные значения;

b

квадратная матрица размером n на n элементов, содержащая элементы матрицы B, которая формирует обобщённую задачу на собственные значения – необязательный параметр. При его отсутствии решается классическая задача на собственные значения для матрицы A;

m

количество отыскиваемых собственных векторов и собственных значений – необязательный параметр. При его отсутствии ищутся все собственные значения и собственные векторы;

s

параметр, определяемый перечень отыскиваемых собственных значений и собственных векторов – необязательный параметр. При его отсутствии ищутся самые большие по абсолютной величине собственные значения и их собственные векторы. Этот параметр может принимать значения: 'lm' или 'sm' – искать соответственно наибольшие или наименьшие по модулю собственные значения; 'lа' или 'sa'– искать соответственно наибольшие или наименьшие по модулю собственные значения действительных симметричных матриц; 'be' – искать равное количество наибольших и наименьших по модулю собственных значений действительных симметричных матриц. Если m – нечётно, то количество наибольших собственных значений на 1 больше количества наименьших; 'lr' или 'sr' – искать собственные значения несимметричных и комплексных матриц соответственно с наибольшими или наименьшими действительными частями; '1i' или 'si'– искать собственные значения несимметричных и комплексных матриц соответственно с наибольшими или наименьшими мнимыми частями.

Результатом обращения к функции eigs являются прямоугольная матрица x размером n на m элементов, в столбцах которой находятся найденные собственные векторы, и квадратная диагональная матрица l размером m на m элементов, диагональные элементы, которой являются найденными собственными значениями.

Пример решения на пэвм

Условия задачи. Решить заданную ниже задачу на собственные значения

,

найдя не менее 4-х наименьших по модулю собственных значений и соответствующих им собственных векторов.

Решение. Решение поставленной задачи представлено в виде приведённой ниже программы, реализующей обращение к функции eigs математической библиотеки Matlab’а для отыскания 4-х векторов.

n=10; m=4;

fr=fopen('Lr_09.dan','r');

t=fgetl(fr); a=fscanf(fr,'%f',[n,n]);

fclose(fr);

[x,l]=eigs(a,m,'sa');

fw=fopen('Lr_09.res','w');

fprintf(fw,'\nСобств. значения-первые %2i \n', m);

for i=1:m; fprintf(fw,'%8.3f',l(i,i)); end;

fprintf(fw,'\nСобств. векторы-первые %2i \n', m);

for i=1:n;

fprintf(fw,'%8.4f',x(i,:)); fprintf(fw,'\n');

end;

fclose(fw);

Программа вводится в память ЭВМ и отлаживается. Исходные данные к программе подготавливаются в отдельном файле с именем Lr_09.dat в следующем виде:

Матрица A

6.0 2.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

2.0 6.0 2.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0

1.0 2.0 6.0 2.0 1.0 0.0 0.0 0.0 0.0 0.0

0.0 1.0 2.0 6.0 2.0 1.0 0.0 0.0 0.0 0.0

0.0 0.0 1.0 2.0 6.0 2.0 1.0 0.0 0.0 0.0

0.0 0.0 0.0 1.0 2.0 6.0 2.0 1.0 0.0 0.0

0.0 0.0 0.0 0.0 1.0 2.0 6.0 2.0 1.0 0.0

0.0 0.0 0.0 0.0 0.0 1.0 2.0 6.0 2.0 1.0

0.0 0.0 0.0 0.0 0.0 0.0 1.0 2.0 6.0 2.0

0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 2.0 6.0

Результаты работы программы, помещённые в файл с именем Lr_09.res, приведены ниже