资源描述
最优化上机作业
一.爬山法
爬山法是指经过评价当前的问题状态后,限于条件,不是去缩小,而是去增加这一状态与目标状态的差异,经过迂回前进,最终达到解决问题的总目标。就如同爬山一样,为了到达山顶,有时不得不先上矮山顶,然后再下来,这样翻越一个个的小山头,直到最终达到山顶。可以说,爬山法是一种"以退为进"的方法,往往具有"退一步进两步"的作用,后退乃是为了更有效地前进。爬山法也叫逐个修改法、瞎子摸象法或k-means法。
二.目标函数
f(x)=(x-2)^2-1
三.定义域
x∈ [0,4]
四. 程序目的
用爬山法在定义域内找到函数f(x)的最小值
五.具体方法
在定义域内先随机找一个点x,再另外找一点x1,比较两个函数值的大小。选择最小的函数值对应的点,再继续找下一点, 进行比较。如此循环下去,直到找到函数的最小值及对应的点。
六.程序代码
#include<stdio.h>
#include<math.h>
double f(double);
main()
{
double c=0,n=0.1;
while(n<=4.0)
{
if(f(c)>f(n))
c=n;
n=n+0.1;
}
printf("the c=%f\n",c);
printf("the min=%f\n",f(c));
}
double f(double x)
{
double y;
y=(x-2)*(x-2)-1;
return y;
}
六.程序结果
七. 心得体会
在本次上机中,发现大一所学早已忘却,这导致我的上机作业完成的磕磕绊绊。但基本都是让人容易忽略的小错误,有时候为了检查一个错误,不得不仔细查看每一个标点。本来觉得不是很复杂的程序,但是结果却经常不尽人意。“纸上得来终觉浅”,在以后的学习中,要经常练习上机。
展开阅读全文