C语言复合梯形公式实现定积分
假设被积函数为
f
x
,积分区间为
,
a
b
,把区间
,
a
b
等分成
n
个小区间,
各个区间的长度为
h
,即
/
h
b
a
n
,称之为“步长”
。根据定积分的定义及几
何意义,定积分就是求函数
f
x
在区间
,
a
b
中图线下包围的面积。将积分
区间
n
等分,各子区间的面积近似等于梯形的面积,面积的计算运用梯形公
式求解,再累加各区间的面积,所得的和近似等于被积函数的积分值,
n
越
大,所得结果越精确。以上就是利用复合梯形公式实现定积分的计算的算法思
想。
复合梯形公式:

假设被积函数为f(x),积分区间为[a,b] ,把区间[a,b]等分成n个小区间,各个区间的长度为step,即step=(b-a)/n,称之为“步长”。根据定积分的定义及几何意义,定积分就是求函数f(x)在区间[a,b]中图线下包围的面积。将积分区间n等分,各子区间的面积近似等于梯形的面积,面积的计算运用梯形公式求解,再累加各区间的面积,所得的和近似等于被积函数的积分值n越大,所得结果越精确。以上就是利用复合梯形公式实现定积分的计算的算法思想。
复合梯形公式:

具体源代码如下:
#include <math.h>
#include <stdio.h> double integral(double(*fun)(double x), double a, double b, int n)
{
double sum,step,result;
int i;
sum=(fun(a)+fun(b))/;
step=(b-a)/n; /*积分步长*/
for(i=;i<n;i++)
sum=sum+fun(a+i*step);
result=sum*step;
return result;/*返回积分值*/
} double function(double x)
{
return (x*sin(x)); /*修改此处可以改变被积函数*/
} void main()
{
double result;
result=integral(function,1.0,2.0,);/*修改此处可以改变积分上下限和步长*/
printf("result=%f\n",result);
}
注:double(*fun)(double x),定义函数指针
参考:用C语言求积分
C语言复合梯形公式实现定积分的更多相关文章
- 复合梯形公式、复合辛普森公式 matlab
1. 用1阶至4阶Newton-Cotes公式计算积分 程序: function I = NewtonCotes(f,a,b,type) % syms t; t=findsym(sym(f)); I= ...
- C语言复合字面量的使用
C99添加的特性,复合字面量(composite literal).一旦熟悉并使用,便会体会到简洁强大的表达. 所谓字面量就是固定数值的表示.数值和字符串类型都有字面量的表达.如: // 100, 1 ...
- C语言复合数据类型
C语言数据类型非常丰富,其中结构体的使用非常广泛,也有一点复杂,这一讲我们主要学习结构体的使用方法,同时也会学习到联合.枚举以及typedef的使用,因为结构体最为复杂,使用最广,所以我 ...
- 字面量(literal)与 C 语言复合字面量(compound literals)
在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)(字面量是相对变量常量等定义的,无论是常量还是变量,其值在某一时刻总是确定的,只是变量可以反复赋值.刷新 ...
- 复合梯形公式与Simpson公式的数值积分
#include <iostream>#include<math.h>#include<stdio.h>using namespace std; float f(f ...
- GO语言复合类型05---递归
package main import ( "fmt" "time" ) /* ·递归就是自己调自己 ·递归一定要有终止条件(否则就是无限死循环) */ /*使 ...
- GO语言复合类型04---映射
package main import "fmt" /* 映射(map)是键值对(key-value)数据的集合 根据键key可以快速检索值value 键值的类型可以是任意的,ke ...
- GO语言复合类型03---切片
切片相当于长度可以动态扩张的数组 array[start:end]从数组身上截取下标为[start,end)片段,形成切片start代表开始下标,不写默认代表从头开始切end代表结束下标(本身不被包含 ...
- GO语言复合类型02---数组
package main import "fmt" /* 固定长度.固定类型的数据容器 */ /*数组的声明*/ func main031() { //var array [5]i ...
随机推荐
- NOIP2012模拟试题【圆圈舞蹈( circle)
2.圆圈舞蹈( circle) [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺 ...
- eclipse - tomcat 远程调试
步骤:前提是tomcat上应用是eclipse打包部署上去的,代码一致. 1,在机器A上部署应用remote-debug之前,需要为机器A上的tomcat配置调试端口.在${tomcat}/bin下加 ...
- Lazarus解决含中文文件名或路径的使用问题
其实用lazarus很久(也不算久啦..),目前打算做完手头的最后一个小程序然后就转向c#窗体程序..之前用lazarus的时候出了很多问题,资料也不是很好找,所以这回把比较容易说的记下来省得忘掉 ...
- Arduino周边模块:执行部件(舵机、直流电机、步进电机)
Arduino周边模块:执行部件 Arduino周边模块:执行部件 嵌入式系统的构成 如今已经有各种各样的基于Arduino的嵌入式系统, 比如:智能小车.3D打印机.机器人,甚至还有基于Arduin ...
- css3之border-color
-moz-border-top-colors:上边框-moz-border-right-colors:右边框-moz-border-bottom-colors:下边框-moz-border-left- ...
- acdream 1157Segments cdq分治
题目链接 #include <iostream> #include <vector> #include <cstdio> #include <cstring& ...
- 快速美眉(FastMM)使用手记
今天在SourceForge下到了FastMM (Fast Memory Manager),听说比官方的内存管理快多了,试了一下,果然不错.目前最新的是4.27. 就我的使用范围来说,我就是想看看我的 ...
- docker 数据映射方案
docker run -itd -v /data/:/data1 centos bash // -v 用来指定挂载目录, :前面的/data为本地目录,:后面的/data1 为容器里的目录: dock ...
- 适配器模式—STL中的适配器模式分析
适配器模式通常用于将一个类的接口转换为客户需要的另外一个接口,通过使用Adapter模式能够使得原本接口不兼容而不能一起工作的类可以一起工作. 这里将通过分析c++的标准模板库(STL)中的适配器来学 ...
- http://docs.aliyun.com/#/rds/best-practices/collocation&security
http://docs.aliyun.com/#/rds/best-practices/collocation&security