有关c语言用梯形法求定积分的一个程序,请帮忙修改

#include<stdio.h>#include<math.h>doublef(doublex){returnsqrt(4-x*x);}main(){doublea,b... #include<stdio.h>
#include<math.h>
double f(double x)
{
return sqrt(4-x*x);
}
main()
{
double a,b,s1,s2,s,h,m=1E-6;
int n,i;
printf("请输入积分下限a和积分上限b\n");
scanf("%lf""%lf",&a,&b);
s2=0;n=100;
do
{s1=s2;n=2*n;h=(b-a)/n;i=1;s2=0;
do
{s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;
i=i+1;
}
while(i<=n);
}
while((fabs(s1-s2))>(m*(fabs(s2)-fabs(s1))));
printf("f(x)在[a,b]上的定积分为%lf",s2);
return 0;
}
展开
 我来答
听不清啊
高粉答主

2018-11-14 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#include<stdio.h>
#include<math.h>
double f(double x)
{
return sqrt(4-x*x);
}
main()
{
double a,b,s1,s2,s,h,m=1E-6;
int n,i;
printf("请输入积分下限a和积分上限b\n");
scanf("%lf%lf",&a,&b);
s2=0;
n=10000;
// do
{
s1=s2;
n=2*n;
h=(b-a)/n;
i=1;
s2=0;
do
{
s=(f(a+i*h)+f(a+(i-1)*h))*h/2;
s2=s2+s;
i=i+1;
}
while(i<=n);
}
// while((fabs(s1-s2))>(m*(fabs(s2)-fabs(s1))));
printf("f(x)在[a,b]上的定积分为%.10lf",s2);
return 0;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式