最速下降法求解,用matlb做,但是不能直接用里面的函数,里面的epsilon是终止误差,不是步长,谢谢~ 5

百度网友6cbe704
2014-11-28 · TA获得超过2103个赞
知道大有可为答主
回答量:1120
采纳率:0%
帮助的人:706万
展开全部
% 预分配数组空间提高效率
x1 = zeros(1,10000); x2 = zeros(1,10000);
fval = zeros(1, 10000);

% x1,x2的初始值
x1(1) = 4; x2(1) = 4;
% 计算f初值
fval(1) = 2*x1(1)^2+0.3*x2(1)^2;
% 步长控制
step = 0.1;
% 精度控制
epsilon = 0.01;

i = 2; % 迭代计数

while 1
dir1 = 4*x1(i-1); % f对x1的偏导数
dir2 = 0.6*x2(i-1); % f对x2的偏导数
dir = sqrt(dir1^2+dir2^2); % 梯度向量的模
if (dir < 1) % 在梯度向量的模较小时,不再归一化以提高精度
dir = 1;
end;
x1(i) = x1(i-1)-step*dir1/dir; % 新的x1
x2(i) = x2(i-1)-step*dir2/dir; % 新的x2
fval(i) = 2*x1(i)^2+0.3*x2(i)^2;
if(abs(fval(i) - fval(i-1)) < epsilon)
break;
end;
i=i+1;
end;

x1 = x1(1:i-1);
x2 = x2(1:i-1);
fval = fval(1:i-1);

% 可视化
X=-5:0.05:5;
Y=-5:0.05:5;
[X,Y] = meshgrid(X,Y);
Z = 2*X.^2+0.3*Y.^2;
surf(X,Y,Z);
shading interp
hold on;
plot3(x1, x2, fval, 'linewidth', 2, 'color', 'black');
hold off;
xlabel('x_1', 'fontsize', 16);
ylabel('x_2', 'fontsize', 16);
set(gca, 'fontsize', 12);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式