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

一:分析:

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

二:简单的例子

求函数X^2在的定积分

矩形法:

#include<iostream>
#include<math.h>
using 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 < b; i += h){
        s = s + fun(i)*h;
    }
    cout << "\n结果是:" << s << endl;
    cout << endl;
}
float fun(float x){ return pow(x, 2); }

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//使用矩形法来求定积分的通用函数
//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 <= n;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;
}


猜你喜欢

转载自www.cnblogs.com/ssyfj/p/9562727.html