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;
}

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM