OpenCASCADE Interpolation – Lagrange

By admin in 天文学 on 2019年2月16日

OpenCASCADE Interpolation – Lagrange

eryar@163.com

Abstract. Power basis polynomial is the most simple polynomial
function. It also be called power series. OpenCASCADE provides basic
computation functions for polynomial functions, such as evaluate the
result for a given polynomial, Lagrange interpolation, Hermite
interpolation, .etc. The package named PLib, means Polynomial functions
Library. The paper focus on the Lagrange interpolation usage of PLib.

Key Words. OpenCASCADE, PLib, Interpolation, Lagrange, 插值

 

1.Introduction


穷级数是高级数学的一个敬爱组成部分,它是意味函数、商量函数性质及开展数值总计的一种工具。由高级数学中的无穷级数的概念可见,函数项级数中回顾而常见
的一类级数就是各项都是幂函数的函数项级数即所谓的幂级数(Power
Series)。因为幂级数的花样不难,易于精通,且能够长足总括曲线上的点及各阶导数,所以在几何样子中常常用幂级数来就像是表示曲线曲面。由于将函数展
开成幂级数是有规范的,全部并不是有所的曲线曲面都足以用幂级数的多项式来逼近。

对无穷级数概念相比素不相识的读者可以把《高等数学》的书找出来翻翻看,重温一下高校的时节。一打开做了笔记有点泛黄的旧书,就会回想起青涩的学校时光。


时上学《高等数学》的时候觉得很肤浅难明白,因为无法将答辩与执行联系起来,看不到直观效果,有时也会冒出“学数学有何样用?”那种难点。当你境遇相关的
难题再去看国内的课本时,觉得国内的教科书写得依旧很细致用心的。将来获取新闻已经很有利了,如OpenCASCADE那么些开源的库,其TKMath工具箱
可以看做是数值总结理论联系实践的一个切实可行实例。结合OpenCASCADE的源码来对有关答辩的学习,功能会一语双关。

正文对幂级数的定义做不难介绍,并结合源程序详细表明OpenCASCADE中的PLib包中有关幂级数多项式的一个钱打二十五个结及Lagrange插值的用法。

2.Polynomial Evaluation


等数学的书中把幂级数的重点落在什么将其余的函数展开成幂级数,即用幂级数来逼近函数,而没有介绍怎么样用数值的章程来对幂级数进行测算。在算法导论一书
[2]中找到有关多项式的代表及统计的落成格局,给出了多项式在数据结构上的表示方法及求值算法。对于3个幂级数多项式:

天文学 1

多 项式的代表有周全表示法和点值表示法。周密表示法(Coefficient
Representation)就是将多项式的全面组成三个向量来代表那个多项式。对用周详表示法表示的多项式的求值总括可以采取Horner法则,也是
是鼎鼎大名的秦九韶算法。此算法的兑现代码在《The NURBS
Book》[3]一书中付出了,此处略去,只给出OpenCASCADE中对幂级数多项式的乘除的函数的采取。

void testPolynomialEvaluation(void)
{
    // evaluate 1 dimension polynmoial.
    Standard_Real aCoeff[3] = {2.0, 2.0, 3.0};

    Standard_Real aResult = 0.0;

    for (int i = 0; i < 3; ++i)
    {
        PLib::EvalPolynomial(i, 0, 2, 1, aCoeff[0], aResult);

        std::cout << "x=" << i << ", (2.0 + 2.0*x + 3.0*x^2): " << aResult << std::endl;
    }
}

从上述代码能够看出,OpenCASCADE的PLib包中对多项式的意味方法是拔取的周密表示法。其周到分别为:2.0,2.0,3.0,即表示了幂级数:

天文学 2

天文学,当x=0, 1,2时计量结果如下图所示:

天文学 3

Figure 2.1 Polynomial Evaluation

3.Polynomial Interpolation

多项式的插值难题是多项式求值的逆难点。多项式求值难题几何意义就是已知曲线的表明式总计曲线上的点;而插值难点是早就曲线上的一些点来求通过那几个点的曲线表达式。多项式插值中最广大最基本的题材是求两次数不当先n的代数多项式:

天文学 4

使

天文学 5

满意插值条件的多项式称为函数f(x)在节点xi处的n次插值多项式。由插值条件能够,插值多项式的周详满意线性方程组:

天文学 6

由线性代数可见,其周详行列式是n+1阶Vandermonde行列式,且:

天文学 7


