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份
float h = (b - a) / n;//h是每个区间分大小
float s = ;//s是矩形的面积的和
float i = ;
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, );
}
三:使用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=;
float ew = (b - a) / n; for (i = ; 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 = ; 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 ;
}
C语言复习---矩形法求定积分函数的更多相关文章
- YTU 2421: C语言习题 矩形法求定积分
2421: C语言习题 矩形法求定积分 时间限制: 1 Sec 内存限制: 128 MB 提交: 354 解决: 234 题目描述 写一个用矩形法求定积分的通用函数,分别求 (说明: sin,co ...
- C语言之函数调用11—递归法求Hermite函数
/*递归法! ========================================== 题目: Hermite 函数:输入n.x,求Hn(x)? H0(x)=1; H1(x)=2*x; H ...
- 蒙特卡洛(Monte Carlo)法求定积分
https://blog.csdn.net/baimafujinji/article/details/53869358
- C语言复习---选择法排序
选择排序也是一种简单直观的排序算法 它的工作原理很容易理解:初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列:然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾. ...
- BZOJ 1185: [HNOI2007]最小矩形覆盖-旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标-备忘板子
来源:旋转卡壳法求点集最小外接矩形(面积)并输出四个顶点坐标 BZOJ又崩了,直接贴一下人家的代码. 代码: #include"stdio.h" #include"str ...
- C语言折半查找法练习题冒泡排序
C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ...
- C语言复习---零散补充
一:double和float使用scanf获取数据 printf输出float和double都可以用%f,double还可以用%lf. 2 scanf输入float用%f,double输入用%lf,不 ...
- C语言复习20170728
C语言复习20170728 键盘输入和屏幕输出 字符常量:把字符放在一对单引号内,适用于多数可打印字符. 转义字符: 以反斜线()开头,也是放在一对单引号内,适用于控制字符. .\t,是水平制表符,相 ...
- C/C++ 语言中的表达式求值
在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++; 最近有位不相识的朋友 ...
随机推荐
- java中值类型与引用类型的关系
值类型:就是java的基本类型.byte.short.int.long.float.char.double.boolean 引用类型:类(class).接口(Interface).数组(Array) ...
- SQL 对等发布
发布类型: 快照发布:发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照.事务发布:在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器.对等发布:对等发布支持多主复制 ...
- 【XSY2751】Mythological IV 线性插值
题目描述 已知\(f(x)\)为\(k\)次多项式. 给你\(f(0),f(1),\ldots,f(k)\),求 \[ \sum_{i=1}^nf(i)q^i \] \(k\leq 500000,n\ ...
- hdu 2159 FATE (二维完全背包)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路: dp[j][k] 代表消耗耐久度j,干掉k个敌人获得的经验值. 状态转移方程为: dp[j] ...
- @ResponseBody注解
作用 @ResponseBody注解表示该方法的返回结果直接写入HTTP response body中 原理 在使用此注解之后跳过视图处理器,将返回的对象通过适当的转换器转换为指定的格式之后,直接将数 ...
- 爬虫_腾讯招聘(xpath)
和昨天一样的工作量,时间只用了一半,但还是效率有点低了,因为要把两个网页结合起来,所以在列表操作上用了好多时间 import requests from lxml import etree heade ...
- CentOS 7 Shell脚本编程第九讲 read命令简单介绍
测试代码 sqlSessionFactory.openSession(false).getMapper(StudentMapper.class).findStudentById(id)核心方法:org ...
- 网络文件系统(NFS)简介
网络文件系统(Network File System, NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布.其功能旨在允许客户端主机可以像访问本地存储 ...
- 【CF487E】Tourists(圆方树)
[CF487E]Tourists(圆方树) 题面 UOJ 题解 首先我们不考虑修改,再来想想这道题目. 我们既然要求的是最小值,那么,在经过一个点双的时候,走的一定是具有较小权值的那一侧. 所以说,我 ...
- 【BZOJ2034】最大收益(贪心)
[BZOJ2034]最大收益(贪心) 题面 BZOJ 题解 首先显然让价值越大的占用一个时刻一定更优. 所以把所有东西按照价值排序之后来处理,那么显然就是把前面的全部放好之后,考虑来放当前这个东西,如 ...