Assume I have some .m file with a function (and it's gradient) to be used by fminunc() in MATLAB for some unconstrained optimization problem.
To solve the problem in the most simple way, I do this:
clear all
[x,fval] = fminunc(@fun, [1;1])
This will minimize fval and return the optimized values of x. For a more accurate optimization, I do this:
clear all
op = optimset('GradObj', 'on', 'LargeScale', 'off');
[x,fval] = fminunc(@fun, [1;1], op)
Both fval and x values still are the solution to the problem only that now they are more accurate, because of the supplied gradient. Correct?
Both of the above methods use the line-search algorithm but I can also use the trust-region algorithm, like this:
clear all
op = optimset('GradObj', 'on');
[x,fval] = fminunc(@fun, [1;1], op)
Both fval and x values are different from the previous ones. What does this mean? Is this algorithm better or worse? Or maybe it's different in a way that it's not better nor worse. What does it mean than?

fun()looks like, and the results you're getting, it's hard to say anything except that it is entirely possible for the two methods to return different results. These algorithms optimize locally, so it is entirely possible that the two methods converged to different local optima (if your function has multiple optima). – J. M. Dec 15 '11 at 0:52