C程序設計 (第四版) 譚浩強 習題8.13
習題 8.13 寫一個用矩形法求定積分的通用函數,分別求
∫ 0 1 s i n x d x ,?? ∫ 0 1 c o s x d x ,?? ∫ 0 1 e x d x \int_{0}^{1}sinx\ dx,\ \ \int_{0}^{1}cosx\ dx,\ \ \int_{0}^{1}e^x\ dx ∫01?sinx?dx,??∫01?cosx?dx,??∫01?ex?dx
說明:sin,cos,exp函數已在系統的數學函數庫中,程序開頭要用#include <math.h>。
IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差異。
?
代碼塊
#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define N 10000double integral(double a, double b, int n, double (*fun)(double)){double x = (b - a) / n;double sum = 0.0;for(int i = 1; i <= n; i++){sum += x * fabs((*fun)(a + x * i));}return sum;
}int main(){double f1, f2, f3;f1 = integral(0, 1, N, sin);f2 = integral(0, 1, N, cos);f3 = integral(0, 1, N, exp);printf("f1 = %.2f\n", f1);printf("f2 = %.2f\n", f2);printf("f3 = %.2f\n", f3);system("pause");return 0;
}