C语言复习---矩形法求定积分函数
一:分析:
大一学习积分的时候,我们学习过,可以通过矩形法来求定积分。
思路就是将积分区间划分成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; }