본문내용
기치 벡터 x를 입력
printf("\nx(0)를 입력해 주세요 : \n");
for(i=0;i
scanf("%lf", &x[i]);
Jacobi(n, Max, esp);
}
void Jacobi(int n, int Max, double esp)
{
int i, j, k;
double sum, err, next_x[50];
for(k=1;k<=Max;k++){
printf("\nk = %d \n", k);
for(i=0;i
sum=0.;
for(j=0;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]);
}
err = 0.;
sum = 0.;
for(i=0;i
for(j=0;j
sum = sum + pow(A[i][j],2);
}
err = pow(sum,0.5);
if(err <= esp) // 구한 오차가 허용 오차보다 적으면 실행을 중단한다.
{
printf("err=%lf \n", err);
return;
}
for(i=0;i
x[i]=next_x[i];
}
return;
}
위 방정식을 그대로 풀게 되면 대각선 지배성을 만족하지 않는다. 따라서 Jacobi Method를 이용하기 위해서는 방정식의 배치를 바꿔 주어야 한다.
4x1 + x2 = 1
x1 - 4x2 + x3 = 2
x2 + 4x3 = -1
방정식의 배치를 대각선 지배성을 만족하도록 하였다.
이제 Jacobi Method를 이용한다.
printf("\nx(0)를 입력해 주세요 : \n");
for(i=0;i
Jacobi(n, Max, esp);
}
void Jacobi(int n, int Max, double esp)
{
int i, j, k;
double sum, err, next_x[50];
for(k=1;k<=Max;k++){
printf("\nk = %d \n", k);
for(i=0;i
for(j=0;j
sum=sum+A[i][j]*x[j];
}
next_x[i]=(A[i][n]-sum)/A[i][i];
printf("%lf \t", next_x[i]);
}
err = 0.;
sum = 0.;
for(i=0;i
}
err = pow(sum,0.5);
if(err <= esp) // 구한 오차가 허용 오차보다 적으면 실행을 중단한다.
{
printf("err=%lf \n", err);
return;
}
for(i=0;i
}
return;
}
위 방정식을 그대로 풀게 되면 대각선 지배성을 만족하지 않는다. 따라서 Jacobi Method를 이용하기 위해서는 방정식의 배치를 바꿔 주어야 한다.
4x1 + x2 = 1
x1 - 4x2 + x3 = 2
x2 + 4x3 = -1
방정식의 배치를 대각선 지배성을 만족하도록 하였다.
이제 Jacobi Method를 이용한다.
소개글