teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

微修正

2018/08/03 19:51

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -33,7 +33,7 @@
33
33
  ```
34
34
  // [A'']
35
35
  for (i = N - 1; i >= 0; i--) {
36
- double* d = &a[I][N];
36
+ double* d = &a[i][N];
37
37
  *d /= a[i][i];
38
38
  for (j = i + 1; j < N; j++) {
39
39
  *d -= a[i][j] * a[j][N] / a[i][i];

2

加筆

2018/08/03 19:51

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -27,4 +27,16 @@
27
27
  d = a[N-1][N]/ a[N-1][N-1];
28
28
  ```
29
29
 
30
- [B']は a[N-1][N]を書き換えない。両者が同じワケがないやろ。
30
+ [B']は a[N-1][N]を書き換えない。両者が同じワケがないやろ。
31
+
32
+ 毎回 a[i][N] にアクセスすることで速度低下を懸念するなら
33
+ ```
34
+ // [A'']
35
+ for (i = N - 1; i >= 0; i--) {
36
+ double* d = &a[I][N];
37
+ *d /= a[i][i];
38
+ for (j = i + 1; j < N; j++) {
39
+ *d -= a[i][j] * a[j][N] / a[i][i];
40
+ }
41
+ }
42
+ ```

1

微修正

2018/08/03 19:50

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -2,8 +2,9 @@
2
2
  // [A]
3
3
  for (i = N - 1; i >= 0; i--) {
4
4
  a[i][N] /= a[i][i];
5
- for (j = i + 1; j < N; j++)
5
+ for (j = i + 1; j < N; j++) {
6
6
  a[i][N] -= a[i][j] * a[j][N] / a[i][i];
7
+ }
7
8
  }
8
9
  ```
9
10
  ```