工程数学实验一

所花时间: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. 结果

 

posted @   南北啊  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
1 2 3
4
点击右上角即可分享
微信分享提示