用梯形法编程求定积分x^3+x/2+1从0积到10的值,要求使用指针
h=(b-a)/2,函数f在(a,b)区间的定积分的公式为s=h/2(f(a)+f(b))+h(i=1,n-1)f(xi)求和,取n为1000,a为0,b为10
è¿ä¸ªå
¶å®å¾ç®åï¼ç»ä½ åäºä¸ä¸ªå¾ç®åçéç¨ç积åå½æ°ï¼
å·²ç»åè¿ä¼åï¼èªå·±ä¸è°ç¨å°±å¯ä»¥äºï¼æçå¾é«ã
#include <stdio.h>
double f(double x) //è¿åå½æ°çå¼
{ double y;
y=x*x+x*2+1.0;
return y;
}
double Integrate(double (*f)(double),double a,double b,int n) //计ç®å½æ°çå®ç§¯å
{ double dx,y,sy,x;
if(n<=1)return 0.0;
dx=(b-a)/n;
x=a;
sy=0.0;
for(int i=0;i<=n;i++,x+=dx)
sy+=f(x);
sy-=f(a)/2.0;
sy-=f(b)/2.0;
return sy*dx;
}
void main()
{ double s;
s=Integrate(f, 1, 3, 100000);
printf("s=%lf\n",s);
}
å·²ç»åè¿ä¼åï¼èªå·±ä¸è°ç¨å°±å¯ä»¥äºï¼æçå¾é«ã
#include <stdio.h>
double f(double x) //è¿åå½æ°çå¼
{ double y;
y=x*x+x*2+1.0;
return y;
}
double Integrate(double (*f)(double),double a,double b,int n) //计ç®å½æ°çå®ç§¯å
{ double dx,y,sy,x;
if(n<=1)return 0.0;
dx=(b-a)/n;
x=a;
sy=0.0;
for(int i=0;i<=n;i++,x+=dx)
sy+=f(x);
sy-=f(a)/2.0;
sy-=f(b)/2.0;
return sy*dx;
}
void main()
{ double s;
s=Integrate(f, 1, 3, 100000);
printf("s=%lf\n",s);
}
温馨提示:答案为网友推荐,仅供参考