学习笔记——利用C&C++语言计算二重积分

二重积分定义如下(来源百度百科)
这里写图片描述
以z=xy在区域0<=y<=1,0<=x<=y內的二重积分为例,经计算理论值为:0.125,下面用C语言实现二重积分的离散计算

#include <iostream>      
using namespace std;
double fun_dbjf(double step,double low_y, double high_y, double(*p_y_1)(double), double(*p_y_2)(double), double(*p_f_x_y)(double, double));//计算f(x,y)的二次积分
double fun_jf_fxy(double step, double low_x, double high_x, double y, double(*p_x)(double, double));//计算函数f(x,y0)的积分
double fun_fxy(double x, double y);//函数f(x,y)
double fun_y_l(double x);//下限积分
double fun_y_h(double x);//上限积分
int main(int argc, char*argv[])
{
    cout << "二次积分值为:" << fun_dbjf(0.00001, 0, 1, fun_y_l, fun_y_h, fun_fxy) << endl;
    cout << "理论值为:" << 1.0 / 8.0;


}
double fun_dbjf(double step,double low_y, double high_y, double(*p_y_l)(double), double(*p_y_h)(double), double(*p_f_x_y)(double, double))
{
    double sum = 0;
    for (double t = low_y; t < high_y; t += step)
    {
        sum += fun_jf_fxy(step, (*p_y_l)(t), (*p_y_h)(t), t, p_f_x_y)*step;
    }
    return sum;
}
double fun_jf_fxy(double step, double low_x, double high_x, double y,double(*p_x)(double,double))
{
    double sum = 0;
    for (double t = low_x; t < high_x; t += step)
    {
        sum += (*p_x)(t, y)*step;
    }
    return sum;
}
double fun_fxy(double x, double y)
{
    return x*y;
}
double fun_y_l(double x)
{
    return 0;//f(x)=0
}
double fun_y_h(double x)
{
    return x;//f(x)=x
}

运行结果:
这里写图片描述
运行时间较长,但结果与理论值十分接近

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值