当看到周围的同学抱怨样条的种种困难后,哥终于赶上大家的进度,开始写样条插值函数了。
基本情况:
我们测试的函数以F(x)=1/(1+x^2)为例,检测样条函数S(x)在[-5,0]范围内的插值效果,样条S(x)满足S(xi)=yi,S'(x0)=F'(x0),S'(xn)=F'(xn),所以Spline插值将用到的数据有,(x0,y0)……(xn,yn)这n+1个点,以及F'(x0)与F'(xn)的值。假定插值点x在xi~x(i+1)范围内,令h=x(i+1)-xi,t=(x-xi)/h:S(x)=f0(t)*yi+f1(t)*y(i+1)+g0(t)*h*mi+g1(t)*h*m(i+1),式中的mi=S'(xi)的值,并且由上可知,f0(x)=(2*x+1)*(x-1)^2,f1(x)=(-2*x+3)*x^2,g0(x)=x*(x-1)^2,g1(x)=(x-1)*x^2。
操作流程:
从已知点中,求解mi的值,再对插值点寻找插值空间,代入进行插值。
实现过程:
全程用float型,matrix[]用于存储数据点&