工程数学实验一
所花时间:2小时
代码量:如下
博客量:本学期截至目前68篇
了解到的知识点:工程数学
实验一:一维寻优法(0.618 法)程序设计
一、实验目的
通过一维寻优黄金分割法的程序设计,培养学生计算机的应用能力,并为今后无约束优化方法 的学习和编程,奠定基础;掌握缩小寻优区间的黄金分割法。
二、实验内容
(1)请用 0.618 法求解优化问题: 2 min ( ) sin( ) f x x x = − 在区间[0,1]上的极小点和极小值;
(2)根据 0.618 法算法步骤编写 Matlab 的程序实现 0.618 搜索法;
(3)要求输出内容包括:极小点、极小值、每次迭代的 a、b、al、ak 的值;
(4)按照模板撰写实验报告,要求规范整洁。
三、算法步骤、代码、及结果
1. 算法步骤
1) .确定搜索区间[a,b],其中a和b是函数可行域中的任意两个不同的点。
2) .计算区间的长度L,确定控制参数ε,其中ε是非负容许误差。ε越小,计算的最终结果越精确。
3) .确定黄金分割点x1和x2,其中: x1 = a + 0.382L x2 = a + 0.618L
4) .计算函数f(x1)和f(x2)的值,如果f(x1) < f(x2),则新搜索区间为[a,x2]。反之新搜索区间是[x1,b]。
5) .判断新的搜索区间长度是否小于给定的容许误差ε,如果小于等于则停止迭代,迭代结果就是搜索区间内的任意一点。
6) .重复执行步骤3~5,直到新搜索区间长度小于容许误差ε时停止迭代,迭代结果就是搜索区间内任意一点。 通过上述算法步骤,我们可以迭代寻找一维函数的极小值点,并获取到较为准确的计算结果。实际上,由于黄金分割比例约为0.618,因而才有了这种算法名称。
2. 代码
[umin, fmin, iter] = golds(@(x) x^2 - sin(x), 0, 1, 1e-6);
disp(['¼«Ð¡µã = ' num2str(umin)]);
disp(['¼«Ð¡Öµ = ' num2str(fmin)]);
disp(['ÿ´Îµü´úµÄ a¡¢b¡¢al¡¢ak µÄÖµ'])
disp(iter);
3. 结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)