1. 程式人生 > >學習筆記——利用C&C++語言計算二重積分

學習筆記——利用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 }

執行結果:
這裡寫圖片描述
執行時間較長,但結果與理論值十分接近