2017-06-14 15 views
0

Fortran 95で二重合計を書こうとしていますが、正しい出力を得られないようです。常にFortranの非常に小さな実数を出力するようです。私のコードは以下の通りです:Fortran 95二重合計が正しく出力されない

program summation 
    implicit none 
    integer::i,j,m,n 
    real::s,s1 
    s1=0 
     do i=1,100 
     do j=1,100 
      s1=s1+(1/((i**2)+(j**2))) 
     end do 
     s=s1+s 
     end do 
    print*, s 
    end program summation 

sの最終値は約6.4でなければなりません。

答えて

2

最初にsを設定したことはありません。だからあなたは完全なゴミを得る。

s = s + s1を作成した後、すべての繰り返しでs1を0に再設定する必要があります。

また、1を大きな整数で割ると、結果は常に整数0になります。あなたはtye用語の1つを作成する必要があります。real。私の例では、1.を使って1を実際にします。

ので

s=0 

do i=1,100 
s1=0 
do j=1,100 
    s1=s1+(1./((i**2)+(j**2))) 
end do 
s=s1+s 
end do 

print*, s 

可能ですが、なぜちょうど1つのアキュムレータにすべてを合計していませんか?

s=0 

do i=1,100 
do j=1,100 
    s=s+(1./((i**2)+(j**2))) 
end do 
end do 

print*, s 
+0

ありがとうございます!私は当初s1を0にリセットしようとしていましたが、0の出力を得ていましたが、私の問題は、 – Hannah

関連する問題