C++实现定积分运算

文章目录

    • 题目
    • 代码

题目

C++实现定积分运算_第1张图片


代码

#include 
#include 
#include 

using namespace std;

// 定积分函数
double integrate(function<double(double)> func, double a, double b, int num_intervals) {
    double h = (b - a) / num_intervals;  // 计算每个小区间的宽度
    double result = (func(a) + func(b)) / 2.0;  // 初始化结果为端点的函数值之和的一半

    // 使用梯形法则进行数值积分
    for (int i = 1; i < num_intervals; ++i) {
        double x = a + i * h;
        result += func(x);
    }

    result *= h;  // 乘以小区间宽度得到最终结果
    return result;
}

// 要积分的函数
double Func1(double x) {
    return x + 2 - x * x;
}
double Func2(double x) {
    return sqrt(1 - x * x) + x;
}
double Func3(double x) {
	double tmp = (4 - x * x);
    return sqrt(tmp * tmp * tmp);
}
double Func4(double x) {
    return sin(x);
}

function<double(double)> ReturnFunc(int op) {
	if (op == 1) return Func1;
	else if (op == 2) return Func2;
	else if (op == 3) return Func3;
	else return Func4;
}

int main() {
    int num_intervals = 1000;
	int op; 
	double a, b;
	while (cin >> op >> a >> b) {
		auto f = ReturnFunc(op);
    	double result = integrate(f, a, b, num_intervals);
		if (op != 4)
			printf("∫[%.2lf~%.2lf]f%d(x)dx=%.2lf\n", a, b, op, result);
		else {
			printf("∫[%.2lf~%.2lf]sin(x)dx=%.2lf\n", a, b, result);
		}
	}
    return 0;
}

你可能感兴趣的:(算法,c++,开发语言,定积分,数学,算法)