数值积分方法:矩形公式与求积原理

需积分: 34 4 下载量 29 浏览量 更新于2024-07-11 收藏 466KB PPT 举报
"数值积分是计算定积分的一种方法,它针对无法直接求出原函数或者原函数表达复杂的积分问题。在本资源中,讨论的核心是矩形公式,这是一种基础的数值积分技术。 数值积分的基本思想源自积分中值定理,该定理指出在某区间[a, b]上的连续函数f(x),存在至少一个ξ∈[a, b],使得积分的值等于函数在该区间上的平均值乘以宽度,即∫_a^b f(x) dx = f(ξ)(b - a)。因此,通过在区间内选取多个点作为节点,利用这些点的函数值来估算整个区间的积分,可以构建数值积分公式。 矩形公式是数值积分的一种具体实现。例如,左矩形公式是将区间[a, b]等分为n个小区间,并在每个小区间的左端点处计算函数值,然后将所有这些值乘以相应区间的宽度并求和,即近似积分。具体公式表示为: ∫_a^b f(x) dx ≈ (b - a) * (f(a) + f(a + Δx) + ... + f(b - Δx)) 其中,Δx = (b - a) / n 是每个小区间的宽度,f(xi) 为第i个小区间的左端点处的函数值。 被积函数f(x)在a处的泰勒展开用于改进矩形公式,特别是当函数在a点有已知的信息时。泰勒展开可以将函数在a点附近近似为多项式,从而可能简化积分的计算。如果函数在[a, b]上连续且在[a, b]上保持符号不变,那么根据积分中值定理,可以通过选择适当的点ξ,使某个矩形公式更准确地估计积分。 除了左矩形公式,还有右矩形公式,它使用每个小区间的右端点的函数值,以及中点矩形公式,使用每个小区间的中点的函数值。这些不同版本的矩形公式可以结合使用,形成复化矩形公式,提高估算的精度。 此外,还有其他数值积分方法,如辛普森法则(Simpson's rule)、梯形法则和高斯积分公式,它们通过更复杂的方式加权和计算节点处的函数值,以提高代数精度,即能够精确积分次数更高的多项式。例如,牛顿-柯特斯公式(Newton-Cotes formula)是一类复化求积公式,其中包括了上述的复化矩形公式。 高斯型求积公式是数值积分中的高效方法,它们特别设计了一组节点和对应的权重,使得公式能精确积分特定次数的多项式。例如, Legendre-Gauss 公式使用 Legendre 多项式的根作为节点,可以精确积分直到特定次数的所有多项式。 数值积分提供了一种处理实际问题中难以解析积分的有效手段,通过不同的求积公式和方法,我们可以逼近实际积分的精确值,满足工程、物理、经济等领域的需求。

给这段代码加上注释 //计算AGV矩形轮廓路径 计算角点:利用车头正方向的夹角差值计算车的四个角度 QPainterPath path; double carWidth =m_para.width; double carLength =m_para.length; double carAngle =m_attri->angle/100; double angle = atan((carWidth)/(carLength));//夹角差值 double length = sqrt(pow(carWidth,2)+pow(carLength,2))/2;//对角线长度的一半 //计算AGV外接矩形轮廓路径 /m_boundPath //矩形的四个顶点存储在m_agvRectPoints中,绘制AGV锁定区域需要用到m_agvRectPoints QPointF pointRT = calLinePath(path,length,carAnglePI/180+angle,true);//右上角 m_agvRectPoints[0]=pointRT; QPointF pointRB = calLinePath(path,length,carAnglePI/180-angle);//右下角--头 m_agvRectPoints[1]=pointRB; QPointF pointLB = calLinePath(path,length,carAnglePI/180+angle+PI);//左下角--尾 m_agvRectPoints[2]=pointLB; QPointF pointLT = calLinePath(path,length,carAnglePI/180-angle+PI);//左上角--尾 m_agvRectPoints[3]=pointLT; path.closeSubpath(); m_path = path; //计算AGV锁定矩形轮廓路径 /m_trackPath QPainterPath trackPath; double tracklength = sqrt(pow(carWidth+carWidth/2.0,2)+pow(carLength+carLength/2.0,2))/2;//对角线长度的一半 //agv锁定矩形随agv旋转 --MYJ 2021.12.14 calLinePath(trackPath, tracklength, -(carAnglePI / 180 + angle), true);//右上角 calLinePath(trackPath, tracklength, -(carAnglePI / 180 - angle));//右下角--头 calLinePath(trackPath, tracklength, -(carAnglePI / 180 + angle + PI));//左下角--尾 calLinePath(trackPath, tracklength, -(carAnglePI / 180 - angle + PI));//左上角--尾 trackPath.closeSubpath(); m_boundaryPath = trackPath;

2023-06-13 上传