fork download
  1. #include <stdio.h>
  2. #define N 3
  3.  
  4. int main(void) {
  5. int i, j, k;
  6. double a[N][N] = {
  7. { 0,1,-3 },
  8. { 1,2,4 },
  9. { 2,1,-1 },
  10. { -11,13,5 }
  11. };
  12. double b[N] = { 18, 21, 5, 16 }, s;
  13.  
  14. // 行列と定数項の出力
  15. for (i = 0; i < N; i++) {
  16. for (j = 0; j < N; j++) {
  17. printf("%5.2lf ", a[i][j]);
  18. }
  19. printf(" | %5.2lf\n", b[i]);
  20. }
  21. printf("-------------------------------\n");
  22.  
  23. // 前進消去
  24. for (k = 0; k < N - 1; k++) {
  25. for (i = k + 1; i < N; i++) {
  26. double factor = a[i][k] / a[k][k];
  27. for (j = k; j < N; j++) {
  28. a[i][j] -= factor * a[k][j];
  29. }
  30. b[i] -= factor * b[k];
  31. }
  32. }
  33.  
  34. // 後退代入
  35. double x[N];
  36. for (i = N - 1; i >= 0; i--) {
  37. s = b[i];
  38. for (j = i + 1; j < N; j++) {
  39. s -= a[i][j] * x[j];
  40. }
  41. x[i] = s / a[i][i];
  42. }
  43.  
  44. // 結果出力
  45. for (k = 0; k < N; k++) {
  46. printf("x[%d] = %5.2lf\n", k, x[k]);
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
 0.00  1.00 -3.00  | 18.00
 1.00  2.00  4.00  | 21.00
 2.00  1.00 -1.00  |  5.00
-------------------------------
x[0] =  -nan
x[1] =  -nan
x[2] =  -nan