-2

例如

(x + y)^4 = x^4 +(4x^3)y + (6x^2)y^2 + + 4xy^3 + y^4

我正在使用 python 3.3.2,我不知道从哪里开始,我需要一些指导。我不是在要求答案,只是让这个程序工作的一般步骤。我之前做过一些其他的程序,这可能是我能做的极限。

4

2 回答 2

9

SymPy已经为您做到了:

>>> import sympy
>>> x, y = sympy.symbols("x y")
>>> formula = (x + y) ** 4
>>> formula
(x + y)**4
>>> formula.expand()
x**4 + 4*x**3*y + 6*x**2*y**2 + 4*x*y**3 + y**4

如果您需要将可视化作为带有“^”的字符串,您可以执行以下操作:

>>> str(formula.expand()).replace("**", "^")
'x^4 + 4*x^3*y + 6*x^2*y^2 + 4*x*y^3 + y^4'
于 2013-08-31T05:33:15.803 回答
0

下面的代码可以在这个网站上找到。

用法

python binomialexpansion.py 3

输出

x^3 + 3x^2y + 3xy^2 + y^3

代码

import sys
 
power = int(eval(sys.argv[1]))
strpower = str(power)
coeffs = []
 
if power == 0:
    print 1
    exit()
 
if (power+1) % 2 == 0:
    turningp = (power+1)/2
    counter = 1
else:
    turningp = (power+2)/2
    counter = 2
 
for i in range(1, power+2):
    if i == 1:
        sys.stdout.write("x^"+strpower+" + ")
        coeffs.append(1)
        continue
    if i == power+1:
        print "y^"+strpower,
        coeffs.append(1)
        break
 
    if i > turningp:
        co = coeffs[turningp-counter]
        counter = counter+1
    else:
        co = ((power-(i-2))*coeffs[i-2])/(i-1)
    
    coeffs.append(co)
    sys.stdout.write(str(co))
 
    if power-(i-1) == 1:
        sys.stdout.write("x")
    else:
        sys.stdout.write("x^"+str(power-(i-1)))
 
    if i-1 == 1:
        sys.stdout.write("y ")
    else:
        sys.stdout.write("y^"+str(i-1)+" ")
 
    sys.stdout.write("+ ")
于 2013-08-31T05:26:57.510 回答