def check_linear_1d(self): x = [1,2,3] y = [0,2,4] lut = UnivariateSpline(x,y,k=1) assert_array_almost_equal(lut.get_knots(),[1,3]) assert_array_almost_equal(lut.get_coeffs(),[0,4]) assert_almost_equal(lut.get_residual(),0.0) assert_array_almost_equal(lut([1,1.5,2]),[0,1,2])
def check_sproot(self): a=0 b=15 N=20 x=a+(b-a)*arange(N+1,dtype=float)/float(N) v=f1(x) k=3 uspl = UnivariateSpline(x,v,k=k,s=0) ex = array([0.0, pi, 2.0*pi, 3.0*pi, 4.0*pi]) assert_array_almost_equal(uspl.roots(),ex, decimal=3)
def check_spint_spalde(self): per = [0, 0, 0] N = [20, 20, 50] ia = [0, 0, 0.2*pi] ib = [0, 0, pi] a,b = 0,2*pi dx = 0.2*pi k = range(1,6) for i in range(len(per)): x=a+(b-a)*arange(N[i]+1,dtype=float)/float(N[i]) v=f1(x) for j in range(len(k)): uspl = UnivariateSpline(x,v,k=k[j],s=0) ir = uspl.integral(ia[i],ib[i]) dr = uspl.derivatives(dx) assert_almost_equal(ir, f1(ib[i],-1)-f1(ia[i],-1), decimal=2) d=0 for ddr in dr: if d<k[j]-1: assert_almost_equal(1, ddr/f1(dx,d), decimal=2) d=d+1
def check_curfit_against_dierckx(self): """ Test against results obtined from the pure fortran routines. Here we check simple spline creation and evaluation. """ x,y = curfit_test['x'],curfit_test['y'] k,s = curfit_test_smth['k'],curfit_test_smth['s'] iopt = curfit_test_smth['iopt'] for i in range(len(k)): if iopt[i] == 0: uspl = UnivariateSpline(x,y,k=k[i],s=s[i]) elif iopt[i] == 1: uspl.set_smoothing_factor(s[i]) assert_almost_equal(uspl.get_residual(), curfit_test_smth['fp'][i], decimal=2) n = uspl._data[7] assert_equal(n,curfit_test_smth['n'][i]) assert_array_almost_equal(around(uspl.get_knots(),1), curfit_test_smth['t'][i][k[i]:n-k[i]]) assert_array_almost_equal(around(uspl.get_coeffs(),4), curfit_test_smth['c'][i], decimal=3) assert_array_almost_equal(around(uspl(x),1), curfit_test_smth['sp'][i])