矩形法求定积分;

矩形法求定积分的通用函数;求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);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值