grainBdr.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:Graphene 作者: ashivni 项目源码 文件源码
def lowStrainApproximation(l1,l2,ep_max=0.0001,d_start=1,d_fac=2):
    """
    Find r1, r2 such that abs(0.5*(l1*r1 - l2*r2)/min(l2*r2,l1*r1)) < ep_max
    """

    ep = 1.0    # strain
    d = d_start
    while abs(ep) > ep_max:
        r1 = Fraction(l2/l1).limit_denominator(d).numerator
        r2 = Fraction(l2/l1).limit_denominator(d).denominator
        if r1 > d:
            r2 = Fraction(l1/l2).limit_denominator(d).numerator
            r1 = Fraction(l1/l2).limit_denominator(d).denominator
        if r1 > d:
            print (l1, l2)
            raise Exception('Cannot find good approximation')
        if r2 == 0 or r1 == 0:
            d *= d_fac
        else:
            ep = 0.5*(l1*r1 - l2*r2)/min(l2*r2,l1*r1)
            if abs(ep) > ep_max:
                d *= d_fac

    return r1, r2
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号