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
謝謝,那是解決方案。 –