我需要向Excel生成数据,并且我得到一个错误,无法确定命名常量。问题是当我希望yw
使用if时,yw
依赖于lp
,如果lp
为1或lp
为50,那么我的{ {1}}等于yw
,否则我必须更改y
。
这是代码
yw
现在错误看起来像这样:
program dane
parameter (ndim = 50)
dimension lp(ndim), x(ndim)
real*8, dimension (ndim):: y0,dy,y,yw
integer x,xmin, dx
real*8 a,b,c
a=0.2
b=-1.0
c=10.0
xmin=-20
dx=1
n=50
call randomize
open(1,file='dane_excel.csv')
lp=0
x=0
y0=0
dy=0
y=0
yw=0
do i=1,n,dx
lp(i)=i;
x(i)=xmin+(i-1);
y0(i)=a*x(i)**2+b*x(i)+c
call random_number(r)
dy(i)=3*sqrt(y0(i))*(r-0.5)
y(i)=y0(i)+dy(i)
write(*,*)lp(i),';',x(i),';', y0(i),';',dy(i),';'
write(1,*)lp(i),';',x(i),';', y0(i),';',dy(i),';'
end do
if (lp.eq.1) then
yw(1)=y(1)
else if (lp.gt.1 .and. lp.lt.n) then
do j=2,n-1
yw(j)=(y(j+1)+2*yw(j)+y(j-1))/4
end do
else
yw(n)=y(n)
end if
close(1)
read(*,*)
end
!***************************************
subroutine randomize
!***************************************
! inicjowanie przypadkowych wartości poczatkowych generatorów liczb losowych
! e.z. 13.10.2016
!***************************************
integer clock,seed(20)
integer*8 clock8
call system_clock(clock) ! czas systemowy w milisekundach
call srand(clock) ! ustawienie przypadkowej wartości geberatora irand
clock8=time8() ! czas w sekundach od 1.01.1970
call random_seed(size=n) ! odczyt w ilu bajtach zapisane jest ziarno generatora
seed = clock + 37 * (/ (i - 1, i = 1, n) /) ! przypadkowe wartości ziarna
call random_seed(put=seed(1:n)) ! zapisanie ziarna do generatora
return
end