質問編集履歴

5

編集

2018/07/25 08:47

投稿

carnage0216
carnage0216

スコア194

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

編集

2018/07/25 08:47

投稿

carnage0216
carnage0216

スコア194

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

編集

2018/07/25 08:46

投稿

carnage0216
carnage0216

スコア194

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が変化してある行にる係数すべてにaik/akkを掛けられるということでしょうか?
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

編集

2018/07/25 07:46

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  連立方程式の計算過程は紙に書けば解くことができるのでわかるのですが、プログラムの計算の過程が紙に書いて計算してみたのですがうまく理解できません。
2
2
 
3
- 質問は2つあります。
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

2018/07/25 01:33

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
File without changes