c语言利用积分法求pi,选用三种数值积分方法计算圆周率pi .

7d14a2b81882cfe4494b096a84150b2a.png 优质解答

用4了四种方法,另外还加了个龙格贝.

大人大量给分吧~

#include

using namespace std;

double getPI0(int h){

double l = 1.0/h;

int i,j;

double s = 0;

for(i = 0; i < h; i++){

s += l*(4/(1+((2*i+1)*l/2)*((2*i+1)*l/2)));

}

return s;

}

double getPI1(double h){

double l = 1.0/h;

int i,j;

double s = 0;

for(i = 0; i < h; i++){

s += l*(4/((1+i*l*i*l)))/2+l*4/(1+((i+1)*l*(i+1)*l))/2;

}

return s;

}

double getPI2(double h){

double l = 1.0/h;

int i,j;

double a,b;

double s = 0;

for(i = 0; i < h; i++){

a = i*l;

b = i*l+l;

double fa = 4/(1+a*a);

double fb = 4/(1+b*b);

double fab = 4/(1+(a+b)*(a+b)/4);

s += l*(fa+4*fab+fb)/6;

}

return s;

}

double fj(double a,int j){

int i;

double r = 1;

for(i = 0; i < j; i++){

r *= a;

}

return r;

}

double longBeiGe(double r){//r为给定的误差限

double * tm;

double * t;

tm = new double[1];

t = new double [2];

tm[0] = getPI1(1);

t[0] = getPI1(2);

t[1] = (4*t[0]-tm[0])/3;

int i = 1,j = 0;

while(t[i]-tm[i-1]>r){

tm = t;i++;

t = new double [i+1];

t[0] = getPI1(fj(2,i+1));

for(j = 1; j

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值