⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qiunihaha.f90

📁 计算卫星位置的fortran程序
💻 F90
字号:
	SUBROUTINE INV(A,N,A1)
	implicit none
	integer i,j,k,l,n
	character(len=20) :: for='(??(1x,f6.3))'  !??是未定几倍输出
        real*8 b(n,n),is(n),t,d,B1(N,N),T1,D1,A1(N,N),a(n,n),ik(n)
	
	DO I=1,N                !定义伴随单位矩阵
	   DO J=1,N
	     IF(I==J)THEN
	       A1(I,J)=1.0
	     ELSE
	       A1(I,J)=0.0
	     END IF
	   END DO
	END DO
	
      write( FOR(2:3), '(I2)' ) N
!	WRITE(*,*)"原矩阵为"
	  do i=1,N
!	    write( *, FMT=FOR ) A(i,:) !for是格式,是引用for的格式的意思
        end do

	DO K=1,N
	   D=0.0
	   DO I=K,N
	      IF(ABS(A(I,K)).GT.D)THEN
	         D=ABS(A(I,K))
	         IS(K)=I
	         IK(K)=I
	     ENDIF
	   END DO
	  

	   IF((D+1.0)==1.0)THEN
	      write(*,*)"d=",d
	      WRITE(*,'(A,I2,A)')"第",K,"列都为0,不能求逆"
!	      STOP
         ENDIF

	   DO J=K,N
	      T=A(K,J)
	      A(K,J)=A(IS(K),J)
	      A(IS(K),J)=T
	      T1=A1(K,J)
	      A1(K,J)=A1(IS(K),J)
	      A1(IS(K),J)=T1
	   END DO
	   
!	      write(*,*)"变换成:"
!         	  do i=1,N
!	        write( *, FMT=FOR ) A(i,:) !for是格式,是引用for的格式的意思
!		  end do

       DO I=1,N 
          IF (I.NE.K) THEN 
	      D1=A(I,K)/A(K,K)
          
	      DO J=1,N 
	         A(I,J)=A(I,J)-A(K,J)*D1
	         A1(I,J)=A1(I,J)-A1(K,J)*D1
	      ENDDO 
          ENDIF
          
	 END DO

      ENDDO
	   DO K=1,N
		  DO J=1,N
	         A1(K,J)=A1(K,J)/A(K,K)
	      END DO
		     A(K,K)=A(K,K)/A(K,K)
	   END DO
!	   DO J=K,N
!	      T1=A1(K,J)
!	      A1(K,J)=A1(IS(K),J)
!	      A1(IS(K),J)=T1
!	   END DO

	  write( FOR(2:3), '(I2)' ) N
!        write(*,*)"求逆后矩阵"
	  do i=1,N
!	     write( *, FMT=FOR ) A1(i,:) !for是格式,是引用for的格式的意思
        end do
!	  write(*,*)"伴随矩阵"
	  do i=1,N
!	     write( *, FMT=FOR ) A(i,:)  !for是格式,是引用for的格式的意思
        end do

	  RETURN 
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -