標籤:use 區間 namespace net mat efi define 思路 簡單的
一:分析:
大一學習積分的時候,我們學習過,可以通過矩形法來求定積分。思路就是將積分區間劃分成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;}
C語言複習---矩形法求定積分函數