前提・実現したいこと
c言語で数値解析を行っています。プログラムは完成していて、実際に動かすことができているのですが、一部の結果だけnanになってしまいます。
発生している問題・エラーメッセージ
分割数を変化させると結果がnanになる
該当のソースコード
c言語
1/* 2 数値積分(台形面積近似) 3 sqrt(4-x^2)の0から2までの面積(1/4円の面積)を求める 4*/ 5int main() 6{ 7 //分割数・刻み幅 8 double m = 550000000; //分割数 9 10 double h = (1.0-0.0)/(double)m; //0-2までをm分割したときの1分割分の幅 11 //xの値と和(面積計算)の値 12 double x,sum; 13 //ループ変数 14 int i; 15 16 //初期化 17 sum = h; //h/2*(f(0)+f(2)) 18 x = h; //f(0+h)から開始 19 20 //面積計算 21 for(i=0;i<(m-1);i++){ 22 //面積和の計算 23 sum += h*(sqrt(1.0-x*x)); 24 //途中経過出力 25// printf("%4d %f %f %f\n",i,x,(4.0-(x+h)*(x+h)),sum); 26 //xを刻み幅分ステップアップ 27 x += h; 28 } 29 30 //結果 31 printf("%.15lf\n",sum*4); 32}
試したこと
分割数mの変更
m=1000000000,m=100000000の時は実行結果が表示されましたが、m=550000000の時にnanになりました。
補足情報(FW/ツールのバージョンなど)
あまり詳しくないのでわかる範囲で
PC:mac
実行:vim version 8.1.2292
テキストエディタ(vim) は内容に関係していないため、vim タグは外した方がよいかと思います。
プログラムの話題では代わりにコンパイラ等のバージョンを書くとよいでしょう。(「gcc 7.5.0」等)