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;
}

浙公网安备 33010602011771号