C++程序设计(矩形法求定积分)

矩形法求定积分的通用函数

一、原理

思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形

(或梯形)的面积进行求和。

二、方法

可以看出:每次需要求定积分的函数是不一样的。可以编写一个求定积分的通用函数integral

它有3个形参:下限a、上限b以及指向函数的指针变量 fun。函数原型可写为:

    float integral (float a, float b,float (*fun)());

先后调用integral函数5次,每次调用时把a,b以及sin,cos,exp 之一作为实参,把上

限、下限以及有关函数的入口地址传送给形参fun。在执行integral函数过程中求出定积分的

值。根据以上思路,编写出程序。

三、 代码实现

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    
    
	float integral(float (*p)(float),float a,float b,int n);
	float fsin(float x);
	float fcos(float x);
	float fexp(float x);
	float a1,b1,a2,b2,a3,b3,result,(*p)(float);
	int n=1000;             //这里将定积分以x轴划分了1000份(划分的越多,所得的值越精确)
	cout<<"intput the upper and lower limit of sin(x) :"<<' ';
	cin>>a1>>b1;
	cout<<"intput the limit of cos(x) :"<<' ';
	cin>>a2>>b2;
	cout<<"intput the limit of exp(x) :"<<' ';
	cin>>a3>>b3;
	p=fsin;                 //使p指针指向fsin函数,便于后续函数的调用 
	result=integral(p,a1,b1,n);
	cout<<"The integral of sin(x) is:"<<result<<endl;
	p=fcos;
	result=integral(p,a2,b2,n);
	cout<<"The integral of cos(x) is:"<<result<<endl;
	p=fexp;
	result=integral(p,a3,b3,n);
	cout<<"The integral of exp(x) is:"<<result<<endl;
	return 0;
	
 } 
 float integral(float(*p)(float),float a,float b,int n)    //用矩形法求定积分的通用函数 
{
    
    
   float x,d,s=0;
   if(a<b) {
    
     int k;               //确保上下限的正确性 
   	k=a;a=b;b=k;          
   }
   d=(a-b)/n;   
   x=b;
   for(int i=0;i<n;i++)
   {
    
    
   	x=x+d;           
   	s=s+(*p)(x)*d;                //将求出来的每个矩形面积累加即可 
   }
   return (s); 
}
 float fsin(float x)
    {
    
     return sin(x); }
 float fcos(float x)
    {
    
     return cos(x); }
 float fexp(float x)
    {
    
     return exp(x); }
 

四、 说明

sincosexp是系统提供的数学函数,在程序中定义3个函数fsinfcos

fexp分别用来计算sin(x),cos(x)和 exp(x)的值,在main函数中要对这3个函数作声明。在main

函数中定义p为指向函数的指针变量,定义形式是“float(*p)(float)”,表示p指向的函数有一个实型形

参,p可指向返回值为实型的函数。

main函数中有“p=fsin;”,表示将fsin函数的入口地址上赋给p,在调用integral函数时,用p作

为实参,把fsin函数的入口地址传递给形参p(形参p也定义为指向函数的指针变量),这样形参p也指

向fsin函数,(*p)(x)就相当于fsin(x)。fsin(x)的值就是sin(x)的值。因此通过调用 integral 函数

出 sin(x)的定积分。求其余两个函数的定积分的情况与此类似。

猜你喜欢

转载自blog.csdn.net/Terminal_ve/article/details/125965632