Class | Matrix_Calc |
In: |
matrix_calc.f90
|
行列に関する基本的な計算を行うモジュール 各引数の型で同じ名前を呼び出せるように, interface で定義しておく.
Function : | recursive | ||
res : | real | ||
a : | real, dimension(2,2), intent(in)
|
2x2 の正方行列の行列式を計算する関数(実数版)
recursive function determ_2d_f( a ) result(res) ! 2x2 の正方行列の行列式を計算する関数(実数版) use Inter_Face implicit none real, dimension(2,2), intent(in) :: a ! 2x2 の正方行列 real :: res res=a(1,1)*a(2,2)-a(1,2)*a(2,1) return end function
Function : | recursive | ||
res : | integer | ||
a : | integer, dimension(2,2), intent(in)
|
2x2 の正方行列の行列式を計算する関数(整数版)
recursive function determ_2d_i( a ) result(res) ! 2x2 の正方行列の行列式を計算する関数(整数版) use Inter_Face implicit none integer, dimension(2,2), intent(in) :: a ! 2x2 の正方行列 integer :: res res=a(1,1)*a(2,2)-a(1,2)*a(2,1) return end function
Subroutine : | |||
a : | real, intent(inout), dimension(:,:)
|
行列成分の転置を返す(実数版)
subroutine trans_mat_f( a ) ! 行列成分の転置を返す(実数版) use Inter_Face implicit none real, intent(inout), dimension(:,:) :: a ! 入力行列 integer :: i, j, nx, ny real :: tmp nx=size(a,1) ny=size(a,2) do j=1,ny do i=1,nx if(i<j)then tmp=a(j,i) a(j,i)=a(i,j) a(i,j)=tmp end if end do end do end subroutine
Subroutine : | |||
a : | integer, intent(inout), dimension(:,:)
|
行列成分の転置を返す
subroutine trans_mat_i( a ) ! 行列成分の転置を返す use Inter_Face implicit none integer, intent(inout), dimension(:,:) :: a ! 入力行列 integer :: i, j, tmp, nx, ny nx=size(a,1) ny=size(a,2) do j=1,ny do i=1,nx if(i<j)then tmp=a(j,i) a(j,i)=a(i,j) a(i,j)=tmp end if end do end do end subroutine