# Cubic BSpline interpolation

I'm trying to interpolate a curve using cubic bsplines, but I cannot get it to exactly match the original curve. Could someone please give me some pointers. The original solution is from page #7 in here.

library(splines)
func <- function(x){return (sin(x)/(1+x*x))} # original curve
x1 <- seq(-4,4,length.out = 500) #domain is -4 to +4
f1vals <- func(x1)
k1 <- c(-7,-6,-5,-4,-3,-2,-1, 0, 1,2,3,4,5,6,7) # add 3 artificial knots at either ends
bb1 <- splineDesign(k1, x = x1, outer.ok = TRUE)

fit1 <- lm(f1vals ~ bb1)
curve(func, -4, 4)