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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南