求运用c++来实现复合梯形公式的代码
复合梯形公式的C++代码:
#includeiostream
#includemath.h
using namespace std;
double fun(double x)
{
return (x*sin(x)); /*修改此处可以改变被积函数*/
}
double integral(double a, double b, int n)
{
double sum,step,result;
int i;
sum=(fun(a)+fun(b))/2;
step=(b-a)/n; /*积分步长*/
for(i=1;in;i++)
sum=sum+fun(a+i*step);
result=sum*step;
return result;/*返回积分值*/
}
void main() {
double result;
result=integral(1.0,2.0,150);/*修改此处可以改变积分上下限和步长*/
printf(“result=%f\n”,result);
system(“pause”);
}
运行结果:
result=1.440418
c语言用梯形法求积分
a区间起点,b积分区间中点, n是这个区间划分数。每一个划分的长度为h=(b-a)/n。每一个划分利用梯形算法来求积分,即:上底+下底乘以高再除以2。第一个小梯形面积为 (f(a) + f(a+h))*h/2,第二个为 (f(a+h)+f(a+2h))*h/2,依次类推。将这些加和加起来有:
h*(f(a)/2 + f(a+h) + … +f(a+(n-1)h) + f(b))/2)。预先将f(a)/2 和f(b)/2加起来,其它数据即f(a+h) + … f(a+(n-1)n)用循环处理,然后将所有结果乘以h即可。
C语言实习用梯形法或辛普森法求解定积分的值
//梯形法求定积分
#includestdio.h
#includemath.h
//定义被积函数
double func(double x){
return sin(x)*cos(x);
}
void main(){
double a,b,h,x,sum;
int i,n;
printf(“Input a b and n: “);
scanf(“%lf%lf%d”,a,b,n);
h=(b-a)/n;
x=a;
sum=(func(a)+func(b))/2;
for(i=1; in; i++){
x += h;
sum += func(x);
}
sum *= h;
printf(“sum=%.4lf\n”,sum);
}
用复化梯形公式计算积分,使误差小于0.0015
首先,你需提供已知的f(x)函数,再进行数值计算。
利用Matlab软件,使用复化梯形公式计算数值积分的方法如下。
1、自定义复化梯形法函数,traint()
function y = traint(a,b,n,func)
h = (b – a) / n;
x = linspace(a,b,n+1);
y1 = h * feval(func,x);
y1(1) = y1(1) / 2
y1(n+1) = y1(n+1) / 2
y = sum(y1);
end
2、自定义已知的f(x)函数,func()
function y = func(x)
y=f(x) %要具体的函数表达式
end
3、在命令窗口中,输入
a=1.8;b=2.6;n=10; %回车
traint(-1,0,8,f) %回车
怎样编写c语言积分函数用梯形法求函数f(x
#include
float f(float x)
{
return x*x+2*x+1;
}
void main()
{
float a,b,len,F=0;//
int n,i;
printf(“Please input a,b: “);
scanf(“%f%f”,a,b);
printf(“Please input n: “);
scanf(“%d”,n);
len=(a+b)/n;//区间度
for(i=0;in;i++)
{
F+=len*f(a);
a+=len;
}
printf(“%f\n”,F);
}
结例:
Please input a,b: 0 10.0
Please input n: 100
437.349792