質問編集履歴
5
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
(2)-(1)*-2/1,(3)-(1)*-5/1より
|
14
14
|
|
15
|
-
{0,9,0,5,-1}(5)
|
15
|
+
~~{0,9,0,5,-1}~~{0, 1, 14, -11, 19}(5)
|
16
|
-
|
16
|
+
|
17
|
-
{0,14,-8,21,-26}(6)が得られますが、{0,9,0,5,-1},{0,14,-8,21,-26}の置いてある位置、というか保存先は{0=(1,0),9=(1,1),0=(1,2),5=(1,3),-1=(1,4)}(2)´
|
17
|
+
{0,14,-8,21,-26}(6)が得られますが、~~{0,9,0,5,-1}~~{0, 1, 14, -11, 19},{0,14,-8,21,-26}の置いてある位置、というか保存先は{0=(1,0),9=(1,1),0=(1,2),5=(1,3),-1=(1,4)}(2)´
|
18
18
|
|
19
19
|
{0=(2,0),14=(2,1),-8=(2,2),21=(2,3),-26=(2,4)}(3)´となっているのでしょうか?
|
20
20
|
|
4
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -253,3 +253,37 @@
|
|
253
253
|
参考にしたサイトはこちらです。
|
254
254
|
|
255
255
|
[https://www.mk-mode.com/octopress/2013/09/24/cpp-simultaneous-equation-by-gauss-elimination/](https://www.mk-mode.com/octopress/2013/09/24/cpp-simultaneous-equation-by-gauss-elimination/)
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
**7/25(16:54)<編集>**
|
260
|
+
|
261
|
+
```
|
262
|
+
|
263
|
+
for (k = 0; k < N -1; k++) {
|
264
|
+
|
265
|
+
for (i = k + 1; i < N; i++) {
|
266
|
+
|
267
|
+
d = a[i][k] / a[k][k];
|
268
|
+
|
269
|
+
for (j = k + 1; j <= N; j++)
|
270
|
+
|
271
|
+
a[i][j] -= a[k][j] * d;
|
272
|
+
|
273
|
+
}
|
274
|
+
|
275
|
+
}
|
276
|
+
|
277
|
+
```
|
278
|
+
|
279
|
+
の部分での過程の処理を実際に書いてみたのですが、うまく計算過程が書けませんでした。
|
280
|
+
|
281
|
+
```
|
282
|
+
|
283
|
+
k=0,i=1,d = a[1][0] / a[0][0],a[1][1] =a[1][1] - a[0][1] * a[1][0] / a[0][0]
|
284
|
+
|
285
|
+
```となります。
|
286
|
+
|
287
|
+
この後a[0][1]に a[1][0] / a[0][0]を掛けているということは(0,0)は0として無いもののように扱いa[i][j] -= a[k][j] * dのjの値を(j <= Nの範囲で)変えながら計算してi行に存在する項を消して計算しているのでしょうか?
|
288
|
+
|
289
|
+
わかりにくくて申し訳ありません。どうしても理解したいと思い、何度も紙に書いて計算を行っています。
|
3
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
a[i][j] -= a[k][j] * d;
|
32
32
|
|
33
|
-
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行に
|
33
|
+
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行に存在する係数すべてにaik/akkを掛けられるということでしょうか?
|
34
34
|
|
35
35
|
|
36
36
|
|
2
編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
連立方程式の計算過程は紙に書けば解くことができるのでわかるのですが、プログラムの計算の過程が紙に書いて計算してみたのですがうまく理解できません。
|
2
2
|
|
3
|
-
質問は
|
3
|
+
質問は3つあります。
|
4
4
|
|
5
5
|
{ 1.0, -2.0, 3.0, -4.0, 5.0}(1)
|
6
6
|
|
@@ -26,6 +26,14 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
+
最後にプログラムのfor (j = k + 1; j <= N; j++)
|
30
|
+
|
31
|
+
a[i][j] -= a[k][j] * d;
|
32
|
+
|
33
|
+
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行にある係数すべてにaik/akkを掛けられるということでしょうか?
|
34
|
+
|
35
|
+
|
36
|
+
|
29
37
|
過程の計算処理がわからないプログラムは以下の部分です。
|
30
38
|
|
31
39
|
```
|
1
hennsyuu
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|