2023年5月16日(软件工程日报)

工程数学
复制代码
实验一:一维寻优法(0.618法)程序设计
通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法
二、实验内容
(1)请用0.618法求解优化问题:
在区间[0,1]上的极小点和极小值;
(2)根据0.618法算法步骤编写Matlab的程序实现0.618搜索法;
(3)要求输出内容包括:极小点、极小值、每次迭代的a、b、al、ak的值;
(4)按照模板撰写实验报告,要求规范整洁。
三、算法步骤、代码、及结果
   1. 算法步骤
(1)确定搜索区间(a,b)和精度要求tol
(2)初始化
    L = b-a;
x1 = a + (1-r)*L;
x2 = a + r*L;
fx1 = f(x1);
fx2 = f(x2);
(3)首先比较L和精度tol大小,若L<tol转(6),若L>tol转(4
(4)比较fx1和fx2大小,若fx1>fx2,置a = x1;x1 = x2;fx1 = fx2;x2 = a + r*(b-a);fx2 = f(x2),同时更新搜索区间(a,b),然后转(5),若fx1<fx2,则b = x2;x2 = x1;fx2 = fx1;x1 = a + (1-r)*(b-a);fx1 = f(x1),同时更新搜索区间(a,b),然后转(5)
(5)i=i+1;(i记录迭代次数),同时记录第i轮迭代数据,转(3)
输出最小值点xm和最小值fm,结束
   2. 代码
  function [xm,fm,aList,bList,alList,akList] = golds(f,a,b,tol)
% f: 待优化的目标函数
% a,b: 初始区间
% tol: 精度要求
% xm,fm: 最优解和相应的最优函数值

% 黄金分割比例
r = (sqrt(5)-1)/2;
% 初始值
L = b-a;
x1 = a + (1-r)*L;
x2 = a + r*L;
fx1 = f(x1);
fx2 = f(x2);

% 记录每次迭代的值
i = 1;
aList(i) = a;
bList(i) = b;
alList(i) = x1;
akList(i) = x2;

% 迭代计算
while L > tol
    if fx1 > fx2
        a = x1;
        x1 = x2;
        fx1 = fx2;
        x2 = a + r*(b-a);
        fx2 = f(x2);
    else
        b = x2;
        x2 = x1;
        fx2 = fx1;
        x1 = a + (1-r)*(b-a);
        fx1 = f(x1);
    end
    i = i+1;
    aList(i) = a;
    bList(i) = b;
    alList(i) = x1;
    akList(i) = x2;
    L = b-a;
end

% 输出结果
xm = (a+b)/2;
fm = f(xm);
End
% 定义函数
f = @(x) x^2 - sin(x);
% 定义区间和精度
a = 0; b = 1; tol = 1e-6;
% 调用 golds 函数求解
[xm,fm,aList,bList,alList,akList] = golds(f,a,b,tol);
% 输出结果
fprintf('The minimum point is %f, and the minimum value is %f.\n', xm, fm);
fprintf('The a values are:\n'); disp(aList);
fprintf('The b values are:\n'); disp(bList);
fprintf('The al values are:\n'); disp(alList);
fprintf('The ak values are:\n'); disp(akList);
   3. 结果
   The minimum point is 0.450184, and the minimum value is -0.232466.
The a values are:
  列 1 至 10
         0         0    0.2361    0.3820    0.3820    0.3820    0.4164    0.4377    0.4377    0.4458
  列 11 至 20
    0.4458    0.4489    0.4489    0.4489    0.4497    0.4497    0.4499    0.4501    0.4501    0.4501

  列 21 至 30
    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502
The b values are:
  列 1 至 10
    1.0000    0.6180    0.6180    0.6180    0.5279    0.4721    0.4721    0.4721    0.4590    0.4590
  列 11 至 20
    0.4540    0.4540    0.4520    0.4508    0.4508    0.4504    0.4504    0.4504    0.4503    0.4502
  列 21 至 30
    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502
The al values are:
  列 1 至 10
    0.3820    0.2361    0.3820    0.4721    0.4377    0.4164    0.4377    0.4508    0.4458    0.4508
  列 11 至 20
    0.4489    0.4508    0.4501    0.4497    0.4501    0.4499    0.4501    0.4502    0.4502    0.4502
  列 21 至 30

    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502
The ak values are:   
  列 1 至 10
    0.6180    0.3820    0.4721    0.5279    0.4721    0.4377    0.4508    0.4590    0.4508    0.4540
  列 11 至 20
    0.4508    0.4520    0.4508    0.4501    0.4504    0.4501    0.4502    0.4503    0.4502    0.4502
  列 21 至 30
    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502    0.4502
复制代码

 

posted @   摆烂达人  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示