#includestdio.h
創(chuàng)新互聯(lián)公司是一家專業(yè)提供扎賚特企業(yè)網站建設,專注與成都網站制作、成都網站建設、成都h5網站建設、小程序制作等業(yè)務。10年已為扎賚特眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
#includemath.h
float f1(float x)
{
return(1.0+x);
}
float f2(float x)
{
return(2.0*x+3.0);
}
float f3(float x)
{
return(exp(x)+1);
}
float f4(float x)
{
return(pow(1+x,2));
}
float f5(float x)
{
return(pow(x,3));
}
float fsimp(float a,float b,float (*p)(float))
{
float c,s;
c=(a+b)/2;
s=(b-a)/6*(p(a)+4*p(c)+p(b));
return s;
}
int main()
{
float a,b;
printf("請輸入積分下限a的值:");
scanf("%f",a);
printf("請輸入積分上限b的值:");
scanf("%f",b);
printf("%f\n",fsimp(a,b,f1));
printf("%f\n",fsimp(a,b,f2));
printf("%f\n",fsimp(a,b,f3));
printf("%f\n",fsimp(a,b,f4));
printf("%f\n",fsimp(a,b,f5));
}
基本是這樣的,用梯形發(fā)求定積分,對應于一個積分式就要有一段程序,不過你可以改變程序的一小部分來改變你所要求的積分式。
以c為例:求f(x)=xsinx從1到2的積分
#include math.h
float integral(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;in;i++)
s=s+fun(a+i*h);
y=s*h;
return y;/*返回積分值*/
}
float f(float x)
{return(x*sinx) /*修改此處可以改變被積函數(shù)*/
}
main()
{float y;
y=integral(f,1.0,2.0,150);/*修改此處可以改變積分上下限和步長*/
printf("y=%f\n",y);
}
float I_Control(float Input)
{
static float OutData = 0;
OutData+=Input*deltaT;
deltaT+=deltaT;
return OutData;
}