matlab牛顿法函数
时间: 2023-11-06 13:57:59 浏览: 186
matlab中可以使用以下代码实现牛顿法函数:
```matlab
function [min_x,min_f,k] = newton_min(f,x0,var)
%%%输入目标函数f,初始点x0,以及自变量var;
%%%利用Newton迭代法计算无约束目标函数极小值;
%%%输出最小值点min_x,最小值min_f以及迭代次数k。
j = jacobian(f,var); %计算函数的雅可比矩阵
J = jacobian(j,var); %计算函数的Hesse矩阵
temp1 = subs(j,var,x0); %计算梯度
g = (double(temp1))'; %转换为double型再转置
G = double(subs(J,var,x0)); %计算Hesse矩阵
k = 0;
x = x0';
eps = 10^(-5); %默认精度为10^(-5)
while norm(g,2) > eps
x = x - G\g; %Newton迭代法格式
k = k + 1;
temp2 = subs(j,var,x');
g = (double(temp2))'; G = double(subs(J,var,x'));
end
min_x = x; %极小值点
min_f = subs(f,var,min_x'); %极小值
```
阅读全文