「プログラミング基礎」 第 5 回 連立一次方程式の解法 課題1 (1) Gauss-Jordan 法 を 用 い た 連 立 1 次 方 程 式 を 解 く プ ロ グ ラ ム gauss_jordan.f90 を実行せよ。 (2) プログラムの m, n の値を変え、動作を確認せよ。 (3) 上記プログラムを利用して x 3 y z 2w x 3 y 2 z 2w x yzw 2 x 2 y 3 z 3w 8 7 1 10 を解け。 課題2 課題1で用いたプログラムの連立1次方程式を解く部分をサブルーチンとし たい。(別紙)のサブルーチン部分を作成し、動作を確認せよ。 このようにサブルーチンとすれば別のプログラムでも簡単に利用できる。 レポート:課題2で作成したプログラムをレポート提出ページ http://www.riam.kyushu-u.ac.jp/sosei/lecture_note/submit.html (講義 Web ページにリンク有)より提出してください。 期限 5 月 25 日(月)正午 ファイル名は”gauss_jordan_学生番号.f90” (例、gauss_jordan_2ES14999X.f90)としてください。 DEALLOCATE(a,b) PRINT *, 'Inverse matrix' DO i=1,n PRINT *, (a(i,j),j=1,n) ENDDO PRINT *, 'Solution' DO i=1,n PRINT *, (b(i,j),j=1,m) ENDDO CALL GAUSSJ(a,n,b,m) DO i=1,n DO j=1,n IF (i .EQ. j) THEN a(i,j)=0.0 ELSE a(i,j)=1.0 ENDIF ENDDO ENDDO DO i=1,n DO j=1,m b(i,j)=i ENDDO ENDDO PROGRAM GAUSS_JORDAN IMPLICIT NONE INTEGER :: n,m REAL,DIMENSION(:,:),ALLOCATABLE :: a, b INTEGER :: i,j ! ! Input matrix and vector n=4 m=2 ALLOCATE(a(n,n),b(n,m)) ! ! ! ! 1 ! CONTAINS SUBROUTINE GAUSSJ(a,n,b,m) <<この部分を作成せよ>> END SUBROUTINE GAUSSJ ! SUBROUTINE swap(p,q) REAL :: p,q REAL :: r r=p; p=q; q=r END SUBROUTINE ! END PROGRAM GAUSS_JORDAN 2
© Copyright 2024 ExpyDoc