Quadratic Optimization using Newtons Method

I am writing Newtons method to solve an optimization problem. I have written the following code:
function estimate = newtonMethod(f,df,x0,tolerance) %f & df are functions that contain OP & gradient respectively, x0 is initial guess, tolerance is 1e-12
estimate = x0; % Initial guess
iterations = 40; % Maximum number of iterations
for j = 1:iterations;
dx = f(estimate) / df(estimate)';
estimate = estimate - dx';
% Stop criterion:
if abs(dx) < tolerance
return
end
end
end
However, the vector 'u' doesn't seem to be a good solution. My question is: Is this the correct way of solving this OP using Newtons Method? I would highly appreciate suggestions on this.

10 comentarios

Torsten
Torsten el 27 de Nov. de 2015
Which OP ?
Best wishes
Torsten.
rihab
rihab el 27 de Nov. de 2015
Editada: rihab el 27 de Nov. de 2015
Its a Quadratic OP expressed as: f = sigma(k)norm(u' * A_k * u - b_k) ; with gradient df = sigma(k)4*(u'* A_k * u - b_k) * A_k * u (I have found the gradient by matrix calculus;A_k is symmetric,positive definite).
Torsten
Torsten el 27 de Nov. de 2015
Editada: Torsten el 27 de Nov. de 2015
Why a quadratic OP ? You take the norm of a quadratic in u - the result will have terms of order 4 in u, and a square root, too.
Best wishes
Torsten.
rihab
rihab el 27 de Nov. de 2015
Editada: rihab el 27 de Nov. de 2015
I see. Eventually I am interested in the square norm, and I am trying to solve it by Newtons Method (that approximates it to a quadratic problem). Somehow I see that the estimate generated by the code i have written (mentioned above) isn't a good one. Is this the correct way of implementing it in MATLAB?
Torsten
Torsten el 27 de Nov. de 2015
Why not use fminsearch again for control ?
Best wishes
Torsten.
rihab
rihab el 27 de Nov. de 2015
I have already solved it using fminsearch which gave a very close estimate. I just want to see if Newtons method yields the same estimate or not so I wrote the code for it and wanted to know if its the correct way of implementing it or not :-)
Torsten
Torsten el 27 de Nov. de 2015
Editada: Torsten el 27 de Nov. de 2015
If you want to use Newton's method, you must apply it to the equation df/du = 0.
So you will have to calculate the Hessian of f: d^2f/du^2.
Best wishes
Torsten.
rihab
rihab el 27 de Nov. de 2015
I see. So you mean instead of dx = f(estimate) / df(estimate); i should write dx = df(estimate) / dfHessian(estimate); (where df is the gradient and dfHessian is hessian of f)
Torsten
Torsten el 27 de Nov. de 2015
Yes.
rihab
rihab el 27 de Nov. de 2015
thank you so much Torsten :-)

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Quadratic Programming and Cone Programming en Centro de ayuda y File Exchange.

Preguntada:

el 27 de Nov. de 2015

Comentada:

el 27 de Nov. de 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by