4、用梯形法求定积分(数值求解算法) 用梯形法编程求函数f(x)=x^2+2x+1的定积分的值。
//4、用梯形法求定积分(数值求解算法) 用梯形法编程求函数f(x)=x^2+2x+1的定积分的值。
//先写一个求sinx的定积分
/*#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void def(float a,float b)
{
int i,n;
float d=0.01,s=0;
n=(b-a)/d;
for(i=0; i<n; i++)
s+=(sin(a+d*i)+sin(a+d*(i+1)))*d/2.0;
//sin(a+n*i)是梯形的上底,sin(a+n*(i+1))是下底
printf("%f",s);
}
int main()
{
def(0,1);
getchar();return 0;
}*/
//可参照上个程序写出f(x)=x^2+2x+1的定积分的值
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//自定义一个定积分函数def();
void def(float a, float b)
{
int i,n;
float d=0.01,s=0; //将每份分为0.01。
n=(b-a)/d; //共可以分成n份。
/********第i块与第i+1块的高相加,乘以距离d除以2.0,即“上底加下底乘高除以二 ”。*******/
for(i=0; i<n; i++)
s+=( ((a+d*i)*(a+d*i)+2*(a+d*i)+1) + ((a+d*(i+1))*(a+d*(i+1))+2*(a+d*(i+1))+1) )*d/2.0;
printf("定积分的值即图形的面积为:\n");
printf("%f\n",s);
}
int main()
{
def(0,1);
getchar();
return 0;
}