c++算法代码练习-二重积分求解

本篇主要介绍二重积分求解的c++算法代码。 

 

#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <cmath>

//采用Gauss方法求二重积分

using namespace std;

//二重积分类定义
//输入balaba...,输出 balaba...

class dbquad {
public:
    double func1(double x, double y);
    double dbsolve(double f, double a, double b, double c, double d) {
        int i, j;
        double s ;
        vector<double> node, w, t1, t2;

        //函数内部初始化
        s = 0.;
        t1 = { 0,0,0,0,0 };
        t2 = { 0,0,0,0,0 };
        node = { -0.9061798459,-0.5384693101,0.,0.5384693101,0.9061798459 };
        w = { 0.2369268851,0.4786286705,0.5688888889,0.4786286705 ,0.2369268851 };
        for (i = 0; i < 5; i++) {            
            t1[i] = (b + a) / 2. + node[i]*(b - a) / 2. ;
            t2[i] = (d + c) / 2. + node[i]*(d - c) / 2. ;
        }
        
        //二重积分主程序
        for (i = 0; i < 5; i++) {
            for (j = 0; j < 5; j++) {
                f = func1(t1[i], t2[j]);
                s = s + w[i] * w[j] * f;
            }
        }
        s = s * (b - a)*(d - c) / 4.;

        return s;

    }
};

double dbquad::func1(double x, double y) {
    double f;
    f = log(x + 3 * y);
    return f;
};

int main() {

    double f;
    double res;

    f = 0.;
    res = 0.;

    dbquad dbtest;
    res = dbtest.dbsolve(f , 1.4, 2., 1., 1.5);

    cout << "Result: " << res;

}

posted @ 2021-08-12 09:38  Sun_guy  阅读(613)  评论(0)    收藏  举报