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 ...
随机推荐
- Fedora 20忘记root密码
1.忘记root密码的情况下.用sudo账户$sudo su就行了. 2.直接sudo passwd root就重置了roor密码了.
- TSQL 根据经纬度计算两点间的距离;返回米(m)
-- ============================================= -- Author:Forrest -- Create date: 2013-07-16 -- Des ...
- Python核心编程读笔 7: 条件和循环
第八章 条件和循环 一.if python中的条件表达式:很奇葩!!! smaller = (x < y and [x] or [y])[0] 或者: smaller = x if x < ...
- JS输出日历
页面HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...
- Mysql语句的批量操作[修改]
UPDATE `cla_info` SET `comment` = CASE ) THEN 'A' ) THEN 'B' ) THEN 'C' ) THEN 'D' END, `collect` = ...
- SilverlightLoader使用托管代码创建自定义载入界面及动态加载XAP
Silverlight实现动态加载xap和Splash Screen.收藏! 内容来自 http://silverlightchina.net/html/tips/2010/0115/588.html
- 关于继承UITableViewController若干问题
// // MSHomeCommentTableViewController.m // xiaoqu-ios // // Created by Charlie on 15/7/1. // Copyri ...
- 基于Socket的UDP和TCP编程介绍
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- Linux 安装xtrabackup的依赖问题
问题: 尝试安装xtrabackup rpm -ivh percona-xtrabackup-2.2.11-1.el7.x86_64.rpm 报错 perl(DBD::mysql) 被 percona ...
- 21. 无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务”
无法执行该操作,因为链接服务器”Server_202”的 OLE DB 访问接口 “SQLNCLI10″ 无法启动分布式事务” 原因:调用存储过程的方式有问题,必须用JDBC方式调用存储过程才可以正常 ...