一:分析:
大一學習積分的時候,我們學習過,可以通過矩形法來求定積分。
思路就是將積分區間划分成n等份,然后將這n等份近似看成矩形(或梯形),然后對所有的矩形(或梯形)的面積進行求和。
二:簡單的例子
求函數X^2在的定積分
矩形法:
#include<iostream> #include<math.h> using namespace std; int main(){ float fun(float x); float a, b; cout << "請輸入函數X^2的定積分的下限a和上限b:"; cin >> a >> b; int n = 50;//將區間划分成50份 float h = (b - a) / n;//h是每個區間分大小 float s = 0;//s是矩形的面積的和 float i = 0; for (i = a; i < b; i += h){ s = s + fun(i)*h; } cout << "\n結果是:" << s << endl; cout << endl; }
float fun(float x){ return pow(x, 2); }
三:使用C語言實現下面三個函數的定積分求解
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math.h> //使用矩形法來求定積分的通用函數 //p是函數指針,a是下界,b是上界,n是等分數 float integral(float(*p)(float), float a, float b, int n) { int i; float area=0; float ew = (b - a) / n; for (i = 1; i <= n;i++) area += (*p)(a + i*ew)*ew; return area; } float f_sin(float x) { return sin(x); } float f_cos(float x) { return cos(x); } float f_exp(float x) { return exp(x); } int main() { float a, b,area; float(*p)(float); int n = 20; printf("test sin,input a,b:"); scanf("%f,%f", &a, &b); p = f_sin; area = integral(p, a, b, n); printf("get value:%f\n", area); printf("test cos,input a,b:"); scanf("%f,%f", &a, &b); p = f_cos; area = integral(p, a, b, n); printf("get value:%f\n", area); printf("test exp,input a,b:"); scanf("%f,%f", &a, &b); p = f_exp; area = integral(p, a, b, n); printf("get value:%f\n", area); system("pause"); return 0; }