定积分函数c语言 c语言求函数定积分

用c语言求定积分

#include

成都网站建设哪家好,找创新互联!专注于网页设计、成都网站建设、微信开发、小程序设计、集团成都定制网站等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:PE包装袋等众多领域,积累了大量丰富的经验,同时也获得了客户的一致称誉!

#include

double integral(double(*fun)(double x),double a,double b,int,n){

double 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;/*返回积分值*/

}

double f(double x){

return(x*sinx) /*修改此处可以改变被积函数*/

}

int main(){

double y;

y=integral(f,1.0,2.0,150);/*修改此处可以改变积分上下限和步数,步长=(上限-下限)/步数*/

printf("y=%f\n",y);

return 0;

}

int main()

C语言求定积分

#include iostream

using namespace std;

#define min 0

#define max 1.0

inline double f(double x)

{

return x*x;

}

double Ladder(int n)//用梯形法求积分

{

double width=(max-min)/n;

double sum=0;

for (double d=min;dmax-width/2;d+=width)

{

sum+=(f(d)+f(d+width))*width/2;

}

return sum;

}

double Rectangle(int n)//用矩形法求积分

{

double width=(max-min)/n;

double sum=0;

for (double d=min;dmax-width/2;d+=width)

{

sum+=f(d)*width;

}

return sum;

}

void main()

{

int n;

cout"利用梯形法和矩形法求 x^2dx 在(0,1)上的定积分"endl;

cout"请输入划分小图形个数n(n越大,积分越准确):";

while (1)

{

cinn;

if (cin.good()n0)

break;

cout"输入错误,请重新输入:";

cin.clear();

cin.sync();

}

cout"梯形法积分为:"Ladder(n)endl

"矩形法积分为:"Rectangle(n)endl;

}

c语言 求定积分的通用函数

对于一重定积分来说其求解可以使用梯形法进行求解,计算公式如下所示:

其中,f(x)为被积函数,为横坐标的两点间的间隔,越小,则计算出的结果越精确。

对于求解此类问题可以使用C语言中的回调函数编写通用的计算函数,代码如下:

#include stdio.h

#include stdlib.h

#includemath.h

//功能:返回f(x)在积分区间[a,b]的值

//参数:FunCallBack 指向用于计算f(x)的函数

//      a  积分区间的起始值

//      b  积分区间的结束值

//      dx 横坐标的间隔数,越小计算结果越准确

double Calculate(double (*FunCallBack)(double x),

double a,double b,double dx)

{

double doui;

double total = 0;        //保存最后的计算结果

for (doui = a; doui = b; doui += dx)

{

total += FunCallBack(doui)*dx;

}

return total;

}

double f2(double x)

{

return x*x;

}

double f(double x)

{

return x;

}

double f3(double x)

{

return x*x*x ;

}

int main()

{

double total;

total = (Calculate(f, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f2, 2, 3, 0.000001));

printf("total = %lf\n", total);

total = (Calculate(f3, 2, 3, 0.000001));

printf("total = %lf\n", total);

return 0 ;

}

其中,函数f,f2,f3为自行编写的关于x的被积函数。

运行结果:

total = 2.500000

total = 6.333331

total = 16.249991

用C语言编写一个求定积分的程序

#includestdio.h

#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));

}

用C语言求定积分

实际问题描述:

求定积分近似值

程序代码如下:

#include

#include

void main()

{

int i,n=1000;

float a,b,h,t1,t2,s1,s2,x;

printf("请输入积分限a,b:");

scanf("%f,%f",a,b);

h=(b-a)/n;

for(s1=0,s2=0,i=1;i=n;i++)

{

x=a+(i-1)*h;

t1=(float)exp(-x*x/2);t2(float)=exp(-(x+h)*(x+h)/2);

s1=s1+t1*h;        /*矩形面积累加*/

s2=s2+(t1+t2)*h/2;        /*梯形面积累加*/

}

printf("矩形法算得积分值:%f.\n",s1);

printf("梯形法算得积分值:%f.\n",s2);

}

程序运行结果如下:

矩形法算得积分值:0.855821

梯形法算得积分值:0.855624

由上面的比较可知,梯形法的精度要高于矩形法。

C语言求指定函数定积分的程序

#include stdio.h

#define RES (1e-6)

double integ(double a,double b,double f(double))

{

double sum;

for(sum=0;ab;a+=RES)

{

sum+=f(a)*RES;

}

return sum;

}

double f(double x)

{

return x*x;

}

int main()

{

printf("%lf\n",integ(0,0.1,f));

return 0;

}


分享文章:定积分函数c语言 c语言求函数定积分
本文网址:http://hbruida.cn/article/hejjjj.html