implicit real*8 (a-h,o-z)
real*8 x,y(11)
do i=0,10
x=0.35139534352933061.D0
y=1.D0/x*(cosh(x/2.D0*(2.D0*i-a))-cosh(x*a/2.D0))
write(*,*) i,y(i)
end do
你好,我想我的打印功能,y
, 的值,因此我的程序应该打印y(0),y(1),y(2)...y(10)
。但是由于在Fortran中,第一个元素是y(1)
而不是y(0)
,Fortran将y(0)
视为大数而不是第一个元素。如何在i=0
时得到y
的结果?如何将数组的默认边界从1降低到0?
我的第一次尝试是:
implicit real*8 (a-h,o-z)
real*8 x,y(11)
do i=0,10
x=0.35139534352933061.D0
y=1.D0/x*(cosh(x/2.D0*(2.D0*i-a))-cosh(x*a/2.D0))
y0=1.D0/x*(cosh(x/2.D0*(-a))-cosh(x*a/2.D0))
y(0)=y0
write(*,*) i,y(i)
end do
,但我得到以下警告:
警告:在(1)超出范围(0 < 1)的尺寸1
阵列参考
我对这个问题的解决方法:
do i=1,11
y=1.D0/x*(cosh(x/2.D0*(2.D0*(i-1)-a))-cosh(x*a/2.D0))
write(10,*) i,y(i)
end do
我只是改变了说法(i)
与(i-1)
和i=0,10
与i=1,11
宣布为“真正的y(0:10)”。顺便说一下你的'y ='赋值是分配给整个数组的。 – agentp
谢谢,那是解决方案。 –