# eryar

posts - 371, comments - 548, trackbacks - 0, articles - 0

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

2.Polynomial Evaluation

void testPolynomialEvaluation(void)
{

// evaluate 1 dimension polynmoial.
Standard_Real aCoeff[3= {2.02.03.0};

Standard_Real aResult
= 0.0;

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

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

Figure 2.1 Polynomial Evaluation

3.Polynomial Interpolation

void testPolynomialInterpolation(void)
{

// given three points: (0, 2), (1, 7), (2, 18) to interpolate a polynomial
math_Matrix A(13130.0);
math_Vector B(
13);
math_Vector X(
13);

A(
11= 1.0; A(12= 0.0; A(13= 0.0; B(1= 2.0;
A(
21= 1.0; A(22= 1.0; A(23= 1.0; B(2= 7.0;
A(
31= 1.0; A(32= 2.0; A(33= 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;
}
}

Figure 3.1 Polynomial Interpolation Result

4.Lagrange Interpolation

Lagrange父亲是法国陆军骑兵里的一名军官，后由于经商破产，家道中落。据Lagrange本人回忆，如果幼年时家境富裕，他也就不会作数学研究了。经历了挫折之后没被打倒的人后期成就会更大，像《红楼梦》的作者曹雪芹。严重跑题了，回到Lagrange插值问题上来。从Lagrange中值定理的证明及Lagrange乘数法求极值的方式中可以看出Lagrange有个特点，那就是喜欢引入辅助函数来解决问题，可以看出Lagrange是非常精明的。对多项式插值也不例外，通过构造了一个Lagrange插值基函数来简化多项式的插值，如下公式为Lagrange插值基函数：

void testLagrangeInterpolation(void)
{

// given three points: (0,2), (1,7), (2,18) to interpolate a polynomial
Standard_Real aValues[3= {2.07.018.0};
Standard_Real aParameters[
3= {0.01.02.0};
Standard_Real aResult
= 0.0;

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

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

 Parameter 待根据Lagrange插值多项式求值的参数 DerivativeRequest 插值多项式导数次数 Degree 插值多项式的次数 Dimension 插值多项式的维次 Values 插值多项式的值 Parameters 插值多项式的参数 Results 参数Parameter在Lagrange插值多项式中的值

Figure 4.1 Lagrange Interpolation Result

// sqrt(100)=10, sqrt(121)=11, sqrt(144)=12, evaluate sqrt(115) value.
Standard_Real aSqrtValues[3= {10.011.012.0};
Standard_Real aSqrtParameters[
3= {100.0121.0144.0};

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

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

Figure 4.2 Linear Interpolate and Parabolic Interpolate Result

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

5.Conclusion

6.References

1. 同济大学数学教研室. 高等数学. 高等教育出版社. 1996

2. 同济大学应用数学系. 线性代数. 高等教育出版社. 2003

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

6. 易大义,沈云宝,李有法. 计算方法. 浙江大学出版社. 2002

7. 蒋尔雄,赵风光,苏仰锋. 数值逼近. 复旦大学出版社. 2012

8. 王仁宏,李崇君,朱春钢. 计算几何教程. 科学出版社. 2008

10. 科学出版社名词室. 新汉英数学词汇. 科学出版社. 2004