русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вычисление собственных значений и сингулярных чисел


Дата добавления: 2015-07-23; просмотров: 745; Нарушение авторских прав


Во многих областях математики и прикладных наук большое значение имеют средства для вычисления собственных значений (собственных чисел, характеристических чисел, решений векового уравнения) матриц, принадлежащих им векторов и сингулярных чисел. В новой версии MATLAB собственные вектора нормализуются, иначе, чем в предыдущих. Основной критерий: либо V'V=I, либо V'BV=I, где V — собственный вектор, I — единичная матрица. Поэтому результаты вычислений в новой версии, как правило, отличаются. Ниже дан список средств решения векового уравнения, реализованных в системе MATLAB.

Несимметрические матрицы могут быть плохо обусловлены при вычислении их собственных значений. Малые изменения элементов матрицы, такие как ошибки округления, могут вызвать большие изменения в собственных значениях. Масштабирование — это попытка перевести каждую плохую обусловленность собственных векторов матрицы в диагональное масштабирование. Однако масштабирование обычно не может преобразовать несимметрическую матрицу в симметрическую, а только пытается сделать (векторную) норму каждой строки равной норме соответствующего столбца. Масштабирование значительно повышает стабильность собственных значений.

· [D.B] = balance(A) — возвращает диагональную матрицу D, элементы которой являются степенями основания 2, и масштабированную матрицу В, такую, что B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;

· В = balance(A) — возвращает масштабированную матрицу В. Пример использования функции balance:

» А=[1 1000 10000:0.0001 1 1000:0.000001 0.0001 1]

А =

1.0е+004 *

0.0001 0.1000 1.0000

0.0000 0.0001 0.1000

0.0000 0.0000 0.0001

» [F.G]=balance(A)

F =

1.0е+004 *

3.2768 0 0

0 0.0032 0

0 0 0.0000

G =

1.0000 0.9766 0.0095

0.1024 1.0000 0.9766



1.0486 0.1024 1.0000

Величина, связывающая погрешность вычисления собственных значений с погрешностью исходных данных, называется числом обусловленности (собственных значений) матрицы и вычисляется следующим образом:

cond(V) = norm(V)*norm(inv(V)) где [V.D]=eig(A).[B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;]

· eig(A) — возвращает вектор собственных значений квадратной полной или симметрической разреженной матрицы А обычно после автоматического масштабирования, но для больших разреженных матриц (в терминологии MATLAB —

это просто полные матрицы со сравнительно большим [ Но небольшим по сравнению с числом нулей разреженной матрицы. Эталонное число нулей разреженной матрицы данного размера можно вычислить, применив к полной матрице этого же размера функцию sparse. — Примеч. ред. ] числом нулей), а также во всех случаях, где помимо собственных значений необходимо получать и собственные вектора разреженной матрицы, вместо нее рекомендовано использовать eigs(A);

· eig(A.B) - возвращает вектор обобщенных собственных значений квадратных матриц А и В;

o [V.D] = eig(A.B) — вычисляет диагональную матрицу обобщенных собственных значений D и матрицу V, столбцы которой являются соответствующими собственными векторами (правыми собственными векторами), таким образом что А V = В V D;

o [V.D] = eig(A) — вычисляет диагональную матрицу собственных значений О матрицы А и матрицу V, столбцы которой являются соответствующими собственными векторами (правыми собственными векторами), таким образом что А V = V D.

Нужно использовать [W,D]=e1g(A'); W=W, чтобы вычислить левые собственные вектора, которые соответствуют уравнению W*A=D*W.

· [V.D] = eig(A,'nobalance') — находит собственные векторы и собственные значения без предварительного масштабирования. Иногда это улучшает обусловленность входной матрицы, обеспечивая большую точность вычисления собственных векторов для необычно масштабированных матриц;

· eig(A.B. 'chol') — возвращает вектор, содержащий обобщенные собственные значения, используя разложение матрицы В по методу Холецкого; если А - симметрическая квадратная матрица и В — симметрическая положительно определенная квадратная матрица, то eig(A.B) по умолчанию работает точно так же;

· eig(A,B, 'qz') — не требует, чтобы матрицы были симметрическими и возвращает вектор, содержащий обобщенные собственные значения, используя QZ-алгоритм; при явном указании этого флага QZ-алгоритм используется вместо алгоритма Холецкого даже для симметрической матрицы и симметрической положительно определенной матрицы В, так как может давать более стабильные значения, чем предыдущий метод. Для несимметрических матриц в MATLAB 6 всегда используется QZ-алгоритм и параметр 'chol' или 'qz' игнорируется;

· [V.D] = eig(A.B) — возвращает диагональную матрицу обобщенных собственных значений D и матрицу V, чьи столбцы являются соответствующими собственными векторами, так чтобы A*V=B*V*D. Пример:

» В = [3 -12 -.6 2*eps:-2 48 -1 -eps;-eps/8 eps/2 -1 10;-.5 -.5 .3 1]

В =

3.0000 -12.0000 -0.60000.0000

-2.0000 48.0000-1.0000-0.0000

-0.0000 0.0000 -1.0000 10.0000

-0.5000 -0.5000 0.3000 1.0000

» [G.H]=eig(B)

G =

-0.2548 0.7420 -0.4842 0.1956

0.9670 0.0193 -0.0388 0.0276

-0.0015 -0.6181 -0.8575 0.9780

-0.0075 -0.2588 -0.1694 -0.0676

H =

48.5287 0 0 0

0 3.1873 0 0

0 0 0.9750 0

0 0 0 -1.6909

· svd(X) — возвращает вектор сингулярных чисел. Команда svd выполняет сингулярное разложение матрицы X;

· [U.S, V] = svd(X) — вычисляет диагональную матрицу S тех же размеров, которые имеет матрица X, с неотрицательными диагональными элементами в порядке их убывания, и унитарные матрицы U и V, так что X=U*S*V ' ;

· [U.S.V] = svd(X.O) — выполняет экономичное сингулярное разложение. Пример:

» F=[23 12;3 5:6 0]

F =

23 12

3 5

6 0

» [k,l,m]=svd(F)

k=

         
  0.9628 -0.0034 -0.2702  
  0.1846 0.7385 0.6485  
  0.1974 -0.6743 0.7116  
  l=      
  26.9448    
  4.1202    
     
  m=      

0.8863 -0.4630

0.4630 0.8863



<== предыдущая лекция | следующая лекция ==>
LU- и QR-разложения | Приведение матриц к форме Шура и Хессенберга


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.087 сек.