Численные методы линейной алгебры. Решение нелинейных уравнений и систем уравнений

Понятие сингулярных чисел, проблема нахождения их собственных значений. Вычисление сингулярного разложения матрицы с использованием метода вращений Якоби. Разработка и тестирование на примерах программы для вычисления сингулярного разложения матриц.

Рубрика Математика
Вид лабораторная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.