【问题标题】:Yun's algorithm云氏算法
【发布时间】:2018-12-17 10:49:08
【问题描述】:

我想尝试实现Yun's algorithm 以实现多项式的无平方因式分解。来自维基百科(f 是多项式):

a0 = gcd(f, f'); b1 = f/a0; c1 = f'/a0; d1 = c1 - b1'; i = 1
repeat
ai = gcd(bi, di); bi+1 = bi/ai; ci+1 = di/ai; i = i + 1; di = ci - bi'
until b = 1

但是,我不确定第二步。我想将它用于具有整数系数的多项式(不需要单元或原语)。是否可以仅使用整数实现除法b1 = f/a0

我找到了synthetic division的代码:

def extended_synthetic_division(dividend, divisor):
    '''Fast polynomial division by using Extended Synthetic Division. Also works with non-monic polynomials.'''
    # dividend and divisor are both polynomials, which are here simply lists of coefficients. Eg: x^2 + 3x + 5 will be represented as [1, 3, 5]

    out = list(dividend) # Copy the dividend
    normalizer = divisor[0]
    for i in xrange(len(dividend)-(len(divisor)-1)):
        out[i] /= normalizer # for general polynomial division (when polynomials are non-monic),
                             # we need to normalize by dividing the coefficient with the divisor's first coefficient
        coef = out[i]
        if coef != 0: # useless to multiply if coef is 0
            for j in xrange(1, len(divisor)): # in synthetic division, we always skip the first coefficient of the divisor,
                                              # because it is only used to normalize the dividend coefficients
                out[i + j] += -divisor[j] * coef

    # The resulting out contains both the quotient and the remainder, the remainder being the size of the divisor (the remainder
    # has necessarily the same degree as the divisor since it is what we couldn't divide from the dividend), so we compute the index
    # where this separation is, and return the quotient and remainder.
    separator = -(len(divisor)-1)
    return out[:separator], out[separator:] # return quotient, remainder.

我的问题是out[i] /= normalizer。对于 Yun 的b1 = f/a0,它是否总是适用于整数(地板)除法?是不是总是可以分割f/gcd(f, f')out[separator:](余数)是否总是为零?

【问题讨论】:

    标签: math polynomial-math polynomials factorization


    【解决方案1】:

    p/GCD(p, p') 中的除法将始终有效(即“精确”,Z 中没有余数)这一事实来自 GCD 的定义。对于任何多项式pq,它们的GCD(p,q) 正好除以pq。这就是为什么它被称为GCDGreatest Common Divisor

    pq最大公约数 是多项式 dpq 整除,因此 p 和 @987654337 的每个公约数@也除d

    附:在更专业的https://math.stackexchange.com/ 上提出这些纯数学问题更有意义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多