Expectation Maximization Algorithm (EM) for Gaussian Mixture Models (GMMs)
One reason why you aren't getting fitted values close to the true values could be the initial values of the parameters used.
It's likely what you have found is a local maxima. You have to try a number of initial starts and then pick the one with that gives the highest likelihood.