from scipy.interpolate import CubicSpline from sympy import Symbol, Poly xpts = np.linspace(0, 1) cs = CubicSpline(xpts, np.exp(xpts)) Poly(cs)
如何用渐近多边形求出三次样条曲线的多项式?
y0u0uwnf1#
三次样条由许多不同的多项式组成。您可以使用.c属性获取它们的系数:
.c
In [33]: cs.c.shape Out[33]: (4, 49)
这是一个4行49列的数组,每列给出一个多项式的系数:
In [35]: cs.c[:,0] Out[35]: array([0.17111101, 0.49985044, 1.00000156, 1. ])
这表示多项式并且可以被转换为SymPy多项式,如下:
In [41]: x = Symbol('x') In [42]: Poly(cs.c[:,0], x) Out[42]: Poly(0.171111008723916*x**3 + 0.499850444583089*x**2 + 1.00000155672475*x + 1.0, x, domain='RR')
该图显示该多项式在x=0附近紧密地遵循指数曲线:
In [40]: plot(Poly(cs.c[:,0], x).as_expr(), exp(x))
这是第一个多项式,但还有48个多项式可以使用0以外的索引得到,系数是以原点为中心的多项式的系数,因此需要移位才能得到正确的系数:
0
In [46]: plot(Poly(cs.c[:,48], x).as_expr().subs(x, x-xpts[-1]), exp(x))
1条答案
按热度按时间y0u0uwnf1#
三次样条由许多不同的多项式组成。您可以使用
.c
属性获取它们的系数:这是一个4行49列的数组,每列给出一个多项式的系数:
这表示多项式并且可以被转换为SymPy多项式,如下:
该图显示该多项式在x=0附近紧密地遵循指数曲线:
这是第一个多项式,但还有48个多项式可以使用
0
以外的索引得到,系数是以原点为中心的多项式的系数,因此需要移位才能得到正确的系数: