2

これは、[Rの初心者向けガイド]の演習からの私の解決プロセスです。

> Q
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    2    1
[3,]    2    3    0
> solve(Q)
      [,1]  [,2]  [,3]
[1,] -0.12  0.36 -0.16
[2,]  0.08 -0.24  0.44
[3,]  0.32  0.04 -0.24
> solve(Q)%*%Q
     [,1]          [,2] [,3]
[1,]    1 -2.775558e-17    0
[2,]    0  1.000000e+00    0
[3,]    0  0.000000e+00    1

単位行列が出てくるはずだという正しい答えが得られないのはなぜだろうか。

4

2 に答える 2

6

zapsmall最終結果で関数を使用します。浮動小数点の表現と丸め誤差のために、単純な算術(および場合によってはそれさえ)以上のものは、非常に近い値になりますが、期待されるものと完全には同じではありません。この場合、小数点以下の桁数がゼロ以外の最初の桁の前に16個の0がある値が表示されています。このzapsmall関数は、これらの小さな、本質的に0の値を0に変換して、表示されるものが期待するものと一致するようにします。

于 2013-03-22T16:33:50.280 に答える
4

これはプログラミング エラーではなく、いわゆる「浮動小数点演算」の結果です。適切な長さに丸めると、恒等行列が得られます。

Q2 <- solve(Q)%*%Q
round(Q2, 4)

浮動小数点演算の詳細については、こちらを参照してください

于 2013-03-22T16:32:27.180 に答える