2016-01-25 2 views
1

У меня есть два вектора:R условное изменение номер

val - содержащие собственные

vec - содержащие собственные векторы

С их помощью я вычислить квадратную матрицу (см код ниже):

val=c(8.4632323330381958, 0.83430218022179237, 0.22373186168113263) 

vec=c(-0.40468599875813305, -2.2807177284758566, -0.57101165517074848, 
     -0.57101165517074848, -12.73903, -29.43965303897123, 
     0.62945422198403489, 0.37595876464123751, 0.86002662343913638) 

newMat<-matrix(vec, ncol=3)%*%diag(val)%*%t(matrix(vec, ncol=3)) 

Теперь обратите внимание на то, что условное число равно 8,46/0,22 = 37,8

Затем я использую команду R kappa(newMat), чтобы рассчитать условное число и результат 14984, что намного больше, чем на самом деле!

Кроме того, когда я использую eigen(newMat) для того, чтобы получить собственные векторы и собственные значения, я получаю совершенно другой (из указанных выше) собственных значений и собственных векторов и эта разница не может быть объяснена стандартизацией и т.д.

Пожалуйста, помогите мне понять, что является причиной таких результатов.

Так что полный код, который представит проблемы является:

val=c(8.4632323330381958, 0.83430218022179237, 0.22373186168113263) 

vec=c(-0.40468599875813305, -2.2807177284758566, -0.57101165517074848, 
     -0.57101165517074848, -12.73903, -29.43965303897123, 
     0.62945422198403489, 0.37595876464123751, 0.86002662343913638) 

newMat<-matrix(vec, ncol=3)%*%diag(val)%*%t(matrix(vec, ncol=3)) 

max(val)/min(val) 

kappa(newMat) 

eigen(newMat) 
+0

Ваши собственные векторы не кажутся ортогональными. Было бы полезно, если бы вы могли опубликовать матрицу, используемую для генерации этих собственных значений и собственных векторов. – WaltS

+0

У меня нет исходной матрицы, так как я использую алгоритм максимизации итераций, где собственные векторы и собственные значения являются параметрами, и у меня есть ограничение для того, чтобы собственные значения были больше, чем некоторые частные значения. Матрица, что я получаю до моего алгоритма не удается (из-за отрицательной определенной матрицей): матрица (с (1,7467031793885455, 14,006422915167448, +31,985771741674913, +14,0064229151674482, +182,738019307759714, +417,282696074095213, +31,9857717416749132, +417,282696074095270, +952,866022478541367), Ncol = 3) – Bogdan

+0

Кажется, я понимаю, проблема. Мой алгоритм не контролирует ортогональность, поэтому QXQ^T - симметричная матрица, но ее собственные векторы и собственные значения отличаются от тех, которые находятся в QXQ^T. Большое спасибо! – Bogdan

ответ

0

Благодаря Walts я понял, что проблема была в неортогональных eigenvectoros.

Смежные вопросы