分别采用梯形法、矩形法和辛普森法计算函数f(x)=e^(3x)+x^7在区[1,3]上的定积分。

要求:显示菜单命令(1.梯形法2.矩形法3.辛普森法4.退出),接收用户输入的序号并根据序号执行相关程序。c语言... 要求:显示菜单命令(1.梯形法 2.矩形法 3.辛普森法 4.退出),接收用户输入的序号并根据序号执行相关程序。
c语言
展开
 我来答
晃悠世界yq
2011-04-17 · TA获得超过2846个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:194万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float fx(float x){

return (exp(3.0*x)+pow(x,7));
}
float tixing(float(*fun)(float x),float a,float b,int n)
{
float s,h,y;
int i;
s=(fun(a)+fun(b))/2;
h=(b-a)/n;
for(i=1;i<n;i++)
s=s+fun(a+i*h);
y=s*h;
return y;
}
float juxing(float(*fun)(float x),float a,float b,int n){

double h;
double fx;
double x;
int i;
double sum=0;
h=fabs(a-b)/100;
x=a;
for(i=0;i<100;i++)
{
fx=fun(x+i*h+h/2);
sum=sum+fx;
}
return sum*h;
}
float fsimp(float(*fun)(float x),float a,float b,int eps)
{
int n,k;
double h,t1,t2,s1,s2,ep,p,x;
n=1; h=b-a;
t1=h*(fun(a)+fun(b))/2.0;
s1=t1;
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+fun(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; h=h/2.0;
}
return(s2);
}
void menu(){

system("cls");
printf("1.梯形法\n2.矩形法\n3.辛普森法\n4.退出\n");

}
int main()
{
int c=0;
menu();
while(1){

scanf("%d",&c);
switch(c){

case 1:printf("梯形法:%f\n",tixing(fx,1,3,1000));
break;
case 2:printf("矩形法:%f\n",juxing(fx,1,3,1000));
break;
case 3:printf("辛普森法:%f\n",fsimp(fx,1,3,1000));
break;
case 4:return 0;
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式