Optimal Smoothing of Noisy Data Using Spline Functions