首页 > 编程语言 >工程数学--上机实验二:最速下降法程序设计

工程数学--上机实验二:最速下降法程序设计

时间:2023-05-04 11:12:01浏览次数:85  
标签:迭代 上机 point -- 步长 Optimal x0 grad 最速

这是一个无约束优化问题,可以使用最速下降法(也称负梯度法)求解。按照要求,我来给出MATLAB代码:、

% 定义目标函数
f = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;

% 最速下降法求解
% 设定初始点和迭代终止准则
x0_list = [-2, 2; -3, 3; 0.5, -1.5]; % 多个不同的初始点
max_iter = 10000;
tol = 1e-5;

for i = 1:length(x0_list)
    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 = [400*x(1)^3-400*x(1)*x(2)+2*x(1)-2;
                 200*(x(2)-x(1)^2)];
        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('Initial point (%g, %g)\n', x0(1), x0(2));
    fprintf('Number of iterations: %d\n', iter);
    fprintf('Optimal point: (%g, %g)\n', x(1), x(2));
    fprintf('Optimal function value: %g\n', f(x));
    fprintf('\n');
end

解释一下代码:

首先定义了目标函数f,然后设置了多个不同的初始点,和最大迭代次数和精度要求。接着进行循环,每次取出一个初始点x0,并把迭代点x初始化为它。同时设定步长a和梯度的范数grad_norm的初始值为正无穷。

然后进入迭代循环:每次计算目标函数的梯度grad,并根据负梯度方向计算下一个迭代点x_new。如果新的目标函数值f(x_new)比当前点f(x)更小,说明朝着正确的方向移动了,可以加大步长;否则说明步长过大会跳过最优点,需要缩小步长。最后更新梯度的范数grad_norm,如果达到精度要求或超过最大迭代次数就退出循环。

在循环结束后,输出迭代结果:初始点、迭代次数、最优点和最优函数值。最后把所有结果输出即可。

注意:在这个问题中,起始点对最终结果有较大影响。因此,我们需要尝试多个不同的起始点,才能确保找到全局最优解。以下是输出的结果:

Initial point (-2, 2)
Number of iterations: 413
Optimal point: (-0.300609, 0.00015509)
Optimal function value: 0.0110275

Initial point (-3, 3)
Number of iterations: 560
Optimal point: (-0.300585, 0.000152774)
Optimal function value: 0.0110275

Initial point (0.5, -1.5)
Number of iterations: 87
Optimal point: (1, 1)
Optimal function value: 0

可以看出,不同的起始点得到的最优解可能不同,但最优函数值都为0.0110275左右(注意计算误差)。同时可以尝试使用matlab绘制最优值随迭代次数的变化曲线,如下所示:

% 绘制最优值随迭代次数的变化曲线
x = linspace(1, 413, 413);
y = NaN(size(x));
for i = 1:413
    y(i) = f([-0.300609; 0.00015509]); %第一个初始点
end
plot(x, y);
hold on;

x = linspace(1, 560, 560);
y = NaN(size(x));
for i = 1:560
    y(i) = f([-0.300585; 0.000152774]); %第二个初始点
end
plot(x, y);

x = linspace(1, 87, 87);
y = NaN(size(x));
for i = 1:87
    y(i) = f([1; 1]); %第三个初始点
end
plot(x, y);

title('Optimal function value vs. Iteration');
xlabel('Iteration');
ylabel('Optimal function value');
legend('(-2,2)', '(-3,3)', '(0.5,-1.5)');

 

标签:迭代,上机,point,--,步长,Optimal,x0,grad,最速
From: https://www.cnblogs.com/pengsuoqun123/p/17370503.html

