注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

阿英讲0.618法搜索单峰函数极小点--matlab实现  

2012-07-26 01:00:47|  分类: 学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
即以此功德,庄严佛净土。上报四重恩,下济三途苦。惟愿见闻者,悉发菩提心。在世富贵全,往生极乐国。
1 . 0.618 算法步骤
阿英讲0.618法搜索单峰函数极小点--matlab实现 - 阿英 - Mr.Right
 阿英讲0.618法搜索单峰函数极小点--matlab实现 - 阿英 - Mr.Right
 参考资料: 《最优化理论与算法》第二版 陈宝林,P259

2. 保留所有迭代中间结果--学习时理解
clear all;
epsilon = 0.16;
k = 1;
a(k) = -1;
b(k) = 1;
lambda(k) = a(k) + 0.382*(b(k) - a(k));
mu(k) = a(k) + 0.618*(b(k) - a(k));

while(b(k) - a(k) >= epsilon) % equivalently, if b(k) - a(k) < espilon then stop the iteration
fLambda(k) = 2*(lambda(k))^2 - lambda(k) - 1; % f(x) = 2*x^2 - x -1
fMu(k) = 2*(mu(k))^2 - mu(k) - 1; 
    if(fLambda(k) > fMu(k)) 
        a(k + 1) = lambda(k);
        b(k + 1) = b(k);
        lambda(k + 1) = mu(k);
        mu(k + 1) = a(k + 1) + 0.618*(b(k + 1) - a(k + 1));
        fLambda(k + 1) = fMu(k);
fMu(k + 1) = 2*(mu(k + 1))^2 - mu(k + 1) - 1;
    else
a(k + 1) = a(k);
b(k + 1) = mu(k);
mu(k + 1) = lambda(k);
lambda(k + 1) = a(k + 1) + 0.382*(b(k + 1) - a(k + 1));
fLambda(k + 1) = 2*(lambda(k + 1))^2 - lambda(k + 1) - 1;
fMu(k + 1) = fLambda(k);
    end
    k = k + 1;
end
minSolution = (a(k) + b(k))/2;

3. 保留最后一次迭代结果--实际中如是做

clear all;
epsilon = 0.16;

a = -1;
b = 1;
lambda = a + 0.382*(b - a);
mu = a + 0.618*(b - a);
 
while(b - a >= epsilon) % equivalently, if b - a < espilon then stop the iteration
 fLambda = 2*(lambda)^2 - lambda - 1; % f(x) = 2*x^2 - x -1
 fMu = 2*(mu)^2 - mu - 1;
    if(fLambda > fMu)
        a = lambda;
        b = b;
        lambda = mu;
        mu = a + 0.618*(b - a);
        fLambda = fMu;
        fMu = 2*(mu)^2 - mu - 1;
    else
        a = a;
        b = mu;
        mu = lambda;
        lambda = a + 0.382*(b - a);
        fLambda = 2*(lambda)^2 - lambda - 1;
        fMu = fLambda;
    end
end
minSolution = (a + b)/2;

 
  评论这张
 
阅读(813)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016