一维搜索之黄金分割法(C#实现)

在非线性最优化中,一元最优化最简单且是多元最优化的基础,一元最优化即对函数f(x)在区间[a,b]上寻找极小值或极大值(令g(x)=-f(x))。一元最优化的方法之一即一维搜索之黄金分割法,步骤如下:

  1. 计算黄金分割比 g=512 .
  2. x1=a+(1g)(ba) \
    x2=a+g(ba)
  3. 计算 f(x1),f(x2)
  4. 当计算未达到最大迭代次数时,重复5~7
  5. 如果 f(x1)<f(x2) ,则
    b=x2 ;
    x2=x1 ;
    x1=a+(1g)(ba) ;
    f(x2)=f(x1) ;
  6. 如果 f(x1)>f(x2) ,则
    a=x1 ;
    x1=x2 ;
    x2=a+g(ba) ;
    f(x1)=f(x2) ;
  7. 判断精度是否满足,若满足则退出循环
  8. 计算结果取 a+b2

该代码来自《C#科学计算讲义》这本书的源码,代码地址http://download.csdn.net/detail/researchstep/9106041。

你可能感兴趣的:(科学计数,C#)