Собственная функция в R-программировании - PullRequest
1 голос
/ 11 марта 2020

Рассмотрим квадрат A, используя функцию eigen() в R.

Мы знаем, что для A = V x D x V ^ (- 1) тогда A ^ n = V x D ^ nx V ^ (- 1), где столбцы V содержат собственные векторы A и D - диагональная матрица с собственными значениями A на диагонали.

`                [,1] [,2] [,3] [,4]
           [1,]    1    5    9   13
           [2,]    2    6   10   14
A =        [3,]    3    7   11   15
           [4,]    4    8   12   16    `            

Результат должен быть таким же, как A * A

`     [,1] [,2] [,3] [,4]
 [1,]   90  202  314  426
 [2,]  100  228  356  484
 [3,]  110  254  398  542
 [4,]  120  280  440  600    `      

Я пробовал

V <- eigen(A)$vectors
square_dia <- diag(eigen(A)$values,4,4)
D <- diag(A)*diag(A)

Но я не смог получить желаемый результат.

1 Ответ

2 голосов
/ 11 марта 2020

Я получаю соответствующие результаты. Возможно, вы где-то перепутали %*% (матричный продукт) с * (поэлементно / продукт Адамара)?

V <- eigen(A)$vectors
D <- diag(eigen(A)$values)
M1 <- V %*% D^2 %*% solve(V)
M2 <- A %*% A
all.equal(M1, M2) ## TRUE

Возможно, вас заинтересует оператор %^% (матричная мощность) из expm пакет ...

...