導航:首頁 > 編程語言 > 編程求逆矩陣

編程求逆矩陣

發布時間:2023-06-03 13:34:26

⑴ 哭求:fortran語言矩陣求逆的程序

這是一段f90的代碼,使用是時候要加上use inv_mat,然後就可以求某方陣的逆矩陣了。
mole inv_mat
! Description : 計算逆矩陣
contains
subroutine inv(A,invA,N)
! Purpose : 計算逆矩陣
!-----------------------------------------------------
! Input parameters :
! 1. A: 需要求逆的矩陣
! 2. N: 矩陣的維度
! Output parameters :
! 1. invA: A的逆矩陣
implicit real*8(a-z)
integer::n
integer::i
real*8::A(n,n),invA(n,n),E(n,n)
E=0
!設置E為單位矩陣
do i=1,n
E(i,i)=1
end do
call mateq(A,E,invA,N,N)
end subroutine inv
subroutine mateq(A,B,X,N,M)
! Purpose : 高斯列主元消去法計算矩陣方程
! AX=B
implicit real*8(a-z)
integer::N,M,i
real*8::A(N,N),B(N,M),X(N,M)
real*8::btemp(N),xtemp(N)
do i=1,M
btemp=B(:,i)
call elgauss(A,btemp,xtemp,N)
X(:,i)=xtemp
end do
end subroutine mateq
subroutine elgauss(A,b,x,N)
! Purpose : 高斯列主元消去法
! Ax=b
implicit real*8(a-z)
integer::i,k,N
integer::id_max !主元素標號
real*8::A(N,N),b(N),x(N)
real*8::Aup(N,N),bup(N)
!Ab為增廣矩陣 [Ab]
real*8::Ab(N,N+1)
real*8::vtemp1(N+1),vtemp2(N+1)
Ab(1:N,1:N)=A
Ab(:,N+1)=b
do k=1,N-1
elmax=dabs(Ab(k,k))
id_max=k
do i=k+1,n
if (dabs(Ab(i,k))>elmax) then
elmax=Ab(i,k)
id_max=i
end if
end do
vtemp1=Ab(k,:)
vtemp2=Ab(id_max,:)
Ab(k,:)=vtemp2
Ab(id_max,:)=vtemp1
!#########################################################
do i=k+1,N
temp=Ab(i,k)/Ab(k,k)
Ab(i,:)=Ab(i,:)-temp*Ab(k,:)
end do
end do
Aup(:,:)=Ab(1:N,1:N)
bup(:)=Ab(:,N+1)
call uptri(Aup,bup,x,n)
end subroutine elgauss
subroutine uptri(A,b,x,N)
! Purpose : 上三角方程組的回帶方法
! Ax=b
implicit real*8(a-z)
integer::i,j,N
real*8::A(N,N),b(N),x(N)
x(N)=b(N)/A(N,N)
!回帶部分
do i=n-1,1,-1
x(i)=b(i)
do j=i+1,N
x(i)=x(i)-a(i,j)*x(j)
end do
x(i)=x(i)/A(i,i)
end do
end subroutine uptri
end mole inv_mat

⑵ fortran編程 逆矩陣

以下是求5階方陣的逆矩陣,fortran77程序。供參考。


c 求逆矩陣
c 在主程序中,設兩個數組a(5,5),b(5,5)
c a(5,5)--存放5階方陣
c b(5,5)--存放單位陣
c 在子程序中,設一個數組c(5,10),該數組是a、b陣拼接起來的
c 要實現數組的拼接和拆分,用公用語句實現
reala(5,5),b(5,5)
common/x/a,b
do10i=1,5
do10j=1,5
if(i.eq.j)then
b(i,j)=1
else
b(i,j)=0
endif
10 continue
callinverse
write(*,20)b
write(*,*)
write(*,20)((b(i,j),j=1,5),i=1,5)
20 format(1x,5f10.3)
c read(*,*)
end
c************************************
subroutineinverse
realc(5,10)
common/x/c
do10k=1,5
do20j=10,k,-1
20 c(k,j)=c(k,j)/c(k,k)
do40i=1,5
if(i.ne.k)then
do30j=10,k,-1
30 c(i,j)=c(i,j)-c(i,k)*c(k,j)
endif
40 continue
10 continue
end
c******************************
blockdata
reala(5,5),b(5,5)
common/x/a,b
dataa/3,1,0,2,10,-2,0,1,3,1,9,3,1,0,1,
1 1,0,1,1,0,1,2,0,2,10/
end

閱讀全文

與編程求逆矩陣相關的資料

熱點內容
西班牙露奶電影有哪些? 瀏覽:691
成人短篇合集小說 瀏覽:746
韓國大寸度電影 瀏覽:384
大山電影在線觀看 瀏覽:796
androidcreator 瀏覽:30
交通信號燈單片機編程 瀏覽:970
鬼抓人百度網盤 瀏覽:726
電鍍pdf 瀏覽:723
主角叫張凡有個系統 瀏覽:61
泰國電影永恆完整版百度雲 瀏覽:685
現代父子訓誡文 瀏覽:638
psef如何查看伺服器是否啟動 瀏覽:594
安卓手機如何投屏逍客 瀏覽:165
兒子干後媽的電影叫什麼 瀏覽:17
日韓在線資源中文字幕免費 瀏覽:143
第一彈app怎麼清除瀏覽歷史 瀏覽:898
1980法國電影少年的秘密 瀏覽:953
滿清十部電影大全 瀏覽:292
周末夫妻演員 瀏覽:345
末世之一女多男推薦 瀏覽:567