學習筆記——利用C&C++語言計算二重積分
阿新 • • 發佈:2018-12-30
二重積分定義如下(來源百度百科)
以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
}
執行結果:
執行時間較長,但結果與理論值十分接近