[프로그래밍 언어] 프로그래밍 언어 리포트
- 최초 등록일
- 2004.03.06
- 최종 저작일
- 2004.03
- 16페이지/ 한컴오피스
- 가격 1,000원
소개글
역행렬에 대한 문제를 직접 이것저것 실행시켜봄으로써 해결책을 찾아보고 다른 대안들을 생각해보는 그러한 리포트입니다. 소스코드가 포함되어 있습니다.
목차
1. pivot을 이용한 가우스 조던방법
1.1 행렬 size의 제한
1.2 행렬을 초기화 하는데 행우선과 열우선의 시간차이
1.3 pivot을 사용할 때와 하지 않을 때의 차이
2. Gauss Seidel method를 이용한 역행렬
2.1 방법
2.2 프로그램 실행 및 결론
2.3 분석 및 문제
3. 프로그램 소스
3.1 pivot을 이용한 가우스 조던 방법
3.2 Gauss seidel 프로그램 소스
본문내용
1. pivot을 이용한 가우스 조던 방법
1)행렬 size 제한
행렬의 size를 10부터 증가시키면서 프로그램을 실행해 보았다.
그랬더니 1023 X 1023 까지는 프로그램이 동작 하는데 1024 X 1024부터는 프로그램이 동작하지 않고 segmantation fault가 되었다. memory overflow가 일어난 것이다.
2)행렬을 초기화 하는데 행우선과 열우선의 시간차이(행렬 size는 1023 X 1023으로하였고, 시간을 증폭시키기 위해 초기화를 300번 돌렸다. 왜냐하면 시간차이가 미비하기 때문이다.
<row major 방식 : pivot2>
그러나 시간 차이는 나지 않았다.
1023 X 1023을 300번 하는 것으로는 그 차이를 초단위로 집어낼 수 없었다.
설명)보여지는 matrix init start time의 숫자값은 1970년부터 지난 초이다. 즉 행렬을 초기화하기 전에 시간을 check해주고 초기화가 끝난 다음에 시간을 check해 주어 그 차이를 구해 소요시간을 산출하는 것이다.
계속 증폭을 시켜가며 차이를 구해보려 하였으나, 초단위 차이는 나지 않았다. 그러다 결국 500번으로 증폭시켜 그 차이를 구해보았다
보는 바와 같이 1023 X1,023 행렬을 500번 돌려 주었더니 row major 방법과 column major 방법의 차이가 1초 가량 벌어졌다. 이로써 수업시간에 배웠던 C언어가 row major 언어라는 사실을 확인할 수 있었다. 그러나 여러번 수행해보고 더큰 값을 넣어 볼 때 같은 값이 나오는 경우가 많아 그 차이는 미비한 수준임을 알 수 있다.
참고 자료
없음