#include <stdio.h>
#include <math.h>  // 수학적 계산이 있기때문에 사용
#include <stdlib.h>
void Jacobi(int, int, double);    // Jacobi-방법으로 실행하는 서브루틴을 설정
double A[50][51];  // 입력행렬을 광역변수로 선언하고 아래삼각행렬 L로 대치됨
double x[50];  // 해벡터를 광역 변수로 선언

void main(void)
{
    int i, j, n, Max;  // n : 행렬의 크기, Max : 최대 반복횟수 
    double esp, sum;  // esp : 허용오차

    // 정사각행렬 A의 크기를 입력
    printf("행렬 A의 크기는얼마인가? ");
    scanf("%d", &n);
 
    // 행렬 A의 원소를 입력
    printf("\n행렬 A의 성분은? \n");
    for(i=0;i<n;i++){
  printf("%d 행 : ",i+1);
     for(j=0;j<n;j++)
      scanf("%lf", &A[i][j]);
    }

    // 벡터 b를 입력, 편의상 b[i]=A[i][n]으로 놓는다.
    printf("b의 성분은? \n");
    for(i=0;i<n;i++)
     scanf("%lf",&A[i][n]);

    //입력된 행렬이 "강대각지배행렬"인지를 확인
 for(i=0;i<n;i++){
  sum=0.;
  for(j=0;j<n;j++){
   if(i!=j)
    sum=sum+fabs(A[i][j]);
  }

      
  
 }
   
 // 최대반복 횟수 Max의 값을 입력
 printf("\n최대반복회수 Max는? ");
    scanf("%d", &Max);

 // 허용오차 esp를 입력
 printf("\n허용오차의 한계는? ");
    scanf("%lf", &esp);

 // 초기치 벡터 x를 입력
    printf("\n초기벡터의 성분은 : \n");
    for(i=0;i<n;i++)
     scanf("%lf", &x[i]);

    Jacobi(n, Max, esp);  // Jacobi-방법을 실행 할 수 있는 서브루틴을 호출
}

// Jacobi-방법
void Jacobi(int n, int Max, double esp)
{
    int i, j, k;
    double sum, norm, next_x[50];

    for(k=1;k<=Max;k++){
  printf("\nk = %d \n", k);
  for(i=0;i<n;i++){
   sum=0.;
   for(j=0;j<n;j++){
    if(i!=j)
     sum=sum+A[i][j]*x[j];
   }

            next_x[i]=(A[i][n]-sum)/A[i][i];
   printf("%lf \t", next_x[i]);
  }
    
        // 2차_norm 으로 오차를 계산.
        norm = 0.;
  sum = 0.;
  for(i=0;i<n;i++){
   for(j=0;j<n;j++)
    sum = sum + pow(A[i][j],2);
  }
  norm = pow(sum,0.5);

  if(norm <= esp)  // 허용오차보다 오차가 적으면 실행을 중단
  {
   printf("norm=%lf \n", norm);
   return;
  }

  for(i=0;i<n;i++)
   x[i]=next_x[i];
 }
 printf("norm=%lf \n", norm);
 getchar();
 system("pause");
    return;
}



-------------------------------------------------

지금 행렬이

3x3이고

 (x1)+7(x2)-4(x3)=-51

4(x1)-4(x2)+9(x3)=62

12(x1)-(x2)+3(x3)=8


여기서 x1 ,x2,x3를 구하는게 문제입니다

행렬의크기는 3

허용오차 0.00001

초기벡터  0 0 0

최대횟수 10 회로 설정했더니

이렇게됩니다 왜 자꾸 해가 커지는건가요?

어디부분이 잘못 코딩됬나요?