黄金分割算法

黄金比例分割是把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比。其比值是一个无理数,取其前三位数字的近似值是0.618。

通过简单的计算就可以发现:

1/0.618=1.618

(1-0.618)/0.618=0.618


基于以上计算,下面我们用程序来实现:

假定一条线段为a, 输入公式,就可以获取经过黄金分割后的两段线段的长度.

VBA代码:

'自定义函数: goldenCut(a AsDouble, getType As String)

'参数说明:

'a:长度/角度等

'getType 有两个取值"long","short" "long"-获取较长一段的长度,"short" 获取较短一段的长度

 

Function goldenCut(a As Double, getType AsString)

   getType = LCase(getType) '转为小写

   result = "#/E" '错误

   If getType = "long" Then

      result = a * ((Sqr(5) - 1) / 2)

   ElseIf getType = "short" Then

     result = a * (1 - ((Sqr(5) - 1) / 2))

   End If

    goldenCut = result

End Function

 

输入=goldenCut(1,"long")  将获得0.6180339887

=goldenCut(1,"short")  将获得0.3819660113

 

用java也可以轻松写出类似的方法,这里就不赘述了。

黄金分割在很多领域都有应用,比如股市,建筑,等等,知道怎样用程序来实现是很有必要的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值