C语言复习---矩形法求定积分函数

2021-07-10 09:06

阅读:763

标签:use   区间   namespace   net   mat   efi   define   思路   简单的   

一:分析:

大一学习积分的时候,我们学习过,可以通过矩形法来求定积分。
思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和。

技术分享图片

技术分享图片

二:简单的例子

求函数X^2在的定积分

矩形法:

#include
#includeusing namespace std;
int main(){
    float fun(float x);
    float a, b;
    cout "请输入函数X^2的定积分的下限a和上限b:";
    cin >> a >> b;
    int n = 50;//将区间划分成50份 
    float h = (b - a) / n;//h是每个区间分大小 
    float s = 0;//s是矩形的面积的和
    float i = 0;
    for (i = a; i  h){
        s = s + fun(i)*h;
    }
    cout "\n结果是:"  endl;
    cout  endl;
}
float fun(float x){ return pow(x, 2); }

三:使用C语言实现下面三个函数的定积分求解

技术分享图片

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include //使用矩形法来求定积分的通用函数
//p是函数指针,a是下界,b是上界,n是等分数
float integral(float(*p)(float), float a, float b, int n)
{
    int i;
    float area=0;
    float ew = (b - a) / n;

    for (i = 1; i )
        area += (*p)(a + i*ew)*ew;

    return area;
}

float f_sin(float x)
{
    return sin(x);
}

float f_cos(float x)
{
    return cos(x);
}

float f_exp(float x)
{
    return exp(x);
}

int main()
{
    float a, b,area;
    float(*p)(float);
    int n = 20;

    printf("test sin,input a,b:");
    scanf("%f,%f", &a, &b);
    p = f_sin;
    area = integral(p, a, b, n);
    printf("get value:%f\n", area);

    printf("test cos,input a,b:");
    scanf("%f,%f", &a, &b);
    p = f_cos;
    area = integral(p, a, b, n);
    printf("get value:%f\n", area);

    printf("test exp,input a,b:");
    scanf("%f,%f", &a, &b);
    p = f_exp;
    area = integral(p, a, b, n);
    printf("get value:%f\n", area);

    system("pause");
    return 0;
}

 

 



C语言复习---矩形法求定积分函数

标签:use   区间   namespace   net   mat   efi   define   思路   简单的   

原文地址:https://www.cnblogs.com/ssyfj/p/9562727.html


评论


亲,登录后才可以留言!