在檢查一些矩陣乘法運算時,我遇到了一個奇怪的行爲。當我「手動」執行乘法(使用積和和)以及使用矩陣乘法運算符%*%時,會得到不同的結果。R中的矩陣乘法,奇怪的結果
c <- 1:10
a <- 100^(0:9)
p1 <- sum(a*c)
p2 <- a%*%c
p1==p2
[,1]
[1,] FALSE
p1-p2
[,1]
[1,] -2048
然而,當我使用任何其他值的(例如,一個< - 101^0:9),我得到了相同的結果:
c <- 1:10
a <- 101^(0:9)
p1 <- sum(a*c)
p2 <- a%*%c
p1==p2
[,1]
[1,] TRUE
p1-p2
[,1]
[1,] 0
任何想法,爲什麼這種情況正在發生?
謝謝 佩德羅
請參閱[this](http://stackoverflow.com/questions/9508518/why-are-these-numbers-not -等於)。使用'all.equal'來測試是否相等。 – Roland
雖然這是在R-FAQ中,但看到它真的是一個「新手計算機數學」常見問題解答,有沒有什麼地方可以提供答案? –
「任何其他值」不一定是好的。嘗試'f < - 函數(b){a < - b ^(0:9); c < - 1:10; sum(a * c) - a%*%c}; bvec < - 80:120; r < - sapply(bvec,f); plot(bvec,r,type =「b」)' –