为插值的点是例外的点,所以行列式V不为0,即线性方程组有唯一解。那也是算法导论一书中那样说“从某种意义上说,多项式的全面表示法与点值表示法是等价
的,即用点值方式表示的多项式都对应唯一二个周到方式的多项式”的理论依照。即插值多项式的唯一性。那里不光提出了插值多项式存在的唯性,而且也提供了一
种解法,即通过解线性方程组来分明全面。依据那一个思路,给出对地点已知周密求值的多项式进行插值,代码如下所示:

void testPolynomialInterpolation(void)
{
    // given three points: (0, 2), (1, 7), (2, 18) to interpolate a polynomial 
    math_Matrix A(1, 3, 1, 3, 0.0);
    math_Vector B(1, 3);
    math_Vector X(1, 3);

    A(1, 1) = 1.0; A(1, 2) = 0.0; A(1, 3) = 0.0; B(1) = 2.0;
    A(2, 1) = 1.0; A(2, 2) = 1.0; A(2, 3) = 1.0; B(2) = 7.0;
    A(3, 1) = 1.0; A(3, 2) = 2.0; A(3, 3) = 4.0; B(3) = 18.0;

    // solve functions: Ax = B
    math_Gauss aSolver(A);
    aSolver.Solve(B, X);

    if (aSolver.IsDone())
    {
        std::cout << X << std::endl;
    }
}

已知多项式通过八个点(0, 2),(1, 7),(2,
18),求通过那七个点的多项式表明式。依据插值条件列出线性方程组如下:

天文学 8

将全面a0,a1,a2看成线性方程组的待求变量,使用类math_Gauss来对线性方程组举办求解,总括结果如下所示:

天文学 9

Figure 3.1 Polynomial Interpolation Result

由上图可以,对线性方程组的求解结果与上节点的周密对应。

4.Lagrange Interpolation


《总括方式》、《数值逼近》等书中看到Lagrange的名字,就想到《高等数学》书中众多与之相关的定律、定义等,如:Lagrange中值定理、
Lagrange型余项、条件极值的Lagrange乘数法等等。在网上搜索了下Lagrange,原来她也是OpenCASCADE的发祥地的人:英国人。Joseph-LouisLagrange,法兰西共和国显赫一时半刻化学家、数学家。1736年七月2二日出生于意国都灵,1813年二月十一日卒于香水之都。他在数学、力学和天教育学三个学科
领域都有历史性的孝敬,其中尤以数学方面的形成最为优秀。以下图片源于微博公开课《数学神话》:从笛卡尔到庞加莱—法国数学的人文古板,公开课网址:http://open.163.com/special/cuvocw/shuxuechuanqi.html

天文学 10

天文学 11

天文学 12

干什么优雅浪漫的美国人的数学大师见怪不怪吧?因为她们最精美的人在读书数学。数学已经改为塞尔维亚人古板文化中最美妙的一片段了。

天文学 13

数 学也是中华价值观文化的一某些,中国太古数学成就也不少:《周髀算经》;
《天问算术》(三国时刘徽著); 祖冲之; 算盘。天农学:天象观察记录,
发明观测仪器:圭表;浑仪;简仪;高表;仰仪,制定历法(公历)。想想后来缘何平素不大的发展,原因或者是科举制度造成的,考试的故事情节偏文。

Lagrange
三叔是法兰西共和国陆军骑兵里的一名军人,后由于经商失利,家道衰落。据Lagrange本身回想,即使幼年时家境富裕,他也就不会作数学讨论了。经历了败北之后
没被打倒的人前期落成会更大,像《红楼梦》的撰稿人曹雪芹。严重跑题了,回到Lagrange插值难点上来。从Lagrange中值定理的证实及
Lagrange乘数法求极值的法子中可以看来Lagrange有个特点,这就是欣赏引入接济函数来缓解难点,可以观察Lagrange是拾分精明的。对
多项式插值也不例外,通过社团了八个Lagrange插值基函数来简化多项式的插值,如下公式为Lagrange插值基函数:

天文学 14设:

天文学 15

则Lagrange插值基函数能够象征为简单的款式:

天文学 16

则n次多项式

天文学 17

满足插值条件。OpenCASCADE的PLib包中也提供了Lagrange插值的函数来举行多项式插值计算。其用法的代码如下所示:

