当前位置:网站首页>FORTRAN 77 reads some data from the file and uses the heron iteration formula to solve the problem

FORTRAN 77 reads some data from the file and uses the heron iteration formula to solve the problem

2020-11-08 01:33:53 wangxuwei

Required :

1. There is no limit to the number of data , Automatically count and print serial numbers

2. When you encounter a negative number , Skip the recipe , Print directly and mark

3. encounter 0.0, The program to stop

Heron Iterative method .

  1. initialization  (X0 = A);(x1 =1/2*{x0+A/ x0});
  2. Calculation  (Delta_k = |x1 - x0|;
  3. if (Delta_k < epsilon), return (x), The algorithm ends ;
  4. (x1 =1/2*{x0+A/ x0});
  5. Back to page 2 Step ;
C
C   heronus1.f
C
C Unlimited number of data, automatic counting and printing serial number
C When negative numbers are encountered,skip square root, print them directly and mark them
C Encountered 0.0, the program stopped

      PROGRAM heronus1
      EPS=.1 E-4
      I=0
      OPEN(11,file='fheronus.dat')
   10 READ(11,*)A
      I=I+1
      IF (A) 1,2,30
   1  WRITE(6,100) I,A
  100 FORMAT(1X, I6,10X,F10.6,'	NEGATIVE NUMBER')
      GO TO 10
   2  STOP 'END OF JOB'
   30 X0=A
   20 X1=.5*(X0+A/X0)
      IF (ABS(X1-X0).LT.EPS) GO TO 40       
      X0=X1
      GO TO 20
   40 WRITE(6,110) I,A,X1
  110 FORMAT(1X, I6,2F10.6)
   3  CONTINUE
      GO TO 10
      END

Data should be divided into rows , Not spaces , And use 0.0 end :

$ cat fheronus.dat 
1
2
3
4
5
6
7
8
9
10
11
12
12
13
13
14
16
21
22
13
25
22
13
21
52
32
-23
121
12
0.0

function :

$ f77 heronus1.f
$ a.out 
      1  1.000000  1.000000
      2  2.000000  1.414214
      3  3.000000  1.732051
      4  4.000000  2.000000
      5  5.000000  2.236068
      6  6.000000  2.449490
      7  7.000000  2.645751
      8  8.000000  2.828427
      9  9.000000  3.000000
     10 10.000000  3.162278
     11 11.000000  3.316625
     12 12.000000  3.464102
     13 12.000000  3.464102
     14 13.000000  3.605551
     15 13.000000  3.605551
     16 14.000000  3.741657
     17 16.000000  4.000000
     18 21.000000  4.582576
     19 22.000000  4.690416
     20 13.000000  3.605551
     21 25.000000  5.000000
     22 22.000000  4.690416
     23 13.000000  3.605551
     24 21.000000  4.582576
     25 52.000000  7.211102
     26 32.000000  5.656854
     27          -23.000000	NEGATIVE NUMBER
     28121.000000 11.000000
     29 12.000000  3.464102
STOP END OF JOB

ubutnu18.04 Next gfortran-10 Compile and pass (vax780 Of f77 Also tested )

版权声明
本文为[wangxuwei]所创,转载请带上原文链接,感谢