add GradientDescent and plotting