矩形法求定积分;

来源:互联网 发布:淘宝怎么可以买到rush 编辑:程序博客网 时间:2024/05/28 09:32

矩形法求定积分的通用函数;求Fsinx,Fcos,Fexp;

#include<stdio.h>
#include<math.h>
int main()
{
 float intergral(float (*)(float),float,float,int);//对integral 的声明;
 float fsin(float);//fsin 函数的声明;
 float fcos(float);//fcos 函数声明
 float fexp(float);//fexp 函数声明;
 float a1,b1,a2,b2,a3,b3,(*p)(float);//
 float c;
 int n=20;
 printf("please input sin a1,b1 value:");
 scanf("%f,%f",&a1,&b1);
 printf("please input cos a2,b2 value:");
 scanf("%f,%f",&a2,&b2);
 printf("please input exp a3,b3 value:");
 scanf("%f,%f",&a3,&b3);
    p=fsin;//p为指向函数的指针变量;定义形式是float(*p)(float);
 c=intergral(p,a1,b1,n);
 printf("the output fsinx=%f/n",c);
 p=fcos;//将fcos函数的入口地址赋值给p;
 c=intergral(p,a2,b2,n);
 printf("the output fconsx=%f/n",c);
 p=fexp;
 c=intergral(p,a3,b3,n);
 printf("the output fexp=%f/n",c);
 return 0;
}
float intergral( float (*p)(float),float a,float b,int n)//这个地方忘了声明int a,int b,int n;
{   //float (*p)(float)表示p指向的函数有一个实型形参,p指向返回值为实型的函数;p相当于fsin(x);fsin(x)的值就是sin(x)的值;
 int i;
 float x,h,s;
 h=(b-a)/n;//将a到b区间分成20份;h是平均数值;
 x=a;
 s=0;
 for(i=1;i<n;i++)
 {
  x=x+h;
  s=s+(*p)(x)*h;//s=h.(f(a+h/2)+f(a+h+h/2)+...+f(a+n-1)h+h/2);函数f在(a,b)区间的定积分公式;
 }
 return (s);
}

float fsin(float x)//x忘记声明;应该是float x;
{
 return (float)sin(x);
}
float fcos(float x)
{
 return (float)cos(x);
}
float fexp(float x)
{
 return (float)exp(x);
}

原创粉丝点击