理解黄金分割搜索算法:求解cos(x)最大值

版权申诉
0 下载量 102 浏览量 更新于2024-07-04 收藏 161KB DOC 举报
“黄金分割搜索算法及其Java实现” 黄金分割搜索算法是一种简单且高效的数值优化方法,主要用于在已知函数的连续、单峰区间内寻找函数的极值点,例如最大值或最小值。该算法利用了黄金分割比例(约0.6180339887)来确定搜索区间的分割点,从而逐步缩小搜索范围。 实验目的是让学生通过实践了解和掌握黄金分割搜索算法的工作原理。实验要求是运用黄金分割搜索算法找到余弦函数cos(x)在x位于[-π/2, π/2]区间内的最大值,并能动态展示搜索过程。 黄金分割搜索算法的步骤如下: 1. 输入初始搜索区间[a, b]以及误差阈值e。 2. 计算两个分割点x1和x2,x1位于a和b之间靠近a的位置,x2位于a和b之间靠近b的位置。根据黄金分割比例,x1 = a + 0.382 * (b - a),x2 = a + 0.618 * (b - a)。 3. 分别计算f1 = f(x1)和f2 = f(x2),其中f是目标函数。 4. 当b - a大于误差阈值e时,继续迭代。 5. 在每次迭代中,比较f1和f2的值,如果f1大于f2,则更新a和x1,反之更新b和x2。然后重新计算新的分割点和对应的函数值。 6. 当迭代结束时,中间点xmax = (a + b) / 2即为函数的极值点。 7. 输出极值点xmax。 提供的源代码是用Java编写的,使用了Swing库来创建图形用户界面。程序中定义了一个名为GOLD的主类,它启动了一个名为A的JFrame子类实例,用于显示图形。A类初始化时添加了一个MyPanel类的实例,这个MyPanel类实现了Runnable接口,可以开启一个新的线程来执行搜索算法。MyPanel类中的run()方法实现了黄金分割搜索算法,初始化了搜索区间[a, b],并计算了起始分割点x1和x2。在每次迭代中,计算新的分割点和函数值,并通过图形界面动态展示搜索过程。 整个程序通过设置不同颜色的线段来表示搜索区间,随着时间推移,线段会逐渐缩短,表示搜索范围的缩小,最终找到cos(x)的最大值点。这有助于直观地理解黄金分割搜索算法如何工作。