
Ubuntu日本語フォーラム

ログインしていません。
水理学の計算をgfortranでおこないたいと思っています。しかし、以下に示したソースコードを実行したところ、答えは両方共1.00000になってしまい、正しい結果になっていません。コンパイル時のオプションか何かで解決する問題なら、教えていただければと思って投稿しました。
C****************************************************
C
C 等流計算
C
C
C*****************************************************
AN=0.05
q=10.0
G=9.8
i0=0.01
h0=(AN**2*q**2/i0)**(3/10)
hc=(1.1*q**2/G)**(1/3)
write (6,100) h0,hc
100 format(1H ,'h0 = ',F10.5,5X,'hc = ',F10.5)
stop
end
オフライン
fortranの言語仕様など、全く知らないため、もしかしたら見当違いなことを書いてしまっているかも知れませんが、
n-takahashi による投稿:
AN=0.05
q=10.0
G=9.8
i0=0.01
h0=(AN**2*q**2/i0)**(3/10.0)
hc=(1.1*q**2/G)**(1/3.0)
write (6,100) h0,hc
100 format(1H ,'h0 = ',F10.5,5X,'hc = ',F10.5)
stop
end
だと計算結果が変わるようです。
gfortranおよびfortranの言語仕様を確認の上、ソースコードがやりたいことに合致しているか確認してみてはいかがでしょうか。
オフライン
hmatsueさんが書かれているように、実数型と整数型が混在しているようです。
このままですと、i0も整数型と認識されてしまい、h0 = +Infinityとなってしまうので、きちんとデータ型を定義した方がいいと思います。
implicit none
real :: AN=0.05
real :: q=10.0
real,parameter :: G=9.8
real :: i0=0.01
real h0,hc
h0=(AN**2.*q**2./i0)**(3./10.)
hc=(1.1*q**2./G)**(1./3.)
write (*,100) h0,hc
100 format(1H ,'h0 = ',F10.5,5X,'hc = ',F10.5)
stop
endparameterの部分は不要かと思いますが、重力加速度だと思うので、指定してみました。また、数値の部分は小数点を加えるだけで十分です。
下記のサイトなどが参考になるかと。
http://www.nag-j.co.jp/fortran/FI_4.html
オフライン
vine_userさんのとおりにやったら正しい計算結果になりました。データ型を指定することが必要だったのですね。fortranについては勉強を始めたばかりなので有難うございました。
オフライン