R右矩阵除法

时间:2013-11-21 09:10:52

标签: r matrix linear-algebra numeric matrix-multiplication

在R中进行左右矩阵划分的最简洁,最快速,数值最稳定,最常用的R-idiomatic方法是什么?我了解左分区inv(A)*B通常是使用solve(a,b)完成的,但B*inv(A)怎么样?真的是计算t(solve(t(A),t(B)))的最佳方法吗?

2 个答案:

答案 0 :(得分:2)

它是B %*% solve(A),因为solve(A)找到A的倒数。

答案 1 :(得分:1)

我没有比B %*% solve(A)更好的解决方案,但我确实想指出,一般solve(A,B)solve(A) %*% B更快,更稳定,更稳定。

> A = matrix(rnorm(10000),100,100)
> B = matrix(rnorm(10000),100,100)
> microbenchmark(solve(A,B), solve(A) %*% B, t(solve(t(B),t(A))), B %*% solve(A))
Unit: microseconds
             expr     min       lq      mean   median       uq       max neval
      solve(A, B)     481.695 604.2435  722.2512 677.2455  761.735  1280.888   100
   solve(A) %*% B     628.243 830.2095 1056.3947 927.0130 1204.682  5275.030   100
t(solve(t(B), t(A)))  603.855 792.1360 1164.7210 924.0895 1122.184 10351.307   100
   B %*% solve(A)     645.119 784.1990 1070.4751 927.9400 1097.601  7866.591   100