質問編集履歴

4

2018/08/10 03:42

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -191,155 +191,3 @@
191
191
  どうしたらfor文を正しく動作させて、jを変化させて理想の計算をさせられるでしょうか?
192
192
 
193
193
  どうか知恵を貸していただけないでしょうか。お願いします。
194
-
195
-
196
-
197
- 編集
198
-
199
- あの、少しプログラムを変えてプログラムを解読する練習をしているのですが、
200
-
201
- ```
202
-
203
- #include <iostream>
204
-
205
- #include <stdio.h>
206
-
207
-
208
-
209
- // 元の数定義
210
-
211
- #define N 3 // 3
212
-
213
-
214
-
215
- using namespace std;
216
-
217
-
218
-
219
- //double a[N][N+1];
220
-
221
- // 係数
222
-
223
- static double a[N][N + 1] = {
224
-
225
- { 1.0, 2.0, 8.0, 4.0},
226
-
227
- { 4.0, 3.0, 2.0, 12.0},
228
-
229
- { 1.0, 4.0, 2.0, 4.0},
230
-
231
- };
232
-
233
-
234
-
235
-
236
-
237
- int main()
238
-
239
- {
240
-
241
- double d;
242
-
243
- int i;
244
-
245
- int j;
246
-
247
-
248
-
249
- for (i = N - 1; i >= 0; i--) {
250
-
251
- d = a[i][N]/ a[i][i]; //d = a[2][3] / a[2][2]
252
-
253
-
254
-
255
- printf("d=a[%d][%d]/a[%d][%d]よりdは%fです\n",i,N,i,i,d);
256
-
257
-
258
-
259
- for (j = i + 1; j < N; j++) {
260
-
261
- a[i][N] = d - a[i][j] * a[i][N] / a[i][i];
262
-
263
-
264
-
265
- printf("式は%f - a[%d][%d] * a[%d][%d]/a[%d][%d]です\n", d, i, j, i, N, i, i);
266
-
267
- printf("式の中身は%f - %f * %f/%fです\n", d, a[i][j], a[i][N], a[i][i]);        
268
-
269
- printf(" a[%d][%d]の中身は%f\n", i, N, a[i][N]);
270
-
271
- printf("%f/%f-(%f)*%f/%fである\n", a[i][N], a[i][i], a[i][j], a[i][N], a[i][i]);
272
-
273
- }
274
-
275
- }
276
-
277
-
278
-
279
- return 0;
280
-
281
- }
282
-
283
- ```
284
-
285
-
286
-
287
- 以下は実行結果です。
288
-
289
- ```
290
-
291
- d=a[2][3]/a[2][2]よりdは2.000000です
292
-
293
- d=a[1][3]/a[1][1]よりdは4.000000です
294
-
295
- 式は4.000000 - a[1][2] * a[1][3]/a[1][1]です
296
-
297
- 式の中身は4.000000 - 2.000000 * -4.000000/3.000000です
298
-
299
- a[1][3]の中身は-4.000000
300
-
301
- -4.000000/3.000000-(2.000000)*-4.000000/3.000000である
302
-
303
- d=a[0][3]/a[0][0]よりdは4.000000です
304
-
305
- 式は4.000000 - a[0][1] * a[0][3]/a[0][0]です
306
-
307
- 式の中身は4.000000 - 2.000000 * -4.000000/1.000000です
308
-
309
- a[0][3]の中身は-4.000000
310
-
311
- -4.000000/1.000000-(2.000000)*-4.000000/1.000000である
312
-
313
- 式は4.000000 - a[0][2] * a[0][3]/a[0][0]です
314
-
315
- 式の中身は4.000000 - 8.000000 * 36.000000/1.000000です
316
-
317
- a[0][3]の中身は36.000000
318
-
319
- 36.000000/1.000000-(8.000000)*36.000000/1.000000である
320
-
321
-
322
-
323
- ```
324
-
325
- 実行結果に関して
326
-
327
- ```
328
-
329
- d=a[1][3]/a[1][1]よりdは4.000000です
330
-
331
- 式は4.000000 - a[1][2] * a[1][3]/a[1][1]です
332
-
333
- 式の中身は4.000000 - 2.000000 * -4.000000/3.000000です
334
-
335
- ```
336
-
337
- a[1][3]は12のはずですが、なぜか-4.000000となっています。他にもいきなり36などの数字が出てきます。
338
-
339
- これは```a[i][N] = d - a[i][j] * a[j][N] / a[i][i]```を```a[i][N] = d - a[i][j] * a[i][N] / a[i][i]
340
-
341
- ```と置いてしまったがためにデタラメな計算になってしまったということでしょうか?
342
-
343
- すいません。少し考えます。
344
-
345
- 自分の力で解決します、。

3

2018/08/10 03:41

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -339,3 +339,7 @@
339
339
  これは```a[i][N] = d - a[i][j] * a[j][N] / a[i][i]```を```a[i][N] = d - a[i][j] * a[i][N] / a[i][i]
340
340
 
341
341
  ```と置いてしまったがためにデタラメな計算になってしまったということでしょうか?
342
+
343
+ すいません。少し考えます。
344
+
345
+ 自分の力で解決します、。

2

編集

2018/08/10 03:40

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -334,7 +334,7 @@
334
334
 
