Advertisement
Guest User

Untitled

a guest
Feb 28th, 2014
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. program normalizacja
  2. implicit none
  3. integer imax,i,j,k,li,n,m,kzznmin,k1odnmin,k2odnmin
  4. parameter (imax=500)
  5. character*80 plik
  6. real*8 time
  7. real*8 l(imax),x(imax),y(imax),z(imax),xmin,ymin,zmin
  8. real*8 xx(imax),yy(imax),zz(imax),minn,xxn(imax,imax)
  9. real*8 yyn(imax,imax),od(imax,imax),odn(imax,imax,imax)
  10. real*8 zzn(imax,imax),tmp1(imax),tmp2(imax),roznica,r,rmin
  11. real*8 znnr(imax),odnr(imax)
  12. logical log,nlog
  13.  
  14. log=.TRUE.
  15. nlog=.FALSE.
  16.  
  17.  
  18. write(*,*)'Podaj nazwe pliku danych '
  19. 10 read(*,*)plik
  20. open(11,file=plik, status='old',err=20)
  21. goto 30
  22. 20 write(*,*)'Blad-ten plik nie istnieje.Podaj nazwe jeszcze raz'
  23. goto 10
  24. 30 continue
  25.  
  26.  
  27. li=0
  28. do while (log.nEQV.nlog)
  29. li=li+1
  30. if(li.gt.imax) stop 'liczba danych przewyzsza wymiar macierzy'
  31. read(11,*,end=100)l(li),x(li),y(li),z(li)
  32. enddo
  33. 100 close(11)
  34. li=li-1
  35.  
  36. xmin=minn(x,li)
  37. ymin=minn(y,li)
  38. zmin=minn(z,li)
  39.  
  40.  
  41. do i=1,li
  42. xx(i)=x(i)-xmin
  43. yy(i)=y(i)-ymin
  44. zz(i)=z(i)-zmin
  45. enddo
  46.  
  47.  
  48. do i=1,li
  49. do j=1,li
  50. xxn(i,j)=xx(j)/xx(i)
  51. yyn(i,j)=yy(j)/yy(i)
  52. enddo
  53. enddo
  54.  
  55.  
  56. do i=1,li
  57. do j=1,li
  58. od(i,j)=xxn(i,j)-yyn(i,j)
  59. enddo
  60. enddo
  61.  
  62.  
  63. do i=1,li
  64. do j=1,li
  65. zzn(i,j)=zz(j)/zz(i)
  66. enddo
  67. enddo
  68.  
  69.  
  70.  
  71. do i=1,li
  72. do k=1,li
  73. do j=1,li
  74. odn(i,k,j)=od(k,j)/od(k,i)
  75. enddo
  76. enddo
  77. enddo
  78.  
  79.  
  80. rmin=1.0
  81. kzznmin=0
  82. k1odnmin=0
  83. k2odnmin=0
  84.  
  85. do i=1,li
  86. do j=1,li
  87. tmp1(j)=zzn(i,j)
  88. enddo
  89. do k=1,li
  90. do m=1,li
  91. do n=1,li
  92. tmp2(n)=odn(k,m,n)
  93. enddo
  94. r=roznica(tmp1,tmp2,li)
  95. if(r.lt.rmin)then
  96. rmin=r
  97. kzznmin=i
  98. k1odnmin=k
  99. k2odnmin=m
  100. endif
  101. enddo
  102. enddo
  103. enddo
  104. write(*,*)'rmin',kzznmin, k1odnmin, k2odnmin, rmin
  105. print *, 'Minimal Correllation Coefficient: ', rmin
  106. print *, 'Pminvalue: ', kzznmin
  107. print *, 'Subtnorm1value: ', k1odnmin
  108. print *, 'Subtnorm2value: ', k2odnmin
  109. call CPU_TIME(time)
  110. print *, 'Elapsed time: ', time, 'seconds'
  111.  
  112.  
  113. open(33,file='widmok.auto')
  114. do i=kzznmin,kzznmin
  115. do k=k1odnmin,k1odnmin
  116. do m=k2odnmin,k2odnmin
  117. do j=1,li
  118. znnr(j)=zzn(i,j)
  119. odnr(j)=odn(k,m,j)
  120. write(33,'(3F10.5)') l(j),znnr(j),odnr(j)
  121. enddo
  122. enddo
  123. enddo
  124. enddo
  125. end
  126.  
  127.  
  128.  
  129. real*8 function minn(v,li)
  130. real*8 v(li)
  131. tmp=v(1)
  132. do i=2,li
  133. if(v(i).lt.tmp)then
  134. tmp=v(i)
  135. endif
  136. enddo
  137. minn=tmp
  138. end
  139.  
  140. real*8 function roznica(v,u,li)
  141. real*8 v(li),u(li),r
  142. rozvu2=0.0
  143.  
  144. do i=1,li
  145. rozvu2=rozvu2+((v(i)-u(i))*(v(i)-u(i)))
  146. enddo
  147.  
  148. r=rozvu2/li
  149. roznica=r
  150. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement