Ich habe mich gefragt, wie Sie die Umkehrung einer Matrix empfehlen können.
Die Wege, die ich gefunden habe, scheinen nicht zufriedenstellend zu sein. Beispielsweise,
> c=rbind(c(1, -1/4), c(-1/4, 1))
> c
[,1] [,2]
[1,] 1.00 -0.25
[2,] -0.25 1.00
> inv(c)
Error: could not find function "inv"
> solve(c)
[,1] [,2]
[1,] 1.0666667 0.2666667
[2,] 0.2666667 1.0666667
> solve(c)*c
[,1] [,2]
[1,] 1.06666667 -0.06666667
[2,] -0.06666667 1.06666667
> qr.solve(c)*c
[,1] [,2]
[1,] 1.06666667 -0.06666667
[2,] -0.06666667 1.06666667
Vielen Dank!
r
matrix-inverse
Tim
quelle
quelle
c
).Antworten:
solve(c)
gibt die richtige Umkehrung. Das Problem mit Ihrem Code ist, dass Sie den falschen Operator für die Matrixmultiplikation verwenden. Sie sollten verwendensolve(c) %*% c
, um die Matrixmultiplikation in R aufzurufen.R führt beim Aufrufen eine Element-für-Element-Multiplikation durch
solve(c) * c
.quelle
Sie können die Funktion ginv () (Moore-Penrose generalized inverse) im MASS- Paket verwenden
quelle
Beachten Sie, dass Sie, wenn Sie Wert auf Geschwindigkeit legen und sich nicht um Singularitäten kümmern müssen,
solve()
dies vorziehen sollten,ginv()
da es viel schneller ist, wie Sie überprüfen können:quelle