Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. REAL(4) H(4,4),A(4,4),A_(4,4),E(4,4), beta,cond,work(4),R(4,4)
  2.       integer ndim/4/,n/4/,ipvt(4), i, j, k
  3.       DATA H/2,1,0,0,
  4.      *       4,2,1,0,
  5.      *       8,4,2,1,
  6.      *       16,8,4,2/
  7.       DATA E/1,0,0,0,
  8.      *       0,1,0,0,
  9.      *       0,0,1,0,
  10.      *       0,0,0,1/
  11.       DATA A_/1,0,0,0,
  12.      *       0,1,0,0,
  13.      *       0,0,1,0,
  14.      *       0,0,0,1/
  15.  
  16.       data beta/0.1/
  17.  
  18.       H = transpose(H)
  19. c      A_ = transpose(E)
  20. c      A = transpose(A)
  21.       E = transpose(E)
  22.       print *, "#################"
  23.       print 102, beta
  24.       print *, "#################"
  25.  
  26.       do i=1,4
  27.           do j=1,4
  28.               A(i,j) = beta * E(i,j) + H(i,j)
  29.           end do
  30.       end do
  31.       print *, "matrix A = beta * E + H"
  32.       print 101,((a(i,j),j=1,n), i=1,n)
  33.      
  34.       call decomp(ndim,n,a,cond,ipvt,work)
  35.      
  36.       do i=1,n
  37.           call solve(ndim,n,a,A_(i,1:n),ipvt)
  38.       end do
  39.  
  40.       do i=1,4
  41.           do j=1,4
  42.               A(i,j) = beta * E(i,j) + H(i,j)
  43.           end do
  44.       end do
  45.  
  46.       a_ = transpose(a_)
  47.       print *, "inverse matrix A"
  48.       print 101,((a_(i,j),j=1,n), i=1,n)
  49.       r = 0.0d0
  50. c     do i=1, n
  51. c         do j=1, n
  52. c             do k=1, n
  53. c                 R(i,j) =r(i,j) + a_(j,k) * a(k,i)
  54. c             end do
  55. c         end do
  56. c     end do
  57.       r = matmul(a, a_)
  58. c     r = transpose(r)
  59.       do i=1, n
  60.           do j =1, n
  61.               R(i,j) = R(i,j) - E(i,j)
  62.           end do
  63.       end do
  64.      
  65.       print *, "matrix R = A*A_ - E"  
  66.       print 101,((r(i,j),j=1,n), i=1,n)
  67.       print *, "||R|| = ", norm2(R)
  68.       stop
  69.  
  70.   101 format(4X, 4(/1X, 4F15.4))
  71.   102 format(1x, "beta = ", f6.4)
  72.       end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement