역행렬 구하는 프로그램 C와 Fortran 환경공학과 20041483 천대 길
C를 이용한 2×2 역행열의 계산 /*** step 2 행렬식의 계산 ***/ d=a[0][0]*a[1][1]-a[0][1]*a[1][0]; /*** step 3 에러 처리 ***/ if(d==0.0){ printf("행렬이 정칙이 아닙니다\n"); exit(1); } /*** step 4 역행렬 계산 ***/ b[0][0] = a[1][1]/d; b[0][1] = -a[0][1]/d; b[1][0] = -a[1][0]/d; b[1][1] = a[0][0]/ d: /*** step 5 결과의 출력 ***/ printf ("\n <해> \n"); printf ("B \n"); for (i=0 ; i<2 ; i++){ for (j=0 ; j<2 ; j++){ printf (" % lf", b[i][j]); } printf ("\n"); } /* < 주 프로그램 > */ #include <stdio.h> #include <stdlib.h> main() { int i, j; double a[2][2]; /* 2×2 입력행렬 */ double b[2][2]; /* 2×2 출력행렬 */ double d; /* A의 행렬식 */ /*** step 1 자료의 입력 ***/ printf("2×2 행렬의 역행렬 계산. \n"); for (i=0 ; i<2 ; i++){ for (j=0 ; j<2 ; j++){ printf ("a%d%d=", i+1, j+1); scanf ("%lf", &a[i][j]); } }
<역행렬 실행한 장면> - C -
Fotran을 이용한 역행열의 계산 c *** step 3 에러 처리 *** if(d.eq.0.0) then write(6,*) '행렬이 정칙이 아닙니다 ' stop end if c *** step 4 역행렬 계산 *** b(1,1)=a(2,2)/d b(1,2)=-a(1,2)/d b(2,1)=-a(2,1)/d b(2,2)=a(1,1)/d c *** step 5 결과의 출력 *** write(6,*) '<해>' write(6,*) 'B=' do i=1,2 write(6,20) (b(i,j), j=1,2) 20 format(f10.5,f10.5) enddo stop end c <주 프로그램> implicit double precision (A- H, O-Z) dimension a(2,2), b(2,2) c a(2,2) : 2×2 입력행렬 c b(2,2) : 2×2 출력행렬 c d : a의 행렬식 c *** step 1 자료의 입력 *** write(6,*) '2×2 행렬의 역행렬 계 산. ' write(6,*) do I=1,2 do J=1,2 write(6,10) i,j 10 format('a', i1, i1, '=') read(5,*) a(i,j) enddo enddo c *** step 2 행렬식의 계산 *** d=a(1,1)*a(2,2)-a(1,2)*a(2,1)
<역행렬 실행한 장면> - Fortran -