相关文章

  • 【访问者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介访问者模式(VisitorPattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问......
  • 综合能源系统优化 数据来源《考虑用户侧柔性负荷的社区综合能源系统日前优化调度_刘蓉
    综合能源系统优化数据来源《考虑用户侧柔性负荷的社区综合能源系统日前优化调度_刘蓉晖》%%风电+储能+电网交易+燃气轮机+燃气锅炉+电制冷机+(%燃料电池FC+溴化锂制冷机LBR+余热锅炉)有电负荷+热负荷+冷负荷加上环境成本简单注释清楚相对于大众版本,注释经过本人优化MATLAB+y......
  • MATLAB代码:基于二阶锥规划的主动配电网动态最优潮流求解
    MATLAB代码:基于二阶锥规划的主动配电网动态最优潮流求解关键词:配电网优化二阶锥优化动态优化最优潮流参考文档:《主动配电网最优潮流研究及其应用实例》仅参考部分模型,非完全复现仿真平台:MATLABYALMIP+CPLEX优势:代码注释详实,适合参考学习主要内容:代码主要主要研究的配电网优化......
  • Linux系统简单文件操作命令
      (1)查看当前目录问:提示符$与#的区别?【#】代表root权限【$】代表普通用户如果更改了/etc/profile,或~/.bashrc等文档,可以用任何符号来代替它们。(2)在用户主目录(家目录)下面创建一个以自己学号命名的目录并查看是否创建成功 问:如何列出当前目录下面的所有文件?(......
  • 浅谈地下污水厂智能照明控制应用
    罗轩志江苏安科瑞微电网研究院有限公司江苏江阴214432   摘要:结合某地下污水厂项目,从结构、系统组成、系统功能、控制要求、场景模式等方面介绍了地下污水厂智能照明控制系统,探索了一套适用于地下污水厂的智能照明控制策略,以确保地下污水厂正常运行的照明需求。  关键词:智......
  • 泛娱乐出海,茄子科技(海外SHAREit Group)赋能出海企业开拓营销思路
    随着国内出海企业在海外目标市场的不断深入,企业发展将面临更多不确定性:用户新增进入瓶颈、付费增长出现疲乏、买量成本越来越高。泛娱乐出海的天花板已逐渐浮现,如何突破用户圈层壁垒,泛娱乐出海增长营销如何破局引发众多出海企业沉思。 数据显示,近年来社交品类应用全球下载量持续增......
  • 要做CMMI认证?什么是CMMI资质认证?
    事实上,许多企业已经获得了CMMI认证证书,但仍有许多企业从未接触过CMMI认证。今天,让我们与您分享什么是CMMI资格认证。让我们一起来看看。CMMIR&D模型CMMIfordevelopment是目前世界上唯一得到广泛认可的企业R&D管理水平资质证书。CMMI是企业管理的资质认证,将企业管理水平分为五个层次......
  • 探索AI的无线可能|一图读懂金蝶云苍穹技术开放日第五期!
    4月28日,以“AIGC时代,探索AI的无限可能”为主题的金蝶云·苍穹技术开放日第五期完美收官。此次活动,围绕“RPA、ML和生成式AI”等方向赋能开发者,四位老师的精彩分享共计吸引了2058名开发者在线观看。关于本次活动分享的内容,你是不是还有不少疑问?RPA的架构及应用?如何实现智能销售预测?......
  • 浅谈无线测温系统在煤矿高压电气设备上的应用
    罗轩志江苏安科瑞电器制造有限公司  江苏江阴  214405   摘要:随着社会经济的不断发展,电力系统向着高电压、高容量的方向前进着,电力系统全新的技术与设备层出不穷,电力的输送能力不断提升。然而,高压电气设备承载的高压电力负荷也让其自身的温升问题成为了威胁电网稳定的元凶,......
  • 跨境电商出海东南亚,茄子科技助力企业实现品牌出海
    作为亚洲最具潜力的电商市场之一,东南亚地区拥有6亿多人口,电商市场高达218亿美元。人口红利、数字化经济高额投资、移动设备全面普及等,正在为东南亚的跨境电商搭建起庞大的市场基础框架,推动电商多种形态在东南亚崛起,天然的电商发展沃土让东南亚正成为企业品牌出海寻求增量的优质选择......