Обратная матрица и умножение
Я новичок в мире матриц, извините за этот основной вопрос, который я не мог понять:
У меня четыре матрицы (одна неизвестная).
Матрица Х
x <- c(44.412, 0.238, -0.027, 93.128, 0.238, 0.427, -0.193, 0.673, 0.027,
-0.193, 0.094, -0.428, 93.128, 0.673, -0.428, 224.099)
X <- matrix(x, ncol = 4 )
Матрица B: должна быть решена, 1 X 4 (столбец x nrows), со значениями b1, b2, b3, b4
Матрица G
g <- c(33.575, 0.080, -0.006, 68.123, 0.080, 0.238, -0.033, 0.468, -0.006,
-0.033, 0.084, -0.764, 68.123, 0.468, -0.764, 205.144)
G <- matrix(g, ncol = 4)
Матрица А
a <- c(1, 1, 1, 1) # one this case but can be any value
A <- matrix(a, ncol = 1)
Решение:
B = inv(X) G A # inv(X) is inverse of the X matrix multiplied by G and A
Я не знал, как решить это правильно, особенно в обратной матрице. Ценю твою помощь.
2 ответа
Я предполагаю, что Ник и Бен - оба учителя, и у них даже больше, чем у меня, умение делать домашнее задание других людей, но путь к полному решению был настолько очевидным, что не было большого смысла не делать этого. следующий шаг:
B = solve(X) %*% G %*% A
> B
[,1]
[1,] -2.622000509
[2,] 7.566857261
[3,] 17.691911600
[4,] 2.318762273
Метод инверсии QR можно вызвать, указав в качестве второго аргумента матрицу тождественности:
> qr.solve(G, diag(1,4))
[,1] [,2] [,3] [,4]
[1,] 0.098084556856 -0.0087200426695 -0.3027373205 -0.0336789016478
[2,] -0.008720042669 4.4473233701790 1.7395207242 -0.0007717410073
[3,] -0.302737320546 1.7395207241703 13.9161591761 0.1483895429511
[4,] -0.033678901648 -0.0007717410073 0.1483895430 0.0166129089935
Более устойчивым в вычислительном отношении решением является использование qr
скорее, чем solve
,
method1 <- solve(X) %*% G %*% A
method2 <- qr.coef(qr(X), G) %*% A
stopifnot(isTRUE(all.equal(method1, method2)))
Смотрите примеры в ?qr
,