From your explanation it follows that a grid algorithm is really not complicated.
No, it isn't. But the drawback, as usual for brute force, is that its slow as of the many calculations necessary. A grid of 150x150 isn't that dense, but already requires 22500 times calculating E and comparing the result to the current minimum and replacing the latter if appropriate. And in graphing MTotal this procedure has to be done for every value of B which is plotted. So the conjugate gradient algorithm used by minimize() still is faster and given suitable guess values is delivering satisfying results. You may play around with the algorithms offered and some options by right clicking the word minimize (not sure if thats true for MC2001i, toom though) but usually auto select is doing a good job.