3000 人民币预算有偿求助解决一个求极大值问题

讨论 未结 4 57
cheitu
cheitu 会员 2022年4月25日 10:17 发表
<p>题目: 已知 y 与 x 相关,没有明确的 y 与 x 的表达式。已知 x 的情况,带入即可求得对于 y 的值。现需要求得 y 关于 x 的极大值。 另外,已知相关性条件如下: 1 、x 的范围是 0 至 40000000000000000000000 ,在此函数作用域内,求 y 的极大值; 2 、x 越大,y 的趋势为先增加后减少,且 y 最大值必定会大于 0 ;</p> <p>附: 1 、目前探索结论:因为 y 与 x 没有明确的表达式,故不能直接通过极值表达式求得极大值,思路为通过迭代法,求得极大值。现已实现通过三分法迭代求得 y 的极大值,可是三分法效率不高,需要迭代次数更少的算法。 2 、探索方向:通过拟牛顿迭代 bfgs 算法,可快速收敛求得极大值;目前只知思路,但不懂 bfgs 的算法原理,不知如何实现。</p> <p>需求:用 python 或者 go 实现一个高效迭代方法,求极值。不可以使用计算库。我这边期望是 bfgs 算法,如果你认为有更优的算法可以再讨论。</p> <p>x 与 y 的计算程序我会额外提供,有兴趣可以联系留下微信或者 tg ,我会及时加你。</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
4个回复
  • shyrock
    2022年4月25日 10:17
    这样是否可行: 1.取考察区间正中间的三个点 n-1 ,n ,n+1 ,分别求 f(n-1),f(n)和 f(n+1); 2.如果 f(n-1)>f(n)>f(n+1),在[0,n-1]区间重复第 1 步; 如果 f(n-1)<f(n)<f(n+1),在[n+1,max]区间重复第 1 步; 如果 f(n-1)<f(n)>f(n+1),则 f(n)是极大值; 由题意,f(n-1)>f(n)<f(n+1)不存在。
    0 0
  • stein42
    2022年4月25日 10:17
    BFGS 算法是求多元函数极值的。 牛顿法需要二阶导数。 这个可以直接用黄金分割法,也就是 0.618 法,不断缩小区间,收敛速度是指数级的。
    0 0
  • zhailw
    2022年4月25日 10:46
    楼主三分法怎么实现的啊?我大概算了一下,230 步左右就可以求出来了啊?这样都满足不了要求么? 而且如果曲线没有其他性质的话,n 分法就是最优解了啊
    0 0
  • cheitu
    2022年4月25日 11:19
    @ 目前用的优化后的四分法是只需要求 52 次 y 值就能取得有效精度下的结果,比黄金分割少 10 次。我理想情况下是计算 20 次以内得到结果。我试过牛顿迭代法求 y 为 0 的值,一阶导用中心差分近似替代,只需要迭代 5 次就能准确得到结果,因为 bfgs 只需要用一阶导,所以我感觉 bfgs 应该可以解决我的问题。
    0 0