牛顿法函数
function [xValue, fValue, k] = newtonMethod(f, x, fDiff, fHess, xStart, e)
deltaF = subs(fDiff, x, xStart);
k = 0;
while norm(deltaF) >= e
xStart = xStart - subs(fHess, x, xStart) \ subs(fDiff, x, xStart);
deltaF = subs(fDiff, x, xStart);
k = k + 1;
end
xValue = xStart';
fValue = subs(f, x', xValue);
end
运行程序
syms x1 x2;
y = 3 * x1 * x1 + 2 * x2 * x2 - 4 * x1 - 6 * x2;
yDiff = jacobian(y, x);
yHess = hessian(y, [x1, x2]);
[xValue, fValue, k] = newtonMethod(y, x', yDiff', yHess, [0; 0], 0.01);