数值计算—三次样条函数插值

一、样条函数的基本原理

已知 n + 1 n+1 n+1 个数据节点,分成 n n n 个区间(Interval),在每个区间构造一个三次函数, S 0 ( x ) ∼ S n − 1 ( x ) S_0(x)\sim S_{n-1}(x) S0(x)Sn1(x)

在这里插入图片描述
假设每一段三次函数都用如下方程来定义:
S i ( x ) = a i + b i ( x − x i ) + c i ( x − x i ) 2 + d i ( x − x i ) 3 , i = 0 , 1 , ⋯   , n − 1 S_i(x)=a_i+b_i(x-x_i)+c_i(x-x_i)^2+d_i(x-x_i)^3,i=0,1,\cdots,n-1 Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3,i=0,1,,n1

那么 n n n 个区间对应的三次函数 S ( x ) S(x) S(x) 的数学表达式如下:
S ( x ) = { S 0 ( x ) = a 0 + b 0 ( x − x 0 ) + c 0 ( x − x 0 ) 2 + d 0 ( x − x 0 ) 3 i f   x 0 ≤ x ≤ x 1 S 1 ( x ) = a 1 + b 1 ( x − x 1 ) + c 1 ( x − x 1 ) 2 + d 1 ( x − x 1 ) 3 i f   x 1 ≤ x ≤ x 2 ⋮ S n − 1 ( x ) = a n − 1 + b n − 1 ( x − x n − 1 ) + c n − 1 ( x − x n − 1 ) 2 + d n − 1 ( x − x n − 1 ) 3 i f   x n − 1 ≤ x ≤ x n S(x)= \begin{cases} S_0(x)=a_0+b_0(x-x_0)+c_0(x-x_0)^2+d_0(x-x_0)^3 \quad\quad\quad &if\ x_0\leq x\leq x_1\\[2ex] S_1(x)=a_1+b_1(x-x_1)+c_1(x-x_1)^2+d_1(x-x_1)^3 &if\ x_1\leq x\leq x_2\\[2ex] \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\vdots \\[2ex] S_{n-1}(x)=a_{n-1}+b_{n-1}(x-x_{n-1})+c_{n-1}(x-x_{n-1})^2+d_{n-1}(x-x_{n-1})^3 &if\ x_{n-1}\leq x\leq x_n \end{cases} S(x)= S0(x)=a0+b0(xx0)+c0(xx0)2+d0(xx0)3S1(x)=a1+b1(xx1)+c1(xx1)2+d1(xx1)3Sn1(x)=an1+bn1(xxn1)+cn1(xxn1)2+dn1(xxn1)3if x0xx1if x1xx2if xn1xxn

每段三次函数 S ( x ) S(x) S(x) 都有 a , b , c , d a,b,c,d a,b,c,d 四个系数,上述 n n n 段三次函数,共有 4 n 4n 4n 个系数。要想求解这 4 n 4n 4n 个系数,共需要 4 n 4n 4n 个独立的方程。下面,我们根据三次样条函数对每一段三次函数在断点处的约束,生成求解 4 n 4n 4n 个系数所需要的所有方程。

条件1: n \pmb n n 段三次函数必须穿过所有已知节点

在这里插入图片描述

S i ( x i ) = y i , i = 0 , 1 , 2 , ⋯   , n \boxed{S_i(x_i) = y_i,\quad i=0,1,2,\cdots,n} Si(xi)=yi,i=0,1,2,,n

已知 n + 1 n+1 n+1 个节点,总共可以生成 n + 1 n+1 n+1 个方程,即
{ y 0 = S 0 ( x 0 ) = a 0 + b 0 ( x 0 − x 0 ) + c 0 ( x 0 − x 0 ) 2 + d 0 ( x 0 − x 0 ) 3 = a 0 y 1 = S 1 ( x 1 ) = a 1 + b 1 ( x 1 − x 1 ) + c 1 ( x 1 − x 1 ) 2 + d 1 ( x 1 − x 1 ) 3 = a 1 ⋮ y n − 1 = S n − 1 ( x ) = a n − 1 + b n − 1 ( x n − 1 − x n − 1 ) + c n − 1 ( x n − 1 − x n − 1 ) 2 + d n − 1 ( x n − 1 − x n − 1 ) 3 = a n − 1 y n = S n − 1 ( x ) = a n − 1 + b n − 1 ( x n − x n − 1 ) + c n − 1 ( x n − x n − 1 ) 2 + d n − 1 ( x n − x n − 1 ) 3 \begin{cases} y_0=S_0(x_0)=a_0+b_0(x_0-x_0)+c_0(x_0-x_0)^2+d_0(x_0-x_0)^3=a_0\\[2ex] y_1=S_1(x_1)=a_1+b_1(x_1-x_1)+c_1(x_1-x_1)^2+d_1(x_1-x_1)^3=a_1\\[2ex] \quad\quad\quad\quad\quad\quad\quad\quad\quad\vdots\\[2ex] y_{n-1}=S_{n-1}(x)=a_{n-1}+b_{n-1}(x_{n-1}-x_{n-1})+c_{n-1}(x_{n-1}-x_{n-1})^2+d_{n-1}(x_{n-1}-x_{n-1})^3=a_{n-1}\\[2ex] y_{n}=S_{n-1}(x)=a_{n-1}+b_{n-1}(x_{n}-x_{n-1})+c_{n-1}(x_{n}-x_{n-1})^2+d_{n-1}(x_{n}-x_{n-1})^3 \end{cases} y0=S0(x0)=a0+b0(x0x0)+c0(x0x0)2+d0(x0x0)3=a0y1=S1(x1)=a1+b1(x1x1)+c1(x1x1)2+d1(x1x1)3=a1yn1=Sn1(x)=an1+bn1(xn1xn1)+cn1(xn1xn1)2+dn1(xn1xn1)3=an1yn=Sn1(x)=an1+bn1(xnxn1)+cn1(xnxn1)2+dn1(xnxn1)3

条件2:在所有节点(除了第一节点和最后一个节点)处连续

S i ( x i + 1 ) = S i + 1 ( x i + 1 ) , i = 0 , 1 , 2 , ⋯   , n − 2 \boxed{S_i(x_{i+1})=S_{i+1}(x_{i+1}),\quad i=0,1,2,\cdots,n-2} Si(xi+1)=Si+1(xi+1),i=0,1,2,,n2

已知 n + 1 n+1 n+1 个节点, n n n 个区间,因此有 n − 1 n-1 n1 个衔接点,共生成 n − 1 n-1 n1 个方程,即
{ S 0 ( x 1 ) = S 1 ( x 1 ) S 1 ( x 2 ) = S 2 ( x 2 ) ⋮ S n − 2 ( x n − 1 ) = S n − 1 ( x n − 1 ) \begin{cases} S_0(x_1)=S_1(x_1)\\[2ex] S_1(x_2)=S_2(x_2)\\[2ex] \quad\quad\quad\vdots\\[2ex] S_{n-2}(x_{n-1})=S_{n-1}(x_{n-1}) \end{cases} S0(x1)=S1(x1)S1(x2)=S2(x2)Sn2(xn1)=Sn1(xn1)

条件3:在所有节点(除了第一节点和最后一个节点)处可导

S i ′ ( x i + 1 ) = S i + 1 ′ ( x i + 1 ) , i = 0 , 1 , 2 , ⋯   , n − 2 \boxed{S_i^\prime(x_{i+1})=S_{i+1}^\prime(x_{i+1}),\quad i=0,1,2,\cdots,n-2} Si(xi+1)=Si+1(xi+1),i=0,1,2,,n2

已知 n + 1 n+1 n+1 个节点, n n n 个区间,因此有 n − 1 n-1 n1 个衔接点,共生成 n − 1 n-1 n1 个方程,即
{ S 0 ′ ( x 1 ) = S 1 ′ ( x 1 ) S 1 ′ ( x 2 ) = S 2 ′ ( x 2 ) ⋮ S n − 2 ′ ( x n − 1 ) = S n − 1 ′ ( x n − 1 ) \begin{cases} S_0^\prime(x_1)=S_1^\prime(x_1)\\[2ex] S_1^\prime(x_2)=S_2^\prime(x_2)\\[2ex] \quad\quad\quad\vdots\\[2ex] S_{n-2}^\prime(x_{n-1})=S_{n-1}^\prime(x_{n-1}) \end{cases} S0(x1)=S1(x1)S1(x2)=S2(x2)Sn2(xn1)=Sn1(xn1)

条件4:在所有节点(除了第一节点和最后一个节点)处二阶可导

S i ′ ′ ( x i + 1 ) = S i + 1 ′ ′ ( x i + 1 ) , i = 0 , 1 , 2 , ⋯   , n − 2 \boxed{S_i^{\prime\prime}(x_{i+1})=S_{i+1}^{\prime\prime}(x_{i+1}),\quad i=0,1,2,\cdots,n-2} Si′′(xi+1)=Si+1′′(xi+1),i=0,1,2,,n2

已知 n + 1 n+1 n+1 个节点, n n n 个区间,因此有 n − 1 n-1 n1 个衔接点,共生成 n − 1 n-1 n1 个方程,即
{ S 0 ′ ′ ( x 1 ) = S 1 ′ ′ ( x 1 ) S 1 ′ ′ ( x 2 ) = S 2 ′ ′ ( x 2 ) ⋮ S n − 2 ′ ′ ( x n − 1 ) = S n − 1 ′ ′ ( x n − 1 ) \begin{cases} S_0^{\prime\prime}(x_1)=S_1^{\prime\prime}(x_1)\\[2ex] S_1^{\prime\prime}(x_2)=S_2^{\prime\prime}(x_2)\\[2ex] \quad\quad\quad\vdots\\[2ex] S_{n-2}^{\prime\prime}(x_{n-1})=S_{n-1}^{\prime\prime}(x_{n-1}) \end{cases} S0′′(x1)=S1′′(x1)S1′′(x2)=S2′′(x2)Sn2′′(xn1)=Sn1′′(xn1)

综上,第一个约束条件得到了 n + 1 n+1 n+1 个方程,第二、三、四个约束条件分别得到了 n − 1 n-1 n1 个方程,总计 4 n − 2 4n-2 4n2 个方程,还缺少 2 个方程。

二、求解方程组

函数 S ( x ) S(x) S(x) 的一阶导数和二阶导数为
{ S i ( x ) = a i + b i ( x − x i ) + c i ( x − x i ) 2 + d i ( x − x i ) 3 S i ′ ( x ) = b i + 2 c i ( x − x i ) + 3 d i ( x − x i ) 2 S i ′ ′ ( x ) = 2 c i + 6 d i ( x − x i ) \begin{cases} S_i(x)=a_i+b_i(x-x_i)+c_i(x-x_i)^2+d_i(x-x_i)^3\\[2ex] S_i^\prime(x)=b_i+2c_i(x-x_i)+3d_i(x-x_i)^2\\[2ex] S_i^{\prime\prime}(x)=2c_i+6d_i(x-x_i) \end{cases} Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3Si(x)=bi+2ci(xxi)+3di(xxi)2Si′′(x)=2ci+6di(xxi)

根据条件 1, S i ( x i ) = y i S_i(x_i)=y_i Si(xi)=yi,推导得出:
a i = y i \boxed{a_i = y_i} ai=yi

根据条件 2, S i ( x i + 1 ) = S i + 1 ( x i + 1 ) S_i(x_{i+1})=S_{i+1}(x_{i+1}) Si(xi+1)=Si+1(xi+1)(即 S i ( x i + 1 ) = y i + 1 S_i(x_{i+1})=y_{i+1} Si(xi+1)=yi+1)推导得出:
a i + h i b i + h i 2 c i + h i 3 d i = y i + 1 \boxed{a_i+h_ib_i+h_i^2c_i+h_i^3d_i=y_{i+1}} ai+hibi+hi2ci+hi3di=yi+1

S i ( x i + 1 ) = a i + b i ( x i + 1 − x i ) + c i ( x i + 1 − x i ) 2 + d i ( x i + 1 − x i ) 3 令 h i = x i + 1 − x i S i ( x i + 1 ) = a i + b i h i + c i h i 2 + d i h i 3 又 S i + 1 ( x i + 1 ) = y i + 1 故, a i + b i h i + c i h i 2 + d i h i 3 = y i + 1 S_i(x_{i+1})=a_i+b_i(x_{i+1}-x_i)+c_i(x_{i+1}-x_i)^2+d_i(x_{i+1}-x_i)^3\\[2ex] 令\quad h_i=x_{i+1}-x_i\\[2ex] S_i(x_{i+1})=a_i+b_ih_i+c_ih_i^2+d_ih_i^3\\[2ex] 又\quad S_{i+1}(x_{i+1})=y_{i+1} \quad \\[2ex] 故, a_i+b_ih_i+c_ih_i^2+d_ih_i^3=y_{i+1} Si(xi+1)=ai+bi(xi+1xi)+ci(xi+1xi)2+di(xi+1xi)3hi=xi+1xiSi(xi+1)=ai+bihi+cihi2+dihi3Si+1(xi+1)=yi+1故,ai+bihi+cihi2+dihi3=yi+1

根据条件 3 , S i ′ ( x i + 1 ) = S i + 1 ′ ( x i + 1 ) S_i^\prime(x_{i+1})=S_{i+1}^\prime(x_{i+1}) Si(xi+1)=Si+1(xi+1) 推导得出:
b i + 2 h i c i + 3 h i 2 d i − b i + 1 = 0 \boxed{b_i+2h_ic_i+3h_i^2d_i-b_{i+1}=0} bi+2hici+3hi2dibi+1=0

S i ′ ( x i + 1 ) = b i + 2 c i ( x i + 1 − x i ) + 3 d i ( x i + 1 − x i ) 2 = b i + 2 c i h i + 3 d i h i 2 S i + 1 ′ ( x i + 1 ) = b i + 1 + 2 c i + 1 ( x i + 1 − x i + 1 ) + 3 d i + 1 ( x i + 1 − x i + 1 ) 2 = b i + 1 故, b i + 2 c i h i + 3 d i h i 2 − b i + 1 = 0 \begin{aligned} S_i^\prime(x_{i+1})&=b_i+2c_i(x_{i+1}-x_i)+3d_i(x_{i+1}-x_i)^2\\[2ex] &=b_i+2c_ih_i+3d_ih_i^2\\[2ex] S_{i+1}^\prime(x_{i+1})&=b_{i+1}+2c_{i+1}(x_{i+1}-x_{i+1})+3d_{i+1}(x_{i+1}-x_{i+1})^2\\[2ex] &=b_{i+1}\\[2ex] &故,b_i+2c_ih_i+3d_ih_i^2-b_{i+1}=0 \end{aligned} Si(xi+1)Si+1(xi+1)=bi+2ci(xi+1xi)+3di(xi+1xi)2=bi+2cihi+3dihi2=bi+1+2ci+1(xi+1xi+1)+3di+1(xi+1xi+1)2=bi+1故,bi+2cihi+3dihi2bi+1=0

根据条件 4 , S i ′ ′ ( x i + 1 ) = S i + 1 ′ ′ ( x i + 1 ) S_i^{\prime\prime}(x_{i+1})=S_{i+1}^{\prime\prime}(x_{i+1}) Si′′(xi+1)=Si+1′′(xi+1) 推导得出:
2 c i + 6 h i d i − 2 c i + 1 = 0 \boxed{2c_i+6h_id_i-2c_{i+1}=0} 2ci+6hidi2ci+1=0

S i ′ ′ ( x i + 1 ) = 2 c i + 6 d i ( x i + 1 − x i ) = 2 c i + 6 d i h i S i + 1 ′ ′ ( x i + 1 ) = 2 c i + 1 + 6 d i + 1 ( x i + 1 − x i + 1 ) = 2 c i + 1 故, 2 c i + 6 d i h i − 2 c i + 1 = 0 \begin{aligned} S_i^{\prime\prime}(x_{i+1})&=2c_i+6d_i(x_{i+1}-x_i)\\[2ex] &=2ci+6d_ih_i\\[3ex] S_{i+1}^{\prime\prime}(x_{i+1})&=2c_{i+1}+6d_{i+1}(x_{i+1}-x_{i+1})\\[2ex] &=2c_{i+1}\\[3ex] 故,&2c_i+6d_ih_i-2c_{i+1}=0 \end{aligned} Si′′(xi+1)Si+1′′(xi+1)故,=2ci+6di(xi+1xi)=2ci+6dihi=2ci+1+6di+1(xi+1xi+1)=2ci+12ci+6dihi2ci+1=0

综上,有
{ a i = y i ① a i + h i b i + h i 2 c i + h i 3 d i = y i + 1 ② b i + 2 h i c i + 3 h i 2 d i − b i + 1 = 0 ③ 2 c i + 6 h i d i − 2 c i + 1 = 0 ④ \begin{cases} a_i = y_i&①\\[2ex] a_i+h_ib_i+h_i^2c_i+h_i^3d_i=y_{i+1}&②\\[2ex] b_i+2h_ic_i+3h_i^2d_i-b_{i+1}=0&③\\[2ex] 2c_i+6h_id_i-2c_{i+1}=0&④ \end{cases} ai=yiai+hibi+hi2ci+hi3di=yi+1bi+2hici+3hi2dibi+1=02ci+6hidi2ci+1=0

m i = S i ′ ′ ( x i ) = 2 c i m_i=S_i^{\prime\prime}(x_i)=2c_i mi=Si′′(xi)=2ci,可得
c i = m i 2 \boxed{c_i =\dfrac{m_i}{2}} ci=2mi

由 ④ 可得
d i = m i + 1 − m i 6 h i \boxed{d_i=\dfrac{m_{i+1}-m_i}{6h_i}} di=6himi+1mi

由 ② 可得
b i = y i + 1 − y i h i − h i 2 m i − h i 6 ( m i + 1 − m i ) \boxed{b_i = \dfrac{y_{i+1}-y_i}{h_i}-\dfrac{h_i}{2}m_i-\dfrac{h_i}{6}(m_{i+1}-m_i)} bi=hiyi+1yi2himi6hi(mi+1mi)

由 ③ 可得
h i m i + 2 ( h i + h i + 1 ) m i + 1 + h i + 1 m i + 2 = 6 [ y i + 2 − y i + 1 h i + 1 − y i + 1 − y i h i ] \boxed{h_im_i+2(h_i+h_{i+1})m_{i+1}+h_{i+1}m_{i+2}=6\Big[\dfrac{y_{i+2}-y_{i+1}}{h_{i+1}}-\dfrac{y_{i+1}-y_i}{h_i}\Big]} himi+2(hi+hi+1)mi+1+hi+1mi+2=6[hi+1yi+2yi+1hiyi+1yi]

三、端点条件(自由边界)

指定端点二阶导数为 0,即
S 0 ′ ′ ( x 0 ) = S n − 1 ′ ′ ( x n ) = 0 S_0^{\prime\prime}(x_0)=S_{n-1}^{\prime\prime}(x_n)=0 S0′′(x0)=Sn1′′(xn)=0

可得:
2 c 0 + 6 d 0 ( x 0 − x 0 ) = 0 2 c 0 = 0 m 0 = 0 2 c n − 1 + 6 d n − 1 ( x n − x n − 1 ) = 0 2 ( m n − 1 2 ) + 6 ( m n − m n − 1 6 h n − 1 ) h n − 1 = 0 m n − 1 + m n − m n − 1 = 0 m n = 0 2c_0+6d_0(x_0-x_0)=0\\[2ex] 2c_0=0\\[2ex] \boxed{m_0=0}\\[3ex] 2c_{n-1}+6d_{n-1}(x_n-x_{n-1})=0\\[2ex] 2(\dfrac{m_{n-1}}{2})+6(\dfrac{m_n-m_{n-1}}{6h_{n-1}})h_{n-1} =0\\[2ex] m_{n-1}+m_n-m_{n-1}=0\\[2ex] \boxed{m_n=0}\\[2ex] 2c0+6d0(x0x0)=02c0=0m0=02cn1+6dn1(xnxn1)=02(2mn1)+6(6hn1mnmn1)hn1=0mn1+mnmn1=0mn=0

综上,用矩阵形式表示为:
[ 1 0 0 0 ⋯ 0 h 0 2 ( h 0 + h 1 ) h 1 0 ⋯ 0 0 h 1 2 ( h 1 + h 2 ) h 2 ⋯ 0 0 0 h 2 2 ( h 2 + h 3 ) ⋯ 0 ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 0 0 ⋯ 1 ] [ m 0 m 1 m 2 m 3 ⋮ m n ] = 6 [ 0 y 2 − y 1 h 1 − y 1 − y 0 h 0 y 3 − y 2 h 2 − y 2 − y 1 h 1 y 4 − y 3 h 3 − y 3 − y 2 h 2 ⋮ 0 ] \left[ \begin{matrix} 1 & 0 & 0 & 0 & \cdots & 0\\ h_0 & 2(h_0+h_1) & h_1 & 0 & \cdots & 0\\ 0 & h_1 & 2(h_1+h_2) & h_2 & \cdots & 0\\ 0 & 0 & h_2 & 2(h_2+h_3) & \cdots & 0\\ \vdots & \vdots & \vdots & \vdots & & \vdots\\ 0 & 0 & 0 & 0 & \cdots & 1\\ \end{matrix} \right] \left[ \begin{matrix} m_0 \\ m_1 \\ m_2 \\ m_3 \\ \vdots \\ m_n \\ \end{matrix} \right]=6 \left[ \begin{matrix} 0 \\ \dfrac{y_{2}-y_{1}}{h_{1}}-\dfrac{y_{1}-y_0}{h_0} \\ \dfrac{y_{3}-y_{2}}{h_{2}}-\dfrac{y_{2}-y_1}{h_1} \\ \dfrac{y_{4}-y_{3}}{h_{3}}-\dfrac{y_{3}-y_2}{h_2} \\ \vdots \\ 0 \\ \end{matrix} \right] 1h000002(h0+h1)h1000h12(h1+h2)h2000h22(h2+h3)000001 m0m1m2m3mn =6 0h1y2y1h0y1y0h2y3y2h1y2y1h3y4y3h2y3y20

python 代码实现

import numpy as np
import matplotlib.pyplot as plt


def cubic_spline_interpolation(x, y):
    n = len(x)  # n 个插值节点,将曲线分成 n-1 个区间,每个区间构造一个三次函数(4个参数),则共有 4(n-1)个参数待求解
    h = np.zeros(n - 1)
    for i in range(0, n - 1):
        h[i] = x[i + 1] - x[i]
    A = np.zeros((n, n))
    B = np.zeros(n)
    for i in range(1, n - 1):
        A[i, i - 1] = h[i - 1]
        A[i, i] = 2 * (h[i - 1] + h[i])
        A[i, i + 1] = h[i]
        B[i] = 6 * ((y[i + 1] - y[i]) / h[i] - (y[i] - y[i - 1]) / h[i - 1])
    A[0, 0] = A[n - 1, n - 1] = 1
    B[0] = B[n - 1] = 0
    m = np.linalg.inv(A) @ B.T

    b = np.zeros(n - 1)
    d = np.zeros(n - 1)
    a = y
    c = m / 2
    for i in range(0, n - 1):
        d[i] = (m[i + 1] - m[i]) / (6 * h[i])
        b[i] = (y[i + 1] - y[i]) / h[i] - h[i] * m[i] / 2 - h[i] * (m[i + 1] - m[i]) / 6

    return a, b, c, d


x = np.array([1, 2, 3, 4, 5])
y = np.array([6, 3, 7, 2, 5])

a, b, c, d = cubic_spline_interpolation(x, y)

x_new = np.linspace(1, 5, 100)

num = len(x_new)
y_new = np.zeros(num)

for i, xi in enumerate(x_new):
    if x[-1] >= xi >= x[0]:
        j = np.searchsorted(x, xi)  # 得到 xi 在数组 x 中哪个区间中
        if j != 0:
            dx = x[j] - x[j - 1]
            dy = y[j] - y[j - 1]
            y_new[i] = a[j - 1] + b[j - 1] * (xi - x[j - 1]) + c[j - 1] * (xi - x[j - 1]) ** 2 + d[j - 1] * (
                    xi - x[j - 1]) ** 3
        else:
            y_new[i] = a[0]
    elif xi < x[0]:
        y_new[i] = a[0] + b[0] * (xi - x[0]) + c[0] * (xi - x[0]) ** 2 + d[0] * (xi - x[0]) ** 3
    elif xi > x[-1]:
        y_new[i] = a[-1] + b[-1] * (xi - x[-1]) + c[-1] * (xi - x[-1]) ** 2 + d[-1] * (xi - x[-1]) ** 3

plt.plot(x, y, 'ro', label='Original Data')
plt.plot(x_new, y_new, label='Spline Interpolation')
plt.legend()
plt.show()

结果显示

在这里插入图片描述

  • 20
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值