【发布时间】:2021-05-10 07:44:30
【问题描述】:
我正在尝试在 MATLAB 上实现具有固定步长的梯度下降算法。\
syms x1 x2 x3 x4
f(x1,x2,x3,x4) = (x1+10*x2)^2 + 5*(x3-x4)^2 + (x2-2*x3)^4 + 10*(x1-x4)^4 ;
grad_f = gradient(f);
xk = [3;-1;0;1];
while euclidian(grad_f(xk(1),xk(2),xk(3),xk(4)),4) > 0.01
xk = xk- 0.001*grad_f(xk(1),xk(2),xk(3),xk(4));
double(xk)
end
这是主要部分,以下是欧几里得范数函数:
function euclidian_norm = euclidian (x,size)
total = 0;
for i = 1:size
total = total + x(i)^2;
end
euclidian_norm = sqrt(total);
end
但是,当我尝试运行代码时,它需要永远计算它。我不知道为什么。
提前致谢
编辑: 谁能尝试运行代码并告诉我是否出现同样的问题?
【问题讨论】:
-
尝试调试看看会发生什么。