6-9 求一元函数定积分

2023-12-11 21:01
文章标签 积分 一元函数

本文主要是介绍6-9 求一元函数定积分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        一元函数f(x)在区间[a,b]上定积分∫ab​f(x)dx的几何意义是被积函数与横坐标轴以及直线x=a和直线x=b围成的曲边形的面积。依据几何意义求定积分的方法是将这个区域按x轴方向等分成若干个细小的条状区域,每个小区域近似于一个梯形(如图所示),计算出所有小梯形面积之和就可计算出区域面积的近似值。区间划分的越细求得的结果越精确

ch6-8.png

现在要求用梯形法编写一个求一元定积分的函数,调用该函数求解以下三个函数在给定区间的定积分。
(1) y=x2
(2) y=x3
(3) y=sinx

函数接口定义:

double integration(double (*p)(),double a,double b,int n);

其中  a  b 是积分区间的端点,n是对积分区间的等分数量。 p 是一个指向函数的指针。

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double square(double x)
{return x*x;
}
double cube(double x)
{return x*x*x;
}
/*你编写的积分函数嵌入在这里*/
int main()
{/*求平方函数在区间[0,2]上的定积分*/printf("square=%f\n",integration(square,0,2,10000));/*求立方函数在区间[0,2]上的定积分*/printf("cube=%f\n",integration(cube,0,2,10000));/*求正弦函数在区间[0,2]上的定积分*/printf("sin=%f\n",integration(sin,0,2,10000));return 0;
}

输入样例:

0 2 100000

输出样例:

square=2.666667
cube=4.000000
sin=1.416147

定积分定义:

定积分是积分的一种,是函数f(x)在区间[a,b]上积分和的极限。具体定义如下:

设函数f(x) 在区间[a,b]上连续,将区间[a,b]分成n个子区间[x₀,x₁], (x₁,x₂], (x₂,x₃], …, (x,xₙ],其中x₀=a,xₙ=b。该和式叫做积分和,设λ=max{△x₁, △x₂, …, △xₙ}(即λ是最大的区间长度),如果当λ→0时,积分和的极限存在,则这个极限叫做函数f(x) 在区间[a,b]的定积分,记为,并称函数f(x)在区间[a,b]上可积。

之所以称其为定积分,是因为它积分后得出的值是确定的,是一个常数, 而不是一个函数。

当然对于一元函数的积分 我们可以简单理解为求函数在指定区间x轴所围成的面积

有了上面的解释我们就可以只去求f(x)与x轴所围成的面积即可 

在高中我们学过利用分割法去求面积

解决代码

double integration(double (*p)(),double a,double b,int n){double sum = 0;
/*elem 表示分割区间的宽度*/double elem = (b-a)/n;for(double i=a;i<=b-elem;i=i+elem){/*p(i)表示区间左边界的函数值  p(i+elem)表示区间右边界的函数值*//*对两个面积的和 求平均*/sum+=(p(i)+p(i+elem))*elem/2;}return sum;
}

注意: 在积分求解过程中 我们一定 一定 要注意积分的上下限 为了保证积分的上下限都被取到

我们可以把上下限的计算放入for循环中

自我反思:在我第一次做的时候代码如下

double integration(double (*p)(),double a,double b,int n){double sum=0;//elem 代表区间分割的大小double elem=(b-a)/n;for(double i=0;i<n;i++){sum+=p(((a+elem*i)+(a+elem*(i+1)))/2)*elem;}return sum;}

这样写第三个测试点一直过不去 ,于是检查发现可能是积分的上下限的问题,所以这一题建议把积分上下限放在for循环中

这篇关于6-9 求一元函数定积分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/482105

相关文章

微积分-积分应用5.4(功)

术语“功”在日常语言中用来表示完成一项任务所需的总努力量。在物理学中,它有一个依赖于“力”概念的技术含义。直观上,你可以将力理解为对物体的推或拉——例如,一个书本在桌面上的水平推动,或者地球对球的向下拉力。一般来说,如果一个物体沿着一条直线运动,位置函数为 s ( t ) s(t) s(t),那么物体上的力 F F F(与运动方向相同)由牛顿第二运动定律给出,等于物体的质量 m m m 与其

变速积分PID控制算法

变速积分PID控制算法 变速积分PID控制算法:变速积分PID的基本思想:变速积分的PID积分项表达式: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 变速积分PID控制算法: 在普通的PID控制算法中,由于积分系数 k i k_i ki​是常数,所以在整个控制过程中,积分增量不变。而系统对积分项的要求是,系统偏差大

梯形积分PID控制算法

梯形积分PID控制算法 梯形积分PID控制算法: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 梯形积分PID控制算法: 在PID控制律中积分项的作用是消除余差,为了减小余差,应提高积分项的运算精度,为此,可将矩形积分改为梯形积分。梯形积分的计算公式: ∫ 0 t e ( t ) d t = ∑ i = 0 k e

抗积分饱和PID控制算法

抗积分饱和PID控制算法 抗积分饱和PID控制算法:1.积分饱和现象:2.抗积分饱和算法: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 抗积分饱和PID控制算法: 1.积分饱和现象: 所谓积分饱和现象是指若系统存在一个方向偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构到达极限位置 X m

积分分离PID控制算法

积分分离PID控制算法 积分分离PID控制:积分分离控制基本思路:积分分离控制算法表示:积分分离式PID控制算法程序流程图: 注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者! 积分分离PID控制: 在普通的PID控制中引入积分环节的目的,主要为了消除静差,提高控制精度。但在过程启动、结束或大幅度增减设定时,短时间内系统输出

c++求积分算法

//c++ 作业:用两重菜单显示 积分函数和积分方法#include<iostream>#include<cmath>using namespace std;class Function{public:virtual double operator()(double x) const=0; };class Function1:public Function{publi

离散的点进行积分

1,可以直接用梯形公式 % 定义x和y坐标向量x = [0, 1, 2, 3, 4, 5]; % x的值y = [0, sin(1), sin(2), sin(3), sin(4), sin(5)]; % y的值,这里假设y是sin函数在x处的值% 使用trapz函数计算数值积分integral_value = trapz(x, y);% 显示结果disp(['The numerical

积分直方图(Integralnbsp;Histog…

原文地址:积分直方图(Integral Histogram) 作者:小罗   积分直方图是有Fatih Porikli在CVPR-2005《Integral Histogram: A Fast Way to Extract Histograms in Cartesian Spaces》的论文中提到的。   在介绍积分直方图之前,先介绍下积分图像,积分图像是P.Viola and

纯积分的磁链观测器

纯积分的磁链观测器 文章目录 纯积分的磁链观测器1. 基本概念2. 计算转子角度的公式3. C语言实现4. 代码解释5. 实际应用中的注意事项6. 总结 1. 基本概念 磁链(Flux Linkage)是指磁通量和绕组匝数的乘积,在电机控制中,通常讨论的是定子磁链或转子磁链。对于永磁同步电机(PMSM),磁链的动态方程通常可以表示为: λ s = ∫ ( V s − R