下降法求解%x是迭代后的最小值点

函数[x, val, k] = zuisuxiajiang(x0)

%用最速下降法求最小值

%x为迭代后的最小值matlab 特征值实部最大matlab 特征值实部最大,val为最小值,k为迭代次数

%x0为初始值,最速下降法对初始值不敏感

k = 0;

epsilon = 1e-10; % 停止错误值

%rho和sigma是线搜索法的两个参数

rho = 0.55;

sigma = 0.5;

%当函数梯度的范数小于等于终止误差值时停止迭代

而范数(g(x0)) > epsilon

d = -g(x0);

m = 0;

while (f(x0 + rho^m*d) > (f(x0)+sigma*rho^m*g(x0)’*d))

m = m + 1;

结束

x0 = x0 + rho^m*d;

k = k + 1;

结束

x = x0;

val = f(x0);

结束

%%原函数

函数 y = f(x)

y = 100*(x(1)^2 – x(2))^2 + (x(1) – 1)^2;

结束

%%原函数的梯度应该是列向量的形式

函数 y = g(x)

y(1,1) = 400*x(1)*(x(1)^2 – x(2)) + 2*(x(1) – 1);

y(2,1) = -200*(x(1)^2 – x(2));

结束

%%Hessen矩阵原函数,注意矩阵每个元素的值

函数 y = G(x)

y(1, 1) = 1200*x(1)^2 – 400*x(2) + 2;

y(1, 2) = -400*x(1);

y(2, 1) = -400*x(1);

y(2, 2) = 200;

结束

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论