回 帖 发 新 帖 刷新版面

主题:求助~~IVF+IMSL 变量k赋值以后,发现运行中一直在变啊?

在do之前我赋了值的啊 ,怎么看不见了啊? 用鼠标选择一下就可以看到了
program main
include 'link_fnl_shared.h'
use imsl_libraries
implicit none
integer:: i,j,m,SARL,ct
real:: R(100000),Rstar(100000),Y,x,varR,meanR,Rrank,k,Z,ARL,limit,func

k=0.5
ct=ct+1
m=5000
SARL=0
limit=3

do j=1,m
        i=0
        Z=0
        
        do while(Z<limit)
        call drnnor(1,x)
        i=i+1 
        R(i)=x
        Rrank=count(R(1:i)<x)+1
        meanR=(i+1)/2.0
        if(i==1)then
          varR=0
          Rstar(1)=0
        else
          varR=(i+1)*(i-1)/12.0
          Rstar(i)=(Rrank-meanR)/varR**0.5
        end if
        
       Z=max(0.0,Z+Rstar(i)-k)

       end do
       SARL=SARL+i
    write(*,*)k
end do
       ARL=SARL/real(m)

    
    func=ARL-400
    write(*,*)ct,ARL,func
    stop
    end

回复列表 (共5个回复)

沙发

k没有初始化,也没有赋值,当然在一直变了……

板凳


我赋了值的哦..

3 楼

直接
real,parameter :: k = 0.5
试试?

4 楼

k=0.5写在limit=3下面也就行了,但是我想知道原因~
我发现用IVF还有别的问题啊,比如我用二分法算得方程的根,直接带回这个方程,结果差距都很大,同样的程序,用CVF算出来就完全没问题.到底是怎么回事哦?
ct=ct+1
m=5000
SARL=0
limit=3
k=0.5

5 楼

仔细检查一下代码,这种问题一般出在没有正确初始化或是内存覆盖。

另:你数组初始化了么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册