なぜ、次のコードが行列 'u'に対して間違った答えを与えるのか理解できません。行列「u」は同一性マトリクスと等しくなければならないが、値の一部のみが正しい。なぜこれが起こっているのかも理解できたら助けてくれますか?あなたは浮動小数点数(Floating point numbers)とない本当の「本物」の数字を操作しているので、行列乗算誤差 -
for (k=0; k<3; k++) {
int j;
for (j=0; j<3; j++) {
int h;
for (h=0; h<3; h++) {
u[k][j]+=(F[k][h])*(B[h][j]);
}
}
}
Matrix F
2 -2.2 0.6
-0 0.4 -0.2
-3 3.2 -0.6
Matrix B
2 3 1
3 3 2
6 1 4
Matrix u
1 -4.44089e-16 0
0 1 0
8.88178e-16 1.33227e-15 1
興味深い「*コードは正しいが答えは間違っている*」;あなたは間違った出力を引き起こすと思いますか? –
私は8.88178e-16のような数字はゼロと同じであるとは言いません。しかし、彼らは本当に本当に小さいです。したがって、算術精度によるエラーが発生している可能性があります。 – infixed
ようこそ! [mcve]または[SSCCE(Short、Self Contained、Correct Example)](** http://sscce.org)でご質問を**編集** ** – NathanOliver