void testLagrangeInterpolation(void)
{
    // given three points: (0,2), (1,7), (2,18) to interpolate a polynomial
    Standard_Real aValues[3] = {2.0, 7.0, 18.0};
    Standard_Real aParameters[3] = {0.0, 1.0, 2.0};
    Standard_Real aResult = 0.0;

    // this do not output the coeff of the interpolate polynomial
    PLib::EvalLagrange(1.5, 0, 2, 1, aValues[0], aParameters[0], aResult);

    std::cout << "Result: " << aResult << std::endl;
}

下边对PLib::伊娃lLagrange()函数的四个参数举行表达:

Parameter

待根据Lagrange插值多项式求值的参数

DerivativeRequest

插值多项式导数次数

Degree

插值多项式的次数

Dimension

插值多项式的维次

Values

插值多项式的值

Parameters

插值多项式的参数

Results

参数Parameter在Lagrange插值多项式中的值

上述代码总计的是如此贰个难点,已知f(0)=2; f(1)=7,
f(2)=18,求f(1.5)的近似值。总计结果如下图所示:

天文学 18

Figure 4.1 Lagrange Interpolation Result

由上图可以,经过Lagrange抛物插值得到的结果与间接总括得到的结果符合。为了更好的求证OpenCASCADE中PLib包的Lagrange插值的意向,下边将《总计办法》[6]中Lagrange插值部分中的例题举行计算来结统计结果开展比较。已知天文学 19

分级用线性插值和抛物插值求天文学 20的近似值。相关测算代码如下所示:

// sqrt(100)=10, sqrt(121)=11, sqrt(144)=12, evaluate sqrt(115) value.
Standard_Real aSqrtValues[3] = {10.0, 11.0, 12.0};
Standard_Real aSqrtParameters[3] = {100.0, 121.0, 144.0};

// linear interpolation
PLib::EvalLagrange(115.0, 0, 1, 1, aSqrtValues[0], aSqrtParameters[0], aResult);
std::cout << "Linear Interpolate Result: " << aResult << std::endl;

// Parabolic Interpolation
PLib::EvalLagrange(115.0, 0, 2, 1, aSqrtValues[0], aSqrtParameters[0], aResult);
std::cout << "Parabolic Interpolate Result: " << aResult << std::endl;

计量结果如下所示:

天文学 21

Figure 4.2 Linear Interpolate and Parabolic Interpolate Result

将上图4.2的结果与书中的总计结果开展自查自纠发现,上面的结果为《总括办法》书中的结果:

天文学 22

PLib中Lagrange插值结果准确,精度较高。

从地方的结果来看,Lagrange插值方法比直接解线性方程组的办法要简明,且Lagrange插值法比解线性方程组的完结要简明很多,只用壹个函数即可。

5.Conclusion

因此将最简单易行的多项式进行求值,及用求解线性方程组的法子插值和Lagrange插值多项式,来上学曲线拟合中须要较高“插值”,因为其须要曲线严厉经过插值点。曲线拟合中的逼近就不曾那个须要,只是须求曲线与插值点之间的容差尽量小。

通过行使OpenCASCADE的PLib包中的函数,可以发现对幂级数的多项式的表示法一般会用周密表示法,且都会采取便捷的Horner法则,也是秦九韶算法。

直接依据定义来插值幂次多项式时,可以使用Gauss消元法来求解线性方程组。那种办法测算工作量大,而Lagrange插值法结构紧密,便于编程已毕,且
代码相对简便易行。通过对《计算办法》书中例题的计算,来验证PLib::伊娃lLagrange()函数的用法及统计结果。

6.References

  1. 同济学院数学教研室. 高等数学. 高等教育出版社. 一九九九

  2. 同济大学动用数学系. 线性代数. 高等教育出版社. 二〇〇一

  3. Thomas H. Cormen. Introduction to Algorithms. The MIT Press. 2001

  4. Les Piegl, Wayne Tiller. The NURBS Book. Springer-Verlag. 1995

  5. Shing Liu. Polynomial Library in OpenCASCADE. 2013

http://www.cppblog.com/eryar/archive/2013/05/08/200118.html

  1. 易大义,沈云宝,李有法. 总括方法. 安徽大学出版社. 2001

  2. 蒋尔雄,赵风光,苏仰锋. 数值逼近. 清华大学出版社. 2011

  3. 王仁宏,李崇君,朱春钢. 统计几何教程. 科学出版社. 二〇〇九

  4. 蔡天新. 数学传说.
    http://open.163.com/special/cuvocw/shuxuechuanqi.html

  5. 科学出版社名词室. 新汉英数学词汇. 科学出版社. 二零零四

 

PDF Version: OpenCASCADE Interpolation –
Lagrange

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 亚洲必赢手机官网 版权所有