前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 计算定积分和二重积分

C++ 计算定积分和二重积分

作者头像
用户6021899
发布2021-04-30 11:48:05
4.1K0
发布2021-04-30 11:48:05
举报

C++编程求定积分和二重积分,利用分割求和算法,可传递任意可积函数进行积分的数值计算。

涉及到的基础知识有:

  • 函数指针做函数形参
  • 函数重载
代码语言:javascript
复制
#include <iostream>
#include <cmath>
#define pi 3.14159265358979
#define e 2.718281828459045

double f(double x);
double f(double x, double y);
double integral(double (*fun)(double), double L, double H, long n=10000000);
double integral(double (*fun)(double,double), double xL, double xH, double yL, double yH, long n=10000);

int main()
{
    using namespace std;
    cout.precision(8);//小数点位数
    cout.setf(ios_base::showpoint);//显示小数点最后面的0
    cout<<integral(f,0,100000.0)<<endl;
    cout<<integral(f,-2,2,-1,1)<<endl;
    return 0;
}

//这里可定义任意一元可积函数
double f(double x)
{
    return sin(x)/x;
}

//这里可定义任意二元可积函数
double f(double x, double y)
{
    return x*x +y*y;
}

//定积分
double integral(double (*fun)(double), double L, double H, long n)
{
    double x,dx,sum;
    dx = (H-L)/n;
    x = L + 0.5*dx;
    sum = 0;
    for(int i=0; i<n; i++)
    {
        sum += fun(x)*dx;
        x += dx;
    }
    return sum;
}

//二重积分
double integral(double (*fun)(double,double), double xL, double xH, double yL, double yH, long n)
{
    double x,y,dx,dy,sum;
    dx = (xH-xL)/n;
    dy = (yH-yL)/n;
    x = xL + 0.5*dx;
    sum = 0;
    for(int i=0; i<n; i++)
    {
        y = yL + 0.5*dy;
        for(int j=0; j<n; j++)
        {
            sum += dx*dy*fun(x,y);
            y += dy;
        }
        x += dx;
    }
    return sum;
}

结果如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档