Do循环只打印最后一个值

时间:2017-02-25 19:26:15

标签: arrays function loops fortran

    include 'bisecc.f'  !Incluyo la subrutina del metodo de biseccion
   implicit real*8 (a-h,o-z)             !Trabajo en doble precision
   external f     !La funcion vendra definida debajo del end program
   real*8 f     !Tanto ella como la subrutina,en doble precision

   b=0.1D0
   pi=acos(-1.0D0)                           !Declaro el valor de pi

   xl1=b                !El valor que le doy desde la izquierda
   xr1=1.D0                 !El valor que le doy desde la derecha
   xl2=xr1+b
   xr2=2.D0
   xl3=xr2+b
   xr3=3.D0
   xl4=xr3+b
   xr4=3.5D0
   xl5=xr4+b
   xr5=4.D0
   xl6=xr5+b
   xr6=5.D0
   xl7=xr6+b
   xr7=6.D0
   xl8=xr7+b
   xr8=7.D0        
   kmax=100                            !Numero de iteraciones maximo
   tol=0.0001D0                                !Tolerancia del 0.01%
   call bisecc(f,xl1,xr1,kmax,tol,k,xm1)          !Llamo a la subrutina
   call bisecc(f,xl2,xr2,kmax,tol,k,xm2)          !Llamo a la subrutina
   call bisecc(f,xl3,xr3,kmax,tol,k,xm3)          !Llamo a la subrutina
   call bisecc(f,xl4,xr4,kmax,tol,k,xm4)          !Llamo a la subrutina
   call bisecc(f,xl5,xr5,kmax,tol,k,xm5)          !Llamo a la subrutina
   call bisecc(f,xl6,xr6,kmax,tol,k,xm6)          !Llamo a la subrutina
   call bisecc(f,xl7,xr7,kmax,tol,k,xm7)          !Llamo a la subrutina
   call bisecc(f,xl8,xr8,kmax,tol,k,xm8)          !Llamo a la subrutin
   stop
   end program

*功能在主程序之外,这与其他问题中的代码相同......

real*8 function f(psi)
   implicit real*8 (a-h,o-z)
   real*8 M(8)
      e=0.2056D0                          
      pi=acos(-1.0D0)                        
      M=(/pi/4.D0,pi/2.D0,3.D0/4.D0*pi,pi,5.D0/4.D0*pi,3.D0*
 &    pi/2.D0,7.D0/4.D0*pi,2.D0*pi/)
      c=sqrt((1.0D0-e)/(1.0D0+e))     
    do i=1,8
     f=psi-e*sin(psi)-M(i)                     
    end do 
   return 
   end function

为什么我的函数只使用最后一个值f=psi-e*sin(psi)-M(8)  而不是f的所有值(像这样):

f=psi-e*sin(psi)-M(1:8)

有没有办法可以获得所有值而不是最后的结果?

0 个答案:

没有答案