FORTRANのプログラム
Q:円周率プログラムをFortranが正しく動かない
A:
このプログラムでは円周率は求まりません。
宿題(課題)のようですからヒントだけにしておきます。
台形の上底と下底の長さが誤っています。
具体的には、次の式が誤りです。
SUM=SUM+((-X*X+1.000)+(-(X+HIGH)*(X+HIGH)+1.000))*HIGH/2.0
本来は「三平方の定理」で上底と下底の"長さ"を割り出さなくてはならないのです。
ヒント:
単純に次元が異なることがわかりますか?
SUMは"面積の次元"つまり"長さの2乗"になるべきですが、"長さの3乗"の次元になっていますね。
-------------------------
Q:FORTRANのプログラムでエラーが出た
Error: A common block or variable may not exceed 2147483647 bytes
A:
むやみに配列で次元を増やしたりして、2GB以上の領域にしようとせずに、データ構造を考え直すことです。
-------------------------
FORTRANなんて20年ぶりに見た。
一問目の円周率計算は、理解するのに10分ぐらいかかってしまった。
根が物理屋なので、長さを三回かけているところが気持ち悪い。
SUM=SUM+((-sqrt(X*X+1.000))+(-sqrt((X+HIGH)*(X+HIGH)+1.000)))*HIGH/2.0
このように、平方根を取って次元を直す必要がある。
しかし、この手の問題は表計算でシミュレートさせてからプログラムを組めば、
元々のアルゴリズムなのか、プログラムミスなのか、分かると思う。
楽な時代になったと思う。
もう一問は、エラーメッセージのとおりだ。
2GBものメモリー領域を使う変数など、巨大な配列を作ったからに違いない。
両方とも質問者は分かってくれただろうか。