335
335
  ```
336
336
 
337
- a[1][3]は12のはずですが、なぜか-4.000000となっています。
337
+ a[1][3]は12のはずですが、なぜか-4.000000となっています。他にもいきなり36などの数字が出てきます。
338
338
 
339
339
  これは```a[i][N] = d - a[i][j] * a[j][N] / a[i][i]```を```a[i][N] = d - a[i][j] * a[i][N] / a[i][i]
340
340
 

1

hennsyuu

2018/08/10 03:34

投稿

carnage0216
carnage0216

スコア194

test CHANGED
File without changes
test CHANGED
@@ -191,3 +191,151 @@
191
191
  どうしたらfor文を正しく動作させて、jを変化させて理想の計算をさせられるでしょうか?
192
192
 
193
193
  どうか知恵を貸していただけないでしょうか。お願いします。
194
+
195
+
196
+
197
+ 編集
198
+
199
+ あの、少しプログラムを変えてプログラムを解読する練習をしているのですが、
200
+
201
+ ```
202
+
203
+ #include <iostream>
204
+
205
+ #include <stdio.h>
206
+
207
+
208
+
209
+ // 元の数定義
210
+
211
+ #define N 3 // 3
212
+
213
+
214
+
215
+ using namespace std;
216
+
217
+
218
+
219
+ //double a[N][N+1];
220
+
221
+ // 係数
222
+
223
+ static double a[N][N + 1] = {
224
+
225
+ { 1.0, 2.0, 8.0, 4.0},
226
+
227
+ { 4.0, 3.0, 2.0, 12.0},
228
+
229
+ { 1.0, 4.0, 2.0, 4.0},
230
+
231
+ };
232
+
233
+
234
+
235
+
236
+
237
+ int main()
238
+
239
+ {
240
+
241
+ double d;
242
+
243
+ int i;
244
+
245
+ int j;
246
+
247
+
248
+
249
+ for (i = N - 1; i >= 0; i--) {
250
+
251
+ d = a[i][N]/ a[i][i]; //d = a[2][3] / a[2][2]
252
+
253
+
254
+
255
+ printf("d=a[%d][%d]/a[%d][%d]よりdは%fです\n",i,N,i,i,d);
256
+
257
+
258
+
259
+ for (j = i + 1; j < N; j++) {
260
+
261
+ a[i][N] = d - a[i][j] * a[i][N] / a[i][i];
262
+
263
+
264
+
265
+ printf("式は%f - a[%d][%d] * a[%d][%d]/a[%d][%d]です\n", d, i, j, i, N, i, i);
266
+
267
+ printf("式の中身は%f - %f * %f/%fです\n", d, a[i][j], a[i][N], a[i][i]);        
268
+
269
+ printf(" a[%d][%d]の中身は%f\n", i, N, a[i][N]);
270
+
271
+ printf("%f/%f-(%f)*%f/%fである\n", a[i][N], a[i][i], a[i][j], a[i][N], a[i][i]);
272
+
273
+ }
274
+
275
+ }
276
+
277
+
278
+
279
+ return 0;
280
+
281
+ }
282
+
283
+ ```
284
+
285
+
286
+
287
+ 以下は実行結果です。
288
+
289
+ ```
290
+
291
+ d=a[2][3]/a[2][2]よりdは2.000000です
292
+
293
+ d=a[1][3]/a[1][1]よりdは4.000000です
294
+
295
+ 式は4.000000 - a[1][2] * a[1][3]/a[1][1]です
296
+
297
+ 式の中身は4.000000 - 2.000000 * -4.000000/3.000000です
298
+
299
+ a[1][3]の中身は-4.000000
300
+
301
+ -4.000000/3.000000-(2.000000)*-4.000000/3.000000である
302
+
303
+ d=a[0][3]/a[0][0]よりdは4.000000です
304
+
305
+ 式は4.000000 - a[0][1] * a[0][3]/a[0][0]です
306
+
307
+ 式の中身は4.000000 - 2.000000 * -4.000000/1.000000です
308
+
309
+ a[0][3]の中身は-4.000000
310
+
311
+ -4.000000/1.000000-(2.000000)*-4.000000/1.000000である
312
+
313
+ 式は4.000000 - a[0][2] * a[0][3]/a[0][0]です
314
+
315
+ 式の中身は4.000000 - 8.000000 * 36.000000/1.000000です
316
+
317
+ a[0][3]の中身は36.000000
318
+
319
+ 36.000000/1.000000-(8.000000)*36.000000/1.000000である
320
+
321
+
322
+
323
+ ```
324
+
325
+ 実行結果に関して
326
+
327
+ ```
328
+
329
+ d=a[1][3]/a[1][1]よりdは4.000000です
330
+
331
+ 式は4.000000 - a[1][2] * a[1][3]/a[1][1]です
332
+
333
+ 式の中身は4.000000 - 2.000000 * -4.000000/3.000000です
334
+
335
+ ```
336
+
337
+ a[1][3]は12のはずですが、なぜか-4.000000となっています。
338
+
339
+ これは```a[i][N] = d - a[i][j] * a[j][N] / a[i][i]```を```a[i][N] = d - a[i][j] * a[i][N] / a[i][i]
340
+
341
+ ```と置いてしまったがためにデタラメな計算になってしまったということでしょうか?