[待]limit_denominator算法

本文探讨了limit_denominator算法,通过实例分析了数值周期性和优化思路。作者注意到在某些数值范围内可能存在特定规律,并提出在大数量级上优化算法的可能性,同时提到了0.25和0.75可能的真空期。文章还讨论了异常情况的处理和简化流程的方法,强调数学知识在优化算法中的关键作用。
摘要由CSDN通过智能技术生成

在看Fraction的时候,看到了limit_denominator的方法,很感兴趣!
按照概念写一个代码是很简单的,暴力的从头到尾,但是应该还有优化的空间!
全文还不完善,可以当作抛砖引玉,毕竟如果深度的优化,会涉及高数的知识,玩不起~
日后会陆续完善!

2021/3/17 第二次

import random,math,fractions
l1=[]
l2=[]
s=set()
for i in range(1000):
    x=random.randint(1,10000)/10000
    if x<0.001:continue
    if 0.999<x:continue
    m=float('inf')
    p=math.ceil(1000*x)
    if p/x>1000:p-=1
    n=1000
    nn=n%1
    if nn<=0.5:
        n=math.floor(n)
    elif nn>=0.5:
        n=math.ceil(n)
    else:continue
    if n>1000:continue
    s.add(n)
    if (tt:=(math.ceil(x*n)/n-x))<=m:
        m=tt
        t=n
    if (tt:=(x-math.floor(x*n)/n))<=m:
        m=tt
        t=n
    n=p/x
    nn=n%1
    if nn<=0.5:
        n=math.floor(n)
    elif nn>=0.5:
        n=math.ceil(n)
    else:continue
    if n>1000:continue
    s.add(n)
    if (tt:=(math.ceil(x*n)/n-x))<=m:
        m=tt
        t=n
    if (tt:=(x-math.floor(x*n)/n))<=m:
        m=tt
        t=n
    
    for i 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值