C语言使用矩形法求定积分的通用函数分享!

本文为大家分享了C语言使用矩形法求定积分的通用函数,供大家参考,具体内容如下

要求:

写一个用矩形法求定积分的通用函数,分别求:sin(x),cos(x),e^x 。

分析:

矩形法,学过高等数学就知道化曲为直的思想。将定积分化为多个函数连续的和。基本思想是将区间[a,b]化成n等分,当n越大的时候结果越准确。图形化成一小块一小块的矩形。底边长都为(b-a)/n.高为每个等分点的函数值。然后将每个矩形的面积相加即为所求。

如:

y=x;

C语言使用矩形法求定积分的通用函数

可以通过矩形的方法来无限逼近定积分的求解,如下:

C语言使用矩形法求定积分的通用函数

因为被分成n等分,就可以认为每一等分是一个矩形,那么每一矩形的面积为: 每一个矩形面积为:***Sn=f(x)(b-a)/n 总面积为:****S=S1+S2+…+Sn

  #include <stdio.h>  #include <stdlib.h>  #include <math.h>//引入sin x,cos x,e^x的库  //使用指向函数的指针变量来复用一个通用函数  int main()  {   int i,j,k,n,m;   float res;   float (*fun)(float);//定义指向函数的指针变量   float integral (float a,float b,float (*fun)(float),int n);//n为将积分区间(b-a)分成n等分,当n的值越大的时候结果越精确,数学上的定义是取无穷大   float fsin(float);//sin x函数的声明   float fcos(float);//cos x函数的声明   float fexp(float);//e^x 函数的声明   printf ("请输入积分的下限n");   scanf ("%d",&m);   printf ("请输入积分的上限n");   scanf ("%d",&n);   printf("请输入你要计算的函数的具体函数n");   printf("1.sin(x) 2.cos(x) 3.e^xn");   scanf ("%d",&i);   switch(i)   {   case 1:    fun=fsin;//函数地址(入口)交给指针变量,灵活性强    break;      case 2:    fun=fcos;    break;   case 3:    fun=fexp;   }   res=(fun)(2.00);   //printf("xxxx=%fn",res);   printf ("计算的结果为n");   res=integral(m,n,fun,200000);   printf("res=%f",res);   return 0;  }  float fsin(float x)  {   // printf("fsinx=%fn",x);   return sin(x);  }  float fcos(float x)  {   //printf("fcosx=%fn",x);   return cos(x);  }  float fexp(float x)  {   //getchar();   //printf("fexp=%fn",x);   return exp(x);  }  float integral(float a,float b,float (*fun)(float),int n)  {   //矩形法计算,定积分转换为连续求和的形式   int i=0;   float x=a,s=0;   float h=(b-a)/n;      for (i=1;i<=n;i++)   {    x=x+h;    s=s+((*fun)(x)*h);      }   return s;  }

结果:

C语言使用矩形法求定积分的通用函数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

—-想了解C语言使用矩形法求定积分的通用函数分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483940.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