質問編集履歴
5
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
{ 5.0, 4.0, 7.0, 1.0, -1.0}(3)
|
6
6
|
{ 9.0, 7.0, 3.0, 5.0, 4.0}(4)
|
7
7
|
(2)-(1)*-2/1,(3)-(1)*-5/1より
|
8
|
-
{0,9,0,5,-1}(5)
|
8
|
+
~~{0,9,0,5,-1}~~{0, 1, 14, -11, 19}(5)
|
9
|
-
{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)´
|
9
|
+
{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)´
|
10
10
|
{0=(2,0),14=(2,1),-8=(2,2),21=(2,3),-26=(2,4)}(3)´となっているのでしょうか?
|
11
11
|
計算後の係数のデータがどこにいくのかわかりませんでした。
|
12
12
|
その後の計算は
|
4
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -125,4 +125,21 @@
|
|
125
125
|
}
|
126
126
|
```
|
127
127
|
参考にしたサイトはこちらです。
|
128
|
-
[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/)
|
128
|
+
[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/)
|
129
|
+
|
130
|
+
**7/25(16:54)<編集>**
|
131
|
+
```
|
132
|
+
for (k = 0; k < N -1; k++) {
|
133
|
+
for (i = k + 1; i < N; i++) {
|
134
|
+
d = a[i][k] / a[k][k];
|
135
|
+
for (j = k + 1; j <= N; j++)
|
136
|
+
a[i][j] -= a[k][j] * d;
|
137
|
+
}
|
138
|
+
}
|
139
|
+
```
|
140
|
+
の部分での過程の処理を実際に書いてみたのですが、うまく計算過程が書けませんでした。
|
141
|
+
```
|
142
|
+
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]
|
143
|
+
```となります。
|
144
|
+
この後a[0][1]に a[1][0] / a[0][0]を掛けているということは(0,0)は0として無いもののように扱いa[i][j] -= a[k][j] * dのjの値を(j <= Nの範囲で)変えながら計算してi行に存在する項を消して計算しているのでしょうか?
|
145
|
+
わかりにくくて申し訳ありません。どうしても理解したいと思い、何度も紙に書いて計算を行っています。
|
3
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
最後にプログラムのfor (j = k + 1; j <= N; j++)
|
16
16
|
a[i][j] -= a[k][j] * d;
|
17
|
-
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行に
|
17
|
+
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行に存在する係数すべてにaik/akkを掛けられるということでしょうか?
|
18
18
|
|
19
19
|
過程の計算処理がわからないプログラムは以下の部分です。
|
20
20
|
```
|
2
編集
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
連立方程式の計算過程は紙に書けば解くことができるのでわかるのですが、プログラムの計算の過程が紙に書いて計算してみたのですがうまく理解できません。
|
2
|
-
質問は
|
2
|
+
質問は3つあります。
|
3
3
|
{ 1.0, -2.0, 3.0, -4.0, 5.0}(1)
|
4
4
|
{-2.0, 5.0, 8.0, -3.0, 9.0}(2)
|
5
5
|
{ 5.0, 4.0, 7.0, 1.0, -1.0}(3)
|
@@ -12,6 +12,10 @@
|
|
12
12
|
その後の計算は
|
13
13
|
{0,14,-8,21,-26}-{0,9,0,5,-1}*-14/9を行うのでしょうか?
|
14
14
|
|
15
|
+
最後にプログラムのfor (j = k + 1; j <= N; j++)
|
16
|
+
a[i][j] -= a[k][j] * d;
|
17
|
+
の部分がi行-k行*aik/akkを表していると思うのですが、for (j = k + 1; j <= N; j++)によって a[i][j] -= a[k][j] * d;のa[k][j]のjが変化してある行にある係数すべてにaik/akkを掛けられるということでしょうか?
|
18
|
+
|
15
19
|
過程の計算処理がわからないプログラムは以下の部分です。
|
16
20
|
```
|
17
21
|
// 前進消去
|
1
hennsyuu
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|