这个公式被gpt称作Dirichlet积分公式,但是我用搜索引擎搜不到这个公式的具体名字,那么我也就这么叫他好了,gpt总不会骗我吧(
Dirichlet积分公式
计算积分:
$$ I = \int_T L_1^a L_2^b L_3^c L_4^d \, dL_1dL_2dL_3, $$其中:
- $T$ 是三维标准四面体;
- $L_1, L_2, L_3, L_4$ 是体积坐标($L_1 + L_2 + L_3 + L_4 = 1$);
- $a, b, c, d$ 是非负整数。
在体积坐标下,积分区域为:
$$ L_1 \in [0,1], \quad L_2 \in [0,1-L_1], \quad L_3 \in [0,1-L_1-L_2]. $$因此积分变为:
$$ I = \int_0^1 \int_0^{1-L_1} \int_0^{1-L_1-L_2} L_1^a L_2^b L_3^c (1-L_1-L_2-L_3)^d \, dL_3 \, dL_2 \, dL_1. $$对 $L_3$ 积分
设 $u = \frac{L_3}{1-L_1-L_2}$,则 $L_3 = u(1-L_1-L_2)$,$dL_3 = (1-L_1-L_2)du$:
$$ \int_0^{1-L_1-L_2} L_3^c (1-L_1-L_2-L_3)^d \, dL_3 = (1-L_1-L_2)^{c+d+1} \int_0^1 u^c (1-u)^d \, du. $$利用 Beta 函数:
$$ \int_0^1 u^c (1-u)^d \, du = B(c+1, d+1) = \frac{c! \, d!}{(c+d+1)!}. $$对 $L_2$ 积分
将剩余部分写为:
$$ I = \frac{c! \, d!}{(c+d+1)!} \int_0^1 \int_0^{1-L_1} L_1^a L_2^b (1-L_1-L_2)^{c+d+1} \, dL_2 \, dL_1. $$再次变量替换 $v = \frac{L_2}{1-L_1}$,类似可得:
$$ \int_0^{1-L_1} L_2^b (1-L_1-L_2)^{c+d+1} \, dL_2 = (1-L_1)^{b+c+d+2} \frac{b! \, (c+d+1)!}{(b+c+d+2)!}. $$对 $L_1$ 积分
最终积分简化为:
$$ I = \frac{c! \, d!}{(c+d+1)!} \frac{b! \, (c+d+1)!}{(b+c+d+2)!} \int_0^1 L_1^a (1-L_1)^{b+c+d+2} \, dL_1. $$利用 Beta 函数:
$$ \int_0^1 L_1^a (1-L_1)^{b+c+d+2} \, dL_1 = \frac{a! \, (b+c+d+2)!}{(a+b+c+d+3)!}. $$将所有部分组合:
$$ I = \frac{c! \, d!}{(c+d+1)!} \cdot \frac{b! \, (c+d+1)!}{(b+c+d+2)!} \cdot \frac{a! \, (b+c+d+2)!}{(a+b+c+d+3)!}. $$约简后得到 Dirichlet 积分公式:
$$ I = \frac{a! \, b! \, c! \, d!}{(a+b+c+d+3)!}. $$推广到其他维度
- 二维三角形:分母为 $(a+b+c+2)!$,分子为$a! \, b! \, c!$。
- $n$ 维单纯形:分母为 $(\sum a_i + n)!$,分子类似
从笛卡尔坐标到体积坐标的变换
四面体上的拉格朗日基函数变换到体积坐标下会带来不少便利.举个例子,我们需要计算以下积分
$$ \tag{1} I = \int \phi_i \ \phi_j dV $$我们可以把任意构建任意四面体到标准四面体的变换,于是变换后的积分变成了
$$ I = 6V \int_T N_i \ N_j \ dV_L $$其中$N_i$为形函数,至于为什么…说实话我也写不出一个严谨的证明.而雅可比矩阵行列式的值恰好等于这个四面体的体积乘6,这也十分直观,因为标准四面体的体积就是$1/6$
当然有时候也不会那么自然,比如你需要计算对基函数求梯度的积分,比如这样:
$$ \tag{2} I = \int \nabla \phi_i \cdot \nabla \phi_j dV $$需要注意,这里的求梯度运算是在笛卡尔坐标系下对$xyz$求梯度的,当变换到标准四面体下时,显然不可能再对原本的坐标系下求梯度,对于体积坐标求梯度才是我们想要的,于是有了
$$ \nabla \phi_i = J^{-1} \nabla N_i $$原积分变为
$$ I = |det J| \int_T \nabla N_i^T J^{-T} J^{-1} \nabla N_j \ dV_L $$再来考虑另一种情况:我们需要在四面体上的某一面上进行面积分,形式如下:
$$ \tag{3} I = \int_S \phi_i \ \phi_j dS $$如果基函数取值为1的点不再我们要积分的三角形内,那么显然基函数在这个三角形上的取值全为0.因为基函数在三角形的三个顶点上的取值都为0,而三角形的其他区域上的点可以表示为顶点坐标的线性组合.所以我们只需要关注在这个三角形上有取值为1的点的基函数即可.
当我们把这些基函数变换到标准三角形上时,基函数也变为了三角形的形函数.至于为什么变换成立,其严谨的证明过程我也写不出来…尽管这个变换非常符合直觉.除此之外,我们还需要注意:当我们把三维的三角形变换到二维的三角形上时,变换矩阵并不是一个方阵,这意味着我们不能直接求解其行列式.回忆一下微积分方面的知识,我们可以计算缩放因子.因为标准三角形的面积为$1/2$,所以缩放因子恰为$2A$,这是显然的.所以原式变为
$$ I = 2A\int_{S_L} N_i \ N_j dS_L $$实例:二阶基
一阶线性基的情况过于简单,在此不表
我们的三维二阶基函数如下所示
$$ \phi = a_0 + a_1x + a_2y+a_3z+a_4x^2+a_5xy+a_6xz+a_7y^2+a_8yz+a_9z^2 $$其顶点和中点的形函数如下
$$ N_i = L_i(2L_i-1) $$ $$ N_{ij}=4L_iL_j $$我们去求解方程(1),其结果表示为矩阵在如下所示
$$ M = \frac{6 \cdot \text{volume}}{2520} \begin{bmatrix} 6 & 1 & 1 & 1 & -4 & -4 & -4 & -6 & -6 & -6 \\ 1 & 6 & 1 & 1 & -4 & -6 & -6 & -4 & -4 & -6 \\ 1 & 1 & 6 & 1 & -6 & -4 & -6 & -4 & -6 & -4 \\ 1 & 1 & 1 & 6 & -6 & -6 & -4 & -6 & -4 & -4 \\ -4 & -4 & -6 & -6 & 32 & 16 & 16 & 16 & 16 & 8 \\ -4 & -6 & -4 & -6 & 16 & 32 & 16 & 16 & 8 & 16 \\ -4 & -6 & -6 & -4 & 16 & 16 & 32 & 8 & 16 & 16 \\ -6 & -4 & -4 & -6 & 16 & 16 & 8 & 32 & 16 & 16 \\ -6 & -4 & -6 & -4 & 16 & 8 & 16 & 16 & 32 & 16 \\ -6 & -6 & -4 & -4 & 8 & 16 & 16 & 16 & 16 & 32 \\ \end{bmatrix} $$方程(3)的结果如下所示(忽略了零元)
$$ K = \frac{2 \cdot \text{area}}{360} \begin{bmatrix} 6 & -1 & -1 & 0 & 0 & -4 \\ -1 & 6 & -1 & 0 & -4 & 0 \\ -1 & -1 & 6 & -4 & 0 & 0 \\ 0 & 0 & -4 & 32 & 16 & 16 \\ 0 & -4 & 0 & 16 & 32 & 16 \\ -4 & 0 & 0 & 16 & 16 & 32 \\ \end{bmatrix} $$部分计算代码如下
|
|