回答編集履歴
4
追記2
answer
CHANGED
@@ -100,4 +100,15 @@
|
|
100
100
|
`if (m.get(i).get(k) > t) {` を
|
101
101
|
`if (Math.abs(m.get(i).get(k)) > t) {` に修正してください。
|
102
102
|
|
103
|
-
今回のデータでは、たまたま結果が正しくなっていました。
|
103
|
+
今回のデータでは、たまたま結果が正しくなっていました。
|
104
|
+
|
105
|
+
**追記2**
|
106
|
+
```java
|
107
|
+
if (p != k)
|
108
|
+
for (int j = 0; j <= N; j++) {
|
109
|
+
t = m.get(k).get(j);
|
110
|
+
m.get(k).set(j, m.get(p).get(j));
|
111
|
+
m.get(p).set(j, t);
|
112
|
+
}
|
113
|
+
```
|
114
|
+
これは、`if (p != k) java.util.Collections.swap(m, k, p);` と書き換え可能です。
|
3
追記
answer
CHANGED
@@ -93,4 +93,11 @@
|
|
93
93
|
0.000 0.000 0.000 1.000 1.000
|
94
94
|
|
95
95
|
2.000 -1.000 3.000 1.000
|
96
|
-
```
|
96
|
+
```
|
97
|
+
**追記**
|
98
|
+
上記のコードに間違いがありました。
|
99
|
+
|
100
|
+
`if (m.get(i).get(k) > t) {` を
|
101
|
+
`if (Math.abs(m.get(i).get(k)) > t) {` に修正してください。
|
102
|
+
|
103
|
+
今回のデータでは、たまたま結果が正しくなっていました。
|
2
コードの修正
answer
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
}
|
49
49
|
|
50
50
|
for (int k = N; --k > 0; )
|
51
|
-
for (int i = k
|
51
|
+
for (int i = k; --i >= 0; ) {
|
52
52
|
double t = m.get(i).get(k) / m.get(k).get(k);
|
53
53
|
for (int j = 0; j <= N; j++)
|
54
54
|
m.get(i).set(j, m.get(i).get(j) - t * m.get(k).get(j));
|
1
コードの修正
answer
CHANGED
@@ -29,35 +29,31 @@
|
|
29
29
|
for (int k = 0; k < N; k++) {
|
30
30
|
double t = Math.abs(m.get(k).get(k));
|
31
31
|
int p = k;
|
32
|
-
for (int i = k+1; i < N; i++)
|
32
|
+
for (int i = k+1; i < N; i++)
|
33
33
|
if (m.get(i).get(k) > t) {
|
34
34
|
t = Math.abs(m.get(i).get(k));
|
35
35
|
p = i;
|
36
36
|
}
|
37
|
-
}
|
38
|
-
if (p != k)
|
37
|
+
if (p != k)
|
39
38
|
for (int j = 0; j <= N; j++) {
|
40
39
|
t = m.get(k).get(j);
|
41
40
|
m.get(k).set(j, m.get(p).get(j));
|
42
41
|
m.get(p).set(j, t);
|
43
42
|
}
|
44
|
-
}
|
45
43
|
for (int i = k+1; i < N; i++) {
|
46
44
|
t = m.get(i).get(k) / m.get(k).get(k);
|
47
|
-
for (int j = k; j <= N; j++)
|
45
|
+
for (int j = k; j <= N; j++)
|
48
|
-
m.get(i).set(j, m.get(i).get(j) - t * m.get(k).get(j));
|
46
|
+
m.get(i).set(j, m.get(i).get(j) - t * m.get(k).get(j));
|
49
|
-
}
|
50
47
|
}
|
51
48
|
}
|
52
49
|
|
53
|
-
for (int k = N; --k > 0; )
|
50
|
+
for (int k = N; --k > 0; )
|
54
51
|
for (int i = k-1; i >= 0; i--) {
|
55
52
|
double t = m.get(i).get(k) / m.get(k).get(k);
|
56
|
-
for (int j = 0; j <= N; j++)
|
53
|
+
for (int j = 0; j <= N; j++)
|
57
54
|
m.get(i).set(j, m.get(i).get(j) - t * m.get(k).get(j));
|
58
|
-
}
|
59
55
|
}
|
60
|
-
|
56
|
+
|
61
57
|
for (int k = 0; k < N; k++) {
|
62
58
|
m.get(k).set(N, m.get(k).get(N) / m.get(k).get(k));
|
63
59
|
m.get(k).set(k, 1.0);
|