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