13. Scipy Tutorial-多元样条插值
scipy.interpolate包里还提供了支持多元函数的B样条插值,使用两个函数splev和splprep共同完成。和之前一元样条插值一样两步完成,第一步先用splprep计算出b样条曲线的参数tck和u,第二步在第一步的基础上用splev计算出各取样点的插值结果。 $$ (x - 1)^2 + y^2 = 1 $$
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import splev, splprep
x = np.linspace(0, 2, 20)
y = np.sqrt(1 - (x - 1) ** 2)
tck, u = splprep([x, y], s = 0)
x1, y1 = splev(u,tck)
plt.plot(x1, y1, 'r-', x, y, 'bo')
plt.xlim(-1, 3)
plt.ylim(-1, 2)
plt.legend(["Parametric spline", "Orignal pointers"],loc='best')
plt.show()