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

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

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

» А=[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, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;]

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

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

» В = [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

» 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

0


0

4.1202


0

0


m=

0.8863     -0.4630 

0.4630     0.8863