가우스 조르단 소거법을 이용한 역행렬 구하기
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

본문내용

or( row = 0 ; row < matrix.matrix_r_size ; row++) // 주대각 값이 0인 경우 역행렬이 없다고 에러 메세지 검출
{
for( col = 0 ; col < matrix.matrix_c_size ; col++)
{
if(matrix.element[row][row]==0) //주대각 값이 0인 경우 강제 종료
{
printf("\nNot Inverse Matrix!!!\n");
exit(0);
}
}
}
return 0;
}
void Print_Matrix(ST_Matrix matrix )//화면에 역행렬 계산 과정을 출력
{
int row , col ;
for( row = 0 ; row < matrix.matrix_r_size ; row ++ )
{
printf("|");
for( col = 0 ; col < matrix.matrix_c_size/2 ; col ++ )
{
printf("%5.2lf ",matrix.element[row][col]);
}
printf("|");
for( col = matrix.matrix_c_size/2 ; col < matrix.matrix_c_size ; col ++ )
{
printf("%5.2lf ",matrix.element[row][col]);
}
printf("|");
printf("\n");
}
printf("\n");
}
void Print_Inverse_Matrix(ST_Matrix matrix )//화면에 역행렬 결과를 출력
{
int row , col ;
printf("\n=>행렬 %s의 역행렬 \n",matrix.matrix_name );
for( row = 0 ; row < matrix.matrix_r_size ; row ++ )
{
printf("|");
for( col = matrix.matrix_r_size ; col < matrix.matrix_c_size ; col ++ )
{
printf("%5.2lf " , matrix.element[row][col]);
}
printf("|");
printf("\n");
}
}
void File_Print_Matrix(ST_Matrix matrix )
{
int row , col ;
FILE *print_matrix;
print_matrix=fopen("print_matrix.txt","a+t");
if(print_matrix==NULL)
{
printf("file open error!\n");
return;
}
fprintf(print_matrix,"행렬 %s\n",matrix.matrix_name);
for( row = 0 ; row < matrix.matrix_r_size ; row ++ )
{
fprintf(print_matrix,"|");
for( col = 0 ; col < matrix.matrix_c_size/2 ; col ++ )
{
fprintf(print_matrix,"%5.2lf ",matrix.element[row][col]);
}
fprintf(print_matrix,"|");
fprintf(print_matrix,"\n");
}
fclose(print_matrix);
}
int File_Print_Inverse_Matrix(ST_Matrix matrix )//파일에 역행렬 결과를 출력
{
int row , col ;
FILE *print_matrix;
print_matrix=fopen("print_matrix.txt","a+t");
if(print_matrix==NULL)
{
printf("file open error!\n");
return -1;
}
fprintf(print_matrix,"행렬 %s의 역행렬 \n",matrix.matrix_name );
for( row = 0 ; row < matrix.matrix_r_size ; row ++ )
{
fprintf(print_matrix,"|" );
for( col = matrix.matrix_r_size ; col < matrix.matrix_c_size ; col ++ )
{
fprintf(print_matrix, "%5.2lf " , matrix.element[row][col]);
}
fprintf(print_matrix,"|" );
fprintf(print_matrix, "\n" );
}
fprintf(print_matrix,"===========================================================\n");
fclose(print_matrix);
return 0;
}
int Delete_matrix ( ST_Matrix *matrix )//행렬을 삭제하는 함수
{
int nCnt;
for( nCnt = 0 ; nCnt < matrix->matrix_c_size ; nCnt++ )
{
free ( matrix->element[nCnt] );
}
free ( matrix->element );
return 0;
}
<실행결과>
참고 자료:
MATLAB을 이용한 선형대수학[교우사], PSEUDOCODE STANDARD,
[http://kin.naver.com/detail/detail.php?d1id=11&dir_id=110203&eid=wRLiqiJNE0FGA1GNH0HszhhjiBuj0mYN&qb=sKG/7L26IMG2uKO03CC80rDFuf0gYw==&pid=fZ6V2doQsBGsst7Mp8osss--286132&sid=SEKszIZlQkgAAAlAtCc]의 알고리즘을 참조했습니다.
< 결론 >
이번과제를 하면서 수학적 공식을 코드로 변환하는데 많은 어려움이 많았다. 특히 수반행렬의 경우 재귀함수를 사용하는데 익숙하지 않아서 많은 시행착오를 겪었다. 그리고 파일로 처리하는데 있어서 파일로부터 수를 불러오는데 수를 구분하는 것이 어려웠다. 이에 반해 파일에 출력하는 것은 상대적으로 쉬웠다. 파일 처리에서 아쉬운 점은 여러 행렬을 동시에 역행렬을 구할 수 없다는 것이다. 알고리즘은 책과 웹 사이트를 참고하면서 소스를 작성해 나갔다. 과제를 하면서 힘들었지만 힘든 만큼 많은 것들을 배우게 되어서 좋았다.
  • 가격2,000
  • 페이지수14페이지
  • 등록일2008.06.10
  • 저작시기2008.6
  • 파일형식한글(hwp)
  • 자료번호#468851
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니