高斯求积法模拟器 返回
有限元法

高斯求积法模拟器

用于体验有限元法(FEM)中计算单元刚度矩阵所使用的高斯-勒让德求积法。改变积分点数(1~3点)和多项式系数,可实时了解数值积分的值、精确值和误差,直观确认n点求积精确到2n-1次的原理。

参数设置
积分点数 n
高斯-勒让德点的个数。n点精确到2n-1次
常数项 c0
被积函数 f(ξ) 的常数项
一次项 c1(×ξ)
奇数次项在[-1,1]上不对精确积分有贡献
二次项 c2(×ξ²)
二次及以上项在1点求积时会产生误差
三次项 c3(×ξ³)
奇数次。2点求积精确积分的上限次数
四次项 c4(×ξ⁴)
四次。3点求积首次精确积分的次数
计算结果
数值积分 I_num
精确值 I_exact
误差 I_num − I_exact
积分点数 n
精确次数 2n−1
判定
被积函数与高斯点 — 积分的可视化

蓝色曲线为被积函数 f(ξ),填充部分为积分面积。橙色点为高斯点,点的大小与权重 w_i 成正比。从每个点向曲线画有垂直线。

被积函数 f(ξ) 的曲线
积分点数 vs 误差的绝对值
理论·主要公式

$$\int_{-1}^{1} f(\xi)\,d\xi \approx \sum_{i=1}^{n} w_i\, f(\xi_i)$$

高斯-勒让德求积。在标准坐标 ξ∈[-1,1] 上,n个高斯点 ξ_i 处的函数值乘以权重 w_i 后求和。

$$\int_{-1}^{1}\!\bigl(c_0+c_1\xi+c_2\xi^2+c_3\xi^3+c_4\xi^4\bigr)d\xi = 2c_0+\tfrac{2}{3}c_2+\tfrac{2}{5}c_4$$

多项式的精确积分。[-1,1]是原点对称区间,奇数次项(c1, c3)积分后为零。

$$\text{n点求积可精确积分次数为 } 2n-1 \text{ 及以下的多项式}$$

n个点的位置和权重共2n个自由度,可用来精确表现次数2n-1以下的多项式空间(2n维)。FEM利用此性质,用少数高斯点来计算单元刚度矩阵的积分。

高斯求积法是什么

🙋
「高斯求积法」是用计算机进行积分的方法之一对吧?和梯形近似有什么不同呢?
🎓
是的,它是数值积分的一种。梯形法则和辛普森法则是「等间隔取点然后把函数值加起来」的做法,但高斯求积的思路不同。它把点的位置本身移到「最优的地方」。这样用相同个数的点就能比梯形法则精度高得多。FEM之所以标准使用它,正是因为这个精度优势。
🙋
把点的位置移动,什么意思?如果随意移动的话,似乎可以无限变好啊……
🎓
可不是随意的。用n个点的话,点的位置有n个,权重有n个,共2n个旋钮。把这2n个值设定为「能精确积分次数为2n-1的所有多项式」,用联立方程求解。比如2点的话ξ=±0.5774,权重都是1。用这个组合,3次多项式可以误差为零地积分。左边的下拉菜单选「2点」,系数设c0=1, c2=3, c4=2试试。切换到「3点」的话误差会消失,你会看到的。
🙋
真的,2点时误差约−0.36,切到3点后误差几乎消失了!为什么2点不行呢?
🎓
你现在输入的 f(ξ) 里有 ξ⁴ 项(c4=2)对吧。这是4次多项式。2点求积精确积分的范围是2n-1=3次为上限。4次项「超过了2点的范围」,所以有误差。换成3点的话精确到2n-1=5次,4次项也能精确积分,误差就消失了。被积函数的次数和所需点数的关系——这是使用高斯求积最重要的要点。
🙋
明白了。那么有限元法中这个点数怎么决定呢?一直用多一点不就更放心了吗?
🎓
太多反而不好。FEM中计算单元刚度矩阵K = ∫B^T D B dV时,被积函数的次数能精确积分的最少点数叫「完全积分」。增加点数只会让计算变慢,精度不会提高。反过来,有意减少一个点数的「低阶积分」技巧也存在,能防止薄板弯曲时出现的『剪切锁定』。但减过头了会出现「零能量模式(沙漏模式)」这种讨厌的变形。所以『正好的点数』选择能力是FEM分析员必不可少的。
🙋
改动奇数次项(c1, c3)时精确值不变,这也很有趣。为什么呢?
🎓
很好的观察!积分区间是 [-1,1] 这样关于原点对称的区间。ξ 或 ξ³ 这样的奇函数,左右两侧符号相反会互相抵消。所以精确积分 ∫ξ dξ 也好 ∫ξ³ dξ 也好,在 [-1,1] 上就是零。精确值公式里只有 c0·c2·c4 出现就是这原因。不过数值积分的值本身,如果高斯点是对称排列的,奇数次也会自动抵消,结果就和精确值一致了。

常见问题

