C++ :梯形法求积分的公式

本文介绍了如何使用C++编程实现梯形法求积分,通过函数指针传递不同的被积函数(如4/(1+x^2),sqrt(1+x^2),sin(x)),计算给定区间上的积分值。
摘要由CSDN通过智能技术生成

C++ :梯形法求积分的公式

已知用梯形法求积分的公式为:
T n = h ( f ( a ) + f ( b ) ) 2 + h ∑ i = 1 n − 1 f ( a + i h ) T_{n}= \frac {h(f(a)+f(b))}{2}+h \sum \limits _{i=1}^{n-1}f(a+ih) Tn=2h(f(a)+f(b))+hi=1n1f(a+ih)
其中, h = b − a n h=\frac{b-a}{n} h=nba, n 为积分区间的等分数,编程求如下积分的值。要求:

1.把求积分公式编写成一个函数,并使用函数指针作为形式参数。
2.调用该函数时,给出不同的被积函数作为实际参数求不同的积分。
[ ∫ 0 1 4 1 + x 2 d x ] [ ∫ 1 2 1 + x 2 d x ] [ ∫ 0 π 2 sin ⁡ x d x ] [ \int _{0}^{1} \frac {4}{1+x^{2}}dx ] [ \int _{1}^{2} \sqrt {1+x^{2}}dx ] [ \int _{0}^{ \frac { \pi }{2}} \sin xdx ] [011+x24dx][121+x2 dx][02πsinxdx]

思路

总体思路:

定义三个被积函数 function1、function2 和 function3,然后在 main 函数中调用 trapezoidal_integration 函数来计算这些函数在指定区间上的积分值。

实现:

  1. 首先可以把公式中的公因数h提出来,所以公式函数的返回值就可以表达成一个h*k(k为一个表达式)的形式,第一部分就是h,第二部分就是f(a+ih),至于求和,可以用for循环来解决。函数设置的大概思路就是,引用函数指针用来引用所选择的积分表达式,再传入double型形式参数作为积分的上限和下限,以及等分数n
  2. 设置三个函数用来表达积分式子,返回相应类型。
  3. 主函数就可以直接调用trapezoidal_integration,继而调用三个被积函数 function1、function2 和 function3,输出即可。

程序如下

#include <iostream>
#include <cmath>
using namespace std;

double trapezoidal_integration(double (*f)(double), double a, double b, int n) {
  double h = (b - a) / n;
  double sum = 0.5 * (f(a) + f(b));
  for (int i = 1; i < n; i++) {
      double x = a + i * h;
      sum += f(x);
  }
  return h * sum;
}

double function1(double x) {
  return 4.0 / (1 + x * x);
}

double function2(double x) {
  return sqrt( 1 + x * x);
}

double function3(double x) {
  return sin(x);
}

int main() {
  double result1 = trapezoidal_integration(function1, 0, 1, 1000);
  double result2 = trapezoidal_integration(function2, 1, 2, 1000);
  double result3 = trapezoidal_integration(function3, 0,M_PI/2, 1000);

  // 输出结果
cout << "第一种积分结果为: " << result1 << endl;
cout << "第二种积分结果为: " << result2 << endl;
cout << "第三种积分结果为:" << result3 << endl;

  return 0;
}

  • 26
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值