added analytic solution