我正在尝试使用Karatsuba算法实现将2个多项式相乘的代码,我发现此代码可以使用kartasuba方法对2个整数进行相乘,但是我无法对其进行编辑以使其能够包含2个多项式方程。
下面的代码可以计算出两个整数的乘积,例如x = 55,y = 10将返回550
需要对其进行编辑以乘以2多项式,例如x = [5,5],即5X + 5。 y = [1,0]是X,函数应该返回[5,5,0],即5X ^ 2 + 5X
def karatsuba(x,y):
# Set B = 10
B = 10
# Recursion base case
if x < 10 or y < 10:
return x*y
# m set to be length of x or y, whichever is maximum
m = max(int(log10(x)+1), int(log10(y)+1))
# check whether m is even. If odd, set m lower by 1
if m % 2 != 0:
m -= 1
m_2 = int(m/2)
a, b = divmod(x, B**m_2)
c, d = divmod(y, B**m_2)
ac = karatsuba(a,c)
bd = karatsuba(b,d)
ad_bc = karatsuba((a+b),(c+d)) - ac - bd
return ((ac*(10**m)) + bd + ((ad_bc)*(10**m_2)))