- •Численные методы II
- •Содержание
- •1. Решение линейной краевой задачи для обыкновенных дифференциальных уравнений высших порядков и их систем Справочная информация
- •Метод стрельбы
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •2. Алгебраическая задача на собственные значения Справочная информация
- •Программное обеспечение
- •Пример решения на пэвм
- •Собственные значения - первые 4
- •3. Решение систем нелинейных алгебраических уравнений Справочная информация
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •4. Применение метода конечных элементов для решения эллиптического уравнения Справочная информация
- •Вариационная постановка краевой задачи
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •5. Применение метода конечных элементов для решения параболического уравнения Справочная информация
- •Вариационная постановка начально-краевой задачи
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •6. Применение метода конечных элементов для решения гиперболического уравнения Справочная информация
- •Вариационная постановка начально-краевой задачи
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •7. Решение экстремальных задач Справочная информация
- •Программное обеспечение
- •Пример решения на пэвм
- •Контрольные задания
- •Список литературы
Программное обеспечение
Для вычисления нескольких наибольших или наименьших собственных значений задачи на собственные значения с вещественными матрицами 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, приведены ниже