高斯求积法(高斯-勒让德求积法)是一种数值积分技术,通过在某些点处的函数值f(ξ_i)乘以权重w_i后相加来近似积分∫f(ξ)dξ≈Σw_i·f(ξ_i)。通过最优选择点的位置ξ_i和权重w_i,即使只使用n个点,也能精确积分到2n-1次的多项式。与梯形法则或辛普森法则相比,用更少的点数可以获得更高的精度,因此在有限元法中成为标准的数值积分方法。
FEM中需要计算单元刚度矩阵K = ∫B^T D B dV,但在等参数单元中被积函数变成复杂的有理式,无法解析积分。因此在标准坐标系[-1,1]上使用高斯求积,用少数几个积分点(高斯点)处的值进行加权求和来数值求解K。点数越少,计算越快,根据所需的多项式次数选择能精确积分的点数是FEM实现的标准做法。
n点高斯求积可精确积分次数为2n-1的多项式。因此对于被积函数的多项式次数p,应选择满足n≥(p+1)/2的最小n使误差为零。例如4次多项式需要2n-1≥4,即n=3。在FEM中,精确积分单元刚度矩阵所需的点数称为「完全积分」,少于此数的称为「低阶积分(reduced integration)」,有时为了避免剪切锁定等目的会故意降低阶数。
低阶积分是使用少于精确积分单元刚度矩阵所需点数的高斯点进行积分的技术。可以加快计算速度,还能缓解薄单元弯曲求解时出现的「剪切锁定」现象。但劣势是刚度不足,会出现「零能量模式(沙漏模式)」这种不自然的变形模式,实际应用中需要配合沙漏控制。是完全积分还是低阶积分取决于单元类型和问题性质。

现实世界的应用

有限元法的单元刚度矩阵:几乎所有结构分析FEM软件(Abaqus、Ansys、Nastran、LS-DYNA等)都使用高斯求积法来计算单元刚度矩阵K = ∫B^T D B dV。在等参数单元中,从物理坐标到标准坐标[-1,1]的映射使被积函数变成有理式,无法手工积分。8节点六面体单元通常用2×2×2=8个高斯点,20节点单元用3×3×3=27个高斯点等。质量矩阵和等效节点力向量的计算也使用同样的求积。

低阶积分和剪切锁定对策:用一阶单元求解薄梁、板、壳时,本应弯曲变形的地方会出现过大的剪切刚度,造成变位极小的「剪切锁定」现象。为了避免这个,常用「选择性低阶积分」——仅对剪切项降低点数。Abaqus的C3D8R或S4R末尾的「R」就是reduced integration(低阶积分)的意思。点数的选择直接影响分析结果,是典型案例。

应力评估与超收敛点:FEM求出的应力在单元内部各处精度不同。在高斯点处(特别是低阶积分的点位置),从位移微分求得的应力、应变精度比节点处更高,称为「超收敛点」或「最优应力点」。商用软件在高斯点计算应力,然后外推到节点显示,理解这一点对于读懂云图很重要。

计算成本的最优化:大规模分析中单元数达到数百万,单元刚度矩阵积分占计算时间的很大部分。为被积函数的次数选择必要充分的高斯点数,可在不降低精度的前提下减少计算量。陶晶质碰撞分析(汽车碰撞等)中1阶单元+1点积分是标准配置,通过最小化每个单元的积分来处理海量的时间步。

常见误解与注意事项

最大的误解是「积分点越多越精确」。高斯求积n点能「精确」积分次数为2n-1的多项式。被积函数是4次多项式的话,3点就误差为零,即使增加到4点、5点也结果不变——只会增加计算时间。本工具中含有c4的4次多项式用3点时误差消失,再增加点数也无意义。对于非多项式的一般函数,增加点数精度确实提高,但也要在「收敛后停止」判断,盲目增点是浪费成本。

其次是「FEM中点数多一点更安全」的刻板印象。超过精确积分的点数也不会提高精度,反而「低阶积分」经常有效。薄板弯曲时为了避免锁定而减少点数;陶晶质解析为了速度用1点积分是标准做法。「点多=精度高=安全」的短路思维会导致锁定造成不切实际的硬结果或计算变慢。根据单元类型和问题性质选择合适点数的判断力被要求。

最后「用低阶积分总是有利」不成立。点数减少过多会造成单元刚度不足,出现毫无能量的不自然变形「零能量模式(沙漏模式)」。1阶六面体单元用1点积分时会出现12个沙漏模式,如果不采取对策网格会砂漏状摇晃,结果无意义。实际中采用沙漏控制(hourglass control)这样的人工刚度来抑制。低阶积分很强大但必须和沙漏控制配套使用。

使用指南

  1. 从下拉菜单中选择积分点数。高斯-勒让德求积法中n点可精确积分次数为2n-1的多项式
  2. 通过滑块调整多项式各项系数c0~c4,改变被积函数
  3. 实时显示数值积分I_num、精确值I_exact及误差,观察不同点数下的误差变化
  4. 理解FEM计算中积分精度对结果的影响,掌握点数选择的原理

具体计算例

在区间[-1,1]上对4次多项式f(x)=x⁴-2x²+1积分时,精确值I_exact=8/15≈0.5333。用2点高斯求积法(权重0.5、采样点±0.5773)计算,数值积分I_num≈0.5333,误差几乎为0。而1点求积法无法精确到3次以上,会出现误差。在钢板应力分布的FEM分析中,单元内积分精度直接关系到应力精度,因此最少需要2×2的高斯积分点

实务中的注意