中森天下 发表于 2015-9-1 16:46:43

计算不出结果

系统版本win8.1 64位,编译环境microsoft visual studio2010      Intel.Visual.Fortran.Composer.XE.2011
是不是因为内部函数log需要另外定义一下??求指点

program ex_Ci
implicit none
    real Ls,Ci,Vs,Rl,Rv,Ht,hli,st,H0,LV
    real,intrinsic::log
    read(*,*) Ls,Vs,Rl,Rv,Ht,hli
    Ci = exp(-4.531+1.6562*(H0)+5.5496*(H0)**2-6.4695*(H0)**3+&
      (-0.474675+0.079*(H0)-1.39*(H0)**2+1.3212*(H0)**3)*log(LV)&
      +(-0.07291+0.088307*(H0)-0.49123*(H0)**2+0.43196*(H0)**3)*&
      (log(LV))**2)
    print *,"标准系数Ci:",Ci
end program
function H0(Ht,hli)
implicit none
real Ht,hli
real H0
H0=Ht-hli
end function

function LV(Ls,Vs,Rl,Rv)
implicit none
real Ls,Vs,Rl,Rv
real LV
LV = (Ls/Vs)*sqrt(Rl/Rv)
end function

fcode 发表于 2015-9-1 17:13:37

H0 和 LV 作为函数,你需要给予传递参数。

中森天下 发表于 2015-9-1 17:35:47

怎么改呢??

fcode 发表于 2015-9-1 17:40:45

我猜测应该是这样:
program ex_Ci
implicit none
   real Ls,Ci,Vs,Rl,Rv,Ht,hli,st,H0,LV
   real :: h0_f , lv_f
   real,intrinsic::log
   read(*,*) Ls,Vs,Rl,Rv,Ht,hli
   h0 = h0_f( ht , hli )
   Lv = Lv_f( Ls,Vs,Rl,Rv )
   Ci = exp(-4.531+1.6562*(H0)+5.5496*(H0)**2-6.4695*(H0)**3+&
         (-0.474675+0.079*(H0)-1.39*(H0)**2+1.3212*(H0)**3)*log(LV)&
         +(-0.07291+0.088307*(H0)-0.49123*(H0)**2+0.43196*(H0)**3)*&
         (log(LV))**2)
   print *,"标准系数Ci:",Ci
end program
function H0_f(Ht,hli)
implicit none
real Ht,hli
real H0_f
H0_f=Ht-hli
end function H0_f

function LV_f(Ls,Vs,Rl,Rv)
implicit none
real Ls,Vs,Rl,Rv
real LV_f
LV_f = (Ls/Vs)*sqrt(Rl/Rv)
end function LV_f

中森天下 发表于 2015-9-1 17:52:54

可以了谢谢楼主!!!
页: [1]
查看完整版本: 计算不出结果