用梯形法编程求函数f(x)=x2+2x+1的定积分 求大神帮我把这个题有c语言或c++编出来,急用,谢谢了

 我来答
lexou123
2013-11-08 · TA获得超过543个赞
知道小有建树答主
回答量:279
采纳率:100%
帮助的人:210万
展开全部
#include<stdio.h>
#include<math.h>
double simp(double a,double b,double eps, double (*f)())
{
int n,k;
double h,t1,t2,s1,s2,ep,p,x;
n = 1;
h = b - a;
t1 = h *( (*f)(a) + (*f)(b) ) / 2.0; //计算T1=(b-a)/2*[f(a)+f(b)]
s1 = t1; //用 t1 代替s1
ep = eps + 1.0;
while(ep >= eps)
{
p = 0.0;
for( k = 0; k <= n - 1; k++)
{
x = a + ( k + 0.5) * h;
p = p + (*f)(x);
}
t2 = (t1 + h * p) / 2.0;
s2 = (4.0 * t2 - t1) / 3.0;
ep = fabs( s2 - s1 ); //计算精度
t1 = t2;
s1 = s2;
n = n + n;
printf("n=%d\n",n);
h = h / 2.0;
}
return(s2);
}
double simpf(double x)
{
double y;
y = (pow( x , 2) + 1 + 2 * x);
return(y);
}
main()
{
double a,b,eps,t,simpf();
a = 0.0; //积分下限
b = 1.0; //积分上限
eps = 0.0001;//积分精度
t = simp(a,b,eps,simpf);
printf("\n");
printf("t=%f\n",t);
printf("\n");
getch();
}
---------------
输出:
n=2
n=4
t=2.333333
----------------
函数f(x)=x2+2x+1的定积分的原函数式((x+1)^3)/3+c,在0到1之间结果是7/3=2.3333……
有空学下 辛普森求积公式,在编写程序就简单了。
高人仰北谋
推荐于2017-11-26 · TA获得超过3401个赞
知道大有可为答主
回答量:2259
采纳率:86%
帮助的人:719万
展开全部
这个其实很简单,给你做了一个很简单的通用的积分函数,
已经做过优化,自己一调用就可以了,效率很高。

#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);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式