azure011328

导航

 

乒乓球的考试项目比我想象的要简单了 希望今年技术组合也可以拿满分!

平平无奇上机实验课的一天 今天写了实验一 写了电子版以后又手写了一份 

加强了点印象

下午又继续完善了一下matlab的实验二 进行最速下降法的编写

% 定义目标函数
f = @(x) (x(1)+10*x(2))^2+5*(x(3)-x(4))^2+(x(2)-2*x(3))^4+10*(x(1)-x(4))^4;
% 最速下降法求解
% 设定初始点和迭代终止准则
x0_list = [2,-1,0.5,0;-1,-1,-1,-1;1,1,1,1 ;0.1,0.1,0.1,0.1]; % 多个不同的初始点
max_iter = 10000;
tol = 1e-5;
for i = 1:4
x0 = x0_list(i,:);
x = x0';
a = 0.01; % 步长
iter = 0;
grad_norm = inf; % 初始化为正无穷
while grad_norm > tol && iter < max_iter
iter = iter + 1;
grad = [2*(x(1)+10*x(2))+40*(x(1)-x(4))^3;
20*(x(1)+10*x(2))+4*(x(2)-2*x(3))^3;
10*(x(3)-x(4))-8*(x(2)-2*x(3))^3;
-10*(x(3)-x(4))-40*(x(1)-x(4))^3];
x_new = x - a*grad;
if f(x_new) < f(x)
x = x_new;
a = a * 1.1; % 放大步长
else
a = a * 0.5; % 缩小步长
end
grad_norm = norm(grad);
end
fprintf('初始点 (%g, %g,%g,%g)\n', x0(1), x0(2),x0(3),x0(4));
fprintf('迭代次数: %d\n', iter);
fprintf('最优点: (%g, %g,%g,%g)\n', x(1), x(2),x(3),x(4));
fprintf('最优函数值: %g\n', f(x));
fprintf('\n');
end

  

posted on 2024-05-23 21:08  淮竹i  阅读(24)  评论(0)    收藏  举报