Численные методы линейной алгебры. Решение нелинейных уравнений и систем уравнений
Понятие сингулярных чисел, проблема нахождения их собственных значений. Вычисление сингулярного разложения матрицы с использованием метода вращений Якоби. Разработка и тестирование на примерах программы для вычисления сингулярного разложения матриц.
Рубрика | Математика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 23.11.2014 |
Размер файла | 21,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Федеральное агентство по образованию и науке
Пензенский государственный педагогический университет
им. В.Г. Белинского
ОТЧЕТ
к лабораторной работе №1
по дисциплине «Вычислительная математика»
"Численные методы линейной алгебры. Решение нелинейных уравнений и систем уравнений"
ПЕНЗА 2009
Задание
Вариант №8
Найти сингулярное разложение матрицы
Анализ задания
сингулярный число матрица вращение
Простейший способ вычисления сингулярного разложений матрицы А - вычислить собственные значения и векторы матриц ATA и AAT . Сингулярные числа - это корни квадратные из собственных чисел матрицы ATA или AAT. Левые сингулярные векторы являются собственными векторами матрицы AAT, правые сингулярные числа являются собственными векторам матрицы ATA. Так как матрицы ATA и AAT являются симметричными, то полная проблема собственных значений решается для них весьма эффективно.
Описание метода решения
Будем использовать метод вращений Якоби решения симметричной полной проблемы собственных значений [1].
При решении полной проблемы собственных значений мы будем использовать преобразование подобия. Матрицы A и B называются подобными, если существует невырожденная матрица подобия P , такая, что B = P-1AP .
В качестве матрицы подобия будем использовать матрицу плоских вращений (рис.1).
Рис.1
Пусть aij - ключевой элемент преобразуемой матрицы А. Матрица В, подобная А, формируется следующим образом:
1) Вычисляют , ,
2) Если , то , , (если , то лучше ), если же , то .
3) Вычисляют новые диагональные элементы:
4) Полагают (или для контроля вычисляют );
5) При таких, что , вычисляют изменяющиеся внедиагональные элементы:
6) Для всех остальных пар индексов принимают .
Описание программы
Программа состоит из файла lab1.m, содержащего исполняемый код, а также файлов mySVD.m и vs.m, содержащих функции вычисления сингулярного разложения и собственных чисел и векторов соответственно.
Функция вычисления собственных чисел и векторов:
function[V,S] = vs(A)
A - исходная матрица; V - матрица, столбцами которой являются собственные векторы матрицы А, S - вектор, компонентами которого являются собственные числа матрицы А.
Функция вычисления сингулярного разложения:
function[U,S,V]=mySVD(A)
A - исходная матрица; S - диагональная матрица с диагональю из невозрастающих сингулярных чисел, U и V - ортогональные матрицы.
Описание применения
Запустить файл lab1.m, вычисляющий сингулярное разложение тестовой матрицы.
Анализ результатов
Результаты решения задачи идентичны с решением задачи с использованием стандартных функций.
Собственные векторы, полученные в результате решения задачи, коллинеарны векторам, полученным стандартной функцией MATLAB.
Заключение
В соответствии с заданием была написана программа для вычисления сингулярного разложения матриц. Программа была протестирована на тестовом примере, приведенном в задании.
Список использованных источников
1. Вержбицкий, В. М. Основы численных методов: Учебник для вузов. - М.: Высш. Шк., 2002. - 840 с.: ил.
Приложения
Результаты работы
A =
9.0000 1.3000 0.5000 0.2000
-0.6000 14.0000 1.1000 0.7000
0.4000 1.2000 13.0000 0.7000
1.1000 1.1000 1.9000 18.0000
сингулярное разложение:
U =
0.0790 0.0905 0.0279 0.9924
0.2407 0.8330 -0.4915 -0.0813
0.2520 0.4286 0.8636 -0.0834
0.9340 -0.3380 -0.1087 -0.0405
S =
18.6948 0 0 0
0 14.2728 0 0
0 0 12.1948 0
0 0 0 8.9574
V =
0.0906 0.0080 0.0633 0.9938
0.2569 0.8353 -0.4861 0.0008
0.2864 0.4127 0.8605 -0.0843
0.9186 -0.3631 -0.1387 -0.0720
сингулярное разложение с помощью функции svd:
U1 =
0.0790 -0.0905 -0.0279 -0.9924
0.2407 -0.8330 0.4915 0.0813
0.2520 -0.4286 -0.8636 0.0834
0.9340 0.3380 0.1087 0.0405
S1 =
18.6948 0 0 0
0 14.2728 0 0
0 0 12.1948 0
0 0 0 8.9574
V1 =
0.0906 -0.0080 -0.0633 -0.9938
0.2569 -0.8353 0.4861 -0.0008
0.2864 -0.4127 -0.8605 0.0843
0.9186 0.3631 0.1387 0.0720
>>
Текст программы
lab1.m
%сингулярное разложение матрицы
clc;
%тестовая матрица
A = [9.0 1.3 0.5 0.2
-0.6 14.0 1.1 0.7
0.4 1.2 13.0 0.7
1.1 1.1 1.9 18.0]
%вывод результатов
disp('сингулярное разложение:');
[U,S,V] = mySVD(A)
%результаты, полученные с помощью стандартной фуекции MatLab
disp('сингулярное разложение с помощью функции svd:');
[U1,S1,V1] = svd(A)
mySVD.m
function[U,S,V]=mySVD(A)
%вычисление сингулярного разложения
[N,N] = size(A);
%функция вычисления собственных векторов и чисел матрицы
[U,S] = vs(A*A');
[V,S] = vs(A'*A);
%собственные числа на главной диагонали расположены по убыванию
for i=1:N-1
[Z,index] = max(S(i:N));
index = index+i-1;
if index~=i
sbuf = S(i);
S(i)=S(index);
S(index) = sbuf;
%---
buf = U(:,i);
U(:,i)= U(:,index);
U(:,index) = buf;
%---
buf = V(:,i);
V(:,i)= V(:,index);
V(:,index) = buf;
end;
end;
S = diag(S);
vs.m
function[V,S] = vs(A)
%вычисление собственных значений и векторов матрицы
[N,N] = size(A);
T = eye(N);
%критерий окончания итерационного процесса
fin=100;
%количество итераций
count=0;
while (fin>0.001&&count<100)
count = count+1;
%поиск максимального(обреченного) элемента
Al = zeros(N,N);
for i=1:N-1
Al(i,i+1:N) = A(i,i+1:N);
end;
[Y,i] = max(abs(Al));
[Y,j] = max(Y);
i=i(j);
%проверка окончания итерационного процесса
fin = sum(sum(abs(Al)));
%вычисление коэффициентов для преобразования матрицы
p = 2*A(i,j);
q = A(i,i)-A(j,j);
d = sqrt(p*p+q*q);
if(q~=0)
r=abs(q)/(2*d);
c=sqrt(0.5+r);
s=sqrt(0.5-r)*sign(p*q);
else
c=sqrt(2)/2;
s=c;
end;
%получение матрицы поворота
Tk = eye(N);
Tk(i,i) = c;
Tk(j,j)=c;
Tk(i,j)=-s;
Tk(j,i) = s;
T = T*Tk;
%получение подобной матрицы
B = A;
B(:,i) = c*A(:,i)+s*A(:,j);
B(i,:)=B(:,i)';
B(:,j) = -s*A(:,i)+c*A(:,j);
B(j,:)=B(:,j)';
B(i,i) = c*c*A(i,i)+s*s*A(j,j)+2*c*s*A(i,j);
B(j,j) = s*s*A(i,i)+c*c*A(j,j)-2*c*s*A(i,j);
B(i,j)=0;
B(j,i)=0;
A = B;
end;
%собственные числа
S = diag(sqrt(B));
%собственные векторы
V = T;
Размещено на Allbest.ru
Подобные документы
Линейные операции над матрицами. Умножение и вычисление произведения матриц. Приведение матрицы к ступенчатому виду и вычисление ранга матрицы. Вычисление обратной матрицы и определителя матрицы, а также решение систем линейных уравнений методом Гаусса.
учебное пособие [658,4 K], добавлен 26.01.2009Собственные значения и вектора матрицы. Применение итерационного метода вращений Якоби для решения симметричной полной проблемы собственных значений эрмитовых матриц. Алгоритмы решения задач и их реализация на современных языках программирования.
курсовая работа [321,6 K], добавлен 15.11.2015Сравнительный анализ численных методов решения систем линейных алгебраических уравнений. Вычисление определителей и обратных матриц. Реализация методов в виде машинных программ на языке высокого уровня и решение задач на ЭВМ. Модификации метода Гаусса.
реферат [85,2 K], добавлен 04.03.2011Нахождение собственных значений и собственных векторов матриц. Нетривиальное решение однородной системы линейных алгебраических уравнений. Метод нахождения характеристического многочлена, предложенный А.М. Данилевским. Получение формы Жордано: form.exe.
курсовая работа [53,4 K], добавлен 29.08.2010Задачи и методы линейной алгебры. Свойства определителей и порядок их вычисления. Нахождение обратной матрицы методом Гаусса. Разработка вычислительного алгоритма в программе Pascal ABC для вычисления определителей и нахождения обратной матрицы.
курсовая работа [1,1 M], добавлен 01.02.2013Решение уравнения гармонического осциллятора при помощи разложения в ряд Тейлора. Применение метода индуцированной алгебры. Решение уравнения гармонического осциллятора при помощи метода индуцированной алгебры. Сравнение работоспособности методов решений.
курсовая работа [92,0 K], добавлен 24.05.2012Задачи нахождения собственных значений и соответствующих им собственных векторов. Математическое обоснование метода итераций. Алгоритм метода Леверрье-Фаддеева, численное решение оценки собственных значений матриц. Листинг программы на языке "Pascal".
курсовая работа [221,8 K], добавлен 05.11.2014Численные методы решения систем линейных алгебраических уравнений, алгоритмы, их реализующие. Нормы матриц и векторов, погрешность приближенного решения системы и обусловленность матриц. Интеграционные методы решения: методы простой итерации, релаксации.
учебное пособие [340,6 K], добавлен 02.03.2010Задачи вычислительной линейной алгебры. Математическое моделирование разнообразных процессов. Решение систем линейных алгебраических уравнений большой размерности. Метод обратной матрицы и метод Гаусса. Критерии совместности и определенности системы.
курсовая работа [220,0 K], добавлен 21.10.2011Элементы линейной алгебры. Виды матриц и операции над ними. Свойства определителей матрицы и их вычисление. Решение систем линейных уравнений в матричной форме, по формулам Крамера и методу Гаусса. Элементы дифференциального и интегрального исчислений.
учебное пособие [1,5 M], добавлен 06.11.2011