初めて質問させていただきます。
Posted: 2006年12月24日(日) 18:15
『円周率πを求める』という課題についてなのですが、いくつか指定がありまして、
1、マチンの公式を使用すること。ただし、tan-1乗*1/5とtan-1乗*1/239はグレゴリ級数というを使い、xに1/5と1/239を代入してそれぞれ求めること。
2、math.hのatan()関数は使用してはならない。
3、tan-1乗*xで求めるときの級数の項数は30項目(つまりn=30)以上とする。
4、小数点以下は15桁まで表示すること。
という指定です。
いろいろ調べて、自分は下のような感じに書いてみました。
#include<stdio.h>
#include<math.h>
int main(void)
{
int i;
double PI, a1, a2, x;
a1 = 0.0;
x = 1.0/5.0;
for( i=1; i<=30; i++){
a1 =16 * pow( (-1), i-1 )/ (2*i-1)* pow( x, (2*i-1));
}
a2 = 0.0;
x = 1.0/239.0;
for( i=1; i<=30; i++){
a2 = 4 * (pow( (-1), i-1 ) / (2*i-1) )* pow( x, (2*i-1));
}
PI = a1 - a2;
printf("円周率:%18.15f\n" ,PI);
return 0;
}
でもこの式でデバックすると、うまくいかないんです。
pow( x, (2*i-1))とpow( x, (2*i-1))の式にうまく1/5と1/239を代入できなくて、
もう自分ではどうしたらよいか分からなくなってしまいました。
どうかよろしくお願いします。
1、マチンの公式を使用すること。ただし、tan-1乗*1/5とtan-1乗*1/239はグレゴリ級数というを使い、xに1/5と1/239を代入してそれぞれ求めること。
2、math.hのatan()関数は使用してはならない。
3、tan-1乗*xで求めるときの級数の項数は30項目(つまりn=30)以上とする。
4、小数点以下は15桁まで表示すること。
という指定です。
いろいろ調べて、自分は下のような感じに書いてみました。
#include<stdio.h>
#include<math.h>
int main(void)
{
int i;
double PI, a1, a2, x;
a1 = 0.0;
x = 1.0/5.0;
for( i=1; i<=30; i++){
a1 =16 * pow( (-1), i-1 )/ (2*i-1)* pow( x, (2*i-1));
}
a2 = 0.0;
x = 1.0/239.0;
for( i=1; i<=30; i++){
a2 = 4 * (pow( (-1), i-1 ) / (2*i-1) )* pow( x, (2*i-1));
}
PI = a1 - a2;
printf("円周率:%18.15f\n" ,PI);
return 0;
}
でもこの式でデバックすると、うまくいかないんです。
pow( x, (2*i-1))とpow( x, (2*i-1))の式にうまく1/5と1/239を代入できなくて、
もう自分ではどうしたらよいか分からなくなってしまいました。
どうかよろしくお願いします。