Я новичок в R и изучаю. Однако я столкнулся с проблемой. Я должен создать матрицу 4 × 4 со значениями 1, 2, 3 и 4 по диагонали.
Пусть значения вне диагонали будут между 0,01 и 0,2. Это просто означает, что большинство недиагональных членов на транспонированных позициях близки по значению
Я попытался создать матрицу из 16 элементов, а затем создать вектор для диагональных значений.
library(Matrix)
library(matlib)
B<-runif(16,0.01,0.02)
Sb<-matrix(B,ncol = 4)
diag(Sb)<-c(1,2,3,4)
Ib<-inv(Sb)
Ib
X<-forceSymmetric(Sb)
Y<-forceSymmetric(Ib)
PM<- Y%*%X
PM
Вывод выглядит так
Матрица создана Первоначально Matrix Sb
Инверсия матрицы, т.е. Ib
Принудительная симметричная матрица X
Принудительная симметричная матрица Y
Финальная матрица PM
Чтобы проверить, является ли матрица симметричной, я пытаюсь использовать свойство, что матрица при умножении на обратную матрицу дает матрицу единства
Я создал обратную матрицу и попытался перемножить исходную матрицу, но результат не похож на матрицу единства. Прикрепление скриншотов для матрицы, которую я получаю
Может кто-нибудь сказать мне, где я делаю неправильно? Заранее спасибо,