有限元中的Lagrange插值与Gauss积分

Lagrange插值与Gauss积分是在学习FEM中不可回避的两部分,虽然说是两部分,其实在Gauss积分中,构造多项式的被积函数时,也用到了Lagrange插值多项式,所以在讲关于参数单元刚度矩阵求积分的时候,在数值积分中一起提出。

\int_{a}^{b} f(x)dx\approx\int_{a}^{b} P(x)dx

以上表达式是说,对于一个比较难以积分的函数f,我们找到了一个与之相似度很高的多项式函数P,用P的积分来代替f的积分,那么现在的问题就是如何找到多项式P。

那么,先看第一种关于Newton-Cotes数值积分

Lagrange插值的定义

如果已知n个点的数值,那么可以构造一个n-1阶的多项式,通过待定系数的方式,使得这个多项式在这n个点的值就等于原本函数在这n个点的数值,关于待定系数的求解,如下:

a_{0}+a_{1}x_{1}^{}+a_{2}x_{1}^{2}+a_{3}x_{1}^{3}+...+a_{n-1}x_{1}^{n-1}=f(x_{1})

a_{0}+a_{1}x_{2}^{}+a_{2}x_{2}^{2}+a_{3}x_{2}^{3}+...+a_{n-1}x_{2}^{n-1}=f(x_{2})

... ...

a_{0}+a_{1}x_{n}^{}+a_{2}x_{n}^{2}+a_{3}x_{n}^{3}+...+a_{n-1}x_{n}^{n-1}=f(x_{n})

用矩阵表示这个线性方程组:

\left( \begin{array}{ccc} 1 & x_{1} & x_{1}^{2} & ... & x_{1}^{n-1} \\ 1 & x_{2} & x_{2}^{2} & ... & x_{2}^{n-1} \\ ... & ... & ...&...&... \\ 1 & x_{n} & x_{n}^{2} & ... & x_{n}^{n-1} \\ \end{array} \right) \left( \begin{array}{ccc} a_{0} \\ a_{1} \\ ... \\ a_{n-1} \\ \end{array} \right) = \left( \begin{array}{ccc} f(x_{1}) \\ f(x_{2}) \\ ... \\ f(x_{n}) \\ \end{array} \right)

这里我用一个二次多项式来举例吧,给出三个已知点:

(x_1,y_1);(x_2,y_2);(x_3,y_3)

二次多项式为: y=a_0+a_1x+a_2x^2

将三个点带入二次多项式来确定系数,得到的线性方程组为:

\left( \begin{array}{ccc} 1 & x_{1} & x_{1}^{2} \\ 1 & x_{2} & x_{2}^{2} \\ 1 & x_{3} & x_{3}^{2}\\ \end{array} \right) \left( \begin{array}{ccc} a_{0} \\ a_{1} \\ a_{2} \\ \end{array} \right) = \left( \begin{array}{ccc} y_{1} \\ y_{2} \\ y_{3} \\ \end{array} \right)

系数矩阵A明显是一个范德蒙矩阵,范德蒙矩阵是可逆的,因此,我们可以直接通过克莱姆法则来求解系数向量,得到系数向量以后,把每一个系数写成纵坐标y的线性组合,我直接给出我计算的结果,并且只保留y_1的系数:

a_0 =x_2·x_3·(x_3-x_2)·y_1+...

a_1=(x_2-x_3)·(x_2+x_3)·y_1+...

a_2=(x_3-x_2)·y_1+...

另外系数矩阵,即范德蒙行列式的值为:

D=(x_3-x_2)·(x_3-x_1)·(x_2-x_1)

现在可以得到y的表达式:

y=\frac{x_2·x_3·(x_3-x_2)+(x_2-x_3)·(x_2+x_3)·x+(x_3-x_2)·x²}{(x_3-x_2)·(x_3-x_1)·(x_2-x_1)} y_1+...

y=\frac{x_2·x_3-(x_2+x_3)·x+x²}{(x_3-x_1)·(x_2-x_1)} y_1+...

y=\frac{(x-x_2)·(x-x_3)}{(x_1-x_3)·(x_1-x_2)} y_1+.\frac{(x-x_1)·(x-x_3)}{(x_2-x_3)·(x_2-x_1)} y_2+\frac{(x-x_1)·(x-x_2)}{(x_3-x_1)·(x_3-x_2)} y_3

接下来,记:

f_1(x)=\frac{(x-x_2)·(x-x_3)}{(x_1-x_3)·(x_1-x_2)}

f_2(x)=\frac{(x-x_1)·(x-x_3)}{(x_2-x_3)·(x_2-x_1)}

f_3(x)=\frac{(x-x_1)·(x-x_2)}{(x_3-x_1)·(x_3-x_2)}

则: y=f_1(x)·y_1+f_2(x)·y_2+f_3(x)·y_3

可以容易的看出:

f_i(x_j)=\delta_{ij} ,这个意思就是说,在某一个带入值的点,比如点1,f2与f3都取0,而f1则取1,所以,在所有带入值的点,多项式插值的结果与原来函数的值是相等的。

这就是Lagrange插值,最后给一个一般性的表达式:

P(x)=\sum_{n}^{i=1}[{\prod_{j=1(i\ne j)}^{n}}\frac{(x-x_j)}{(x_i-x_j)}·y_i]

那么,Newton-Cotes数值积分也就顺理成章的被引出了:

Newton-Cotes数值积分将原积分转化为权函数与原函数值的线性组合

然后,就是FEM里常用的Gauss积分了:

首先谈一下我的理解,上面的Newton-Cotes数值积分,是将一个函数转换为一个多项式,采用的多项式是Lagrange插值多项式,采用的n个点没有特殊的要求,下面的Gauss积分,就是要对积分点进行确定,对积分点函数值得权函数同时进行确定。

Gauss积分的定义

可以看出,构造的高斯积分的函数虽然阶次提高到了2n-1,它的两项中的第一项仍然为n-1阶,并且就是之前的拉格朗日插值多项式,只是在后面添加了一个“辅助项”,辅助项在所有积分点处的值为零,其实为什么这么构造我是不清楚的,我是一个没学过数值分析的本科生,惭愧,但是毋庸置疑的是:

(1)整个多项式的阶次被提高到2n-1次,相比于牛顿积分更精确;

(2)利用上述的积分条件(共n个),可以用来确定n个积分点的位置。

确定积分点之后,再确定权函数

今天就写这么多吧,作为参数单元内容的补充。

来源:知乎 www.zhihu.com

作者:QuYln

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载