It is better to spline r^2 E(r) which is smoother and the derivative will require fewer interpolation points. Then dE_dr can be found from it. E(r) is close to a gaussian shape and near the peaks the sampling would have to be dense. The current r_vector sampling seems terrible. The jump from from 1 mpc to 255 mpc can be problematic