void reduced_echelon(double **X)
{
interchange(X, 0, 1);
replacement(X, 2, 0, 4);
scaling(X, 1, 0.5);
replacement(X, 2, 1, 3);
replacement(X, 1, 2, 4);
replacement(X, 0, 2, -1);
replacement(X, 0, 1, 2);
}
이것만 고쳐서 row reduced echelon 만드는 건데 row reduction 알고리즘은 둘째치고
int main()
{
FILE *fp;
int i= 0 , j= 0;
double input = 0;
double **X = NULL;
// Set X
X = (double**) malloc(sizeof(double)*M);
for(i = 0; i < M; i++){
X[i] = (double*) malloc(sizeof(double)*N);
}
i = 0;
j = 0;
fp = fopen("X.txt","r"); //Start of File Input (여기서 X는 메모장에 있는 임의의 행렬)
while(!feof(fp)){
fscanf(fp, "%lf", &input);
X[i][j] = input;
j++;
if(j == N){
j = 0;
i++;
}
}
fclose(fp); //End of File Input
printf("** Given matrix : ** n" );
for(i = 0; i < M; i++){
for(j = 0; j<N; j++){
printf("%.2lf ",X[i][j]);
}
printf("n");
}
printf("n");
// Start of Row Operation
reduced_echelon(X);
// End of Row Operation
// Echelon Form
printf("** Reduced echelon form : ** n" );
for(i = 0; i < M; i++){
for(j = 0; j<N; j++){
printf("%.2lf ",X[i][j]);
}
printf("n");
}
printf("n");
for(i = 0; i < M; i++){
free(X[i]);
}
free(X);
return 0;
}
이게 메인 함수
걍 다 필요없고 쉽게 말해서 메인 함수는 X값을 불러와서 X가 어떤 행렬인지 출력하는거랑 X의 reduction결과를 출력하는 거임.
근데 void reduced_echelon에 double **X로 들어오잖아
여기서 X 행렬의 1,1 성분이 알고싶어서 reduced_echelon함수 안에서 printf(" : ", X[0][0]) 해서 출력해봤더니 X[0][0]값이 아무 것도 안나와 형.
어떻게 해야 X행렬 1,1 성분을 함수 안에서 사용할까?
예를 들어 if(X[0][0]>X[1][0]) 이렇게 이용한다는 의미야..
댓글 0