gpt4 book ai didi

python - 如何打印 n 次多项式的字符串表示形式,其系数在 Python 中已知?

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:43 26 4
gpt4 key购买 nike

假设我有一个多项式的系数。如何以我们用笔和纸写的通常形式来写它?例如如果我有系数 = 1,-2,5 并且多项式是二次多项式,那么程序应该打印 x**2-2*x+5。
1*x**2-2*x**1+5*x**0
也可以。最好编写的程序也适用于大 n,例如 20 或 30 阶多项式的,还有一些方法可以将 x 的一些值放入结果中。例如,如果我设置 x=0,在上面提到的示例中它应该返回 5。

到目前为止,我已经知道我要的是符号计算,并且在 python 中有一个现成的包叫做 sympy 来做这些,但是仅仅使用这些函数,我无法深入了解编写函数的逻辑,我引用了 sympy 模块中几个函数的冗长源代码,完全搞糊涂了。有没有一种简单的方法可以在不使用直接符号数学包的情况下做到这一点?

最佳答案

这是一个可以运行的程序,无需使用外部包。我定义了一个 Poly 类,它有两种方法:1) 求值 2) 打印多项式。

class Poly():
def __init__(self, coeff):
self.coeff = coeff
self.N = len(coeff)

def evaluate(self, x):
res = 0.0
for i in range(self.N):
res += self.coeff[i] * (x**(self.N-i-1))
return res

def printPoly(self):
for i in range(self.N):
if i == self.N-1:
print("%f" % (abs(self.coeff[i])))
else:
if self.coeff[i] != 0.0:
print("%f * x**%d" % (abs(self.coeff[i]), self.N-i-1), end='')
if self.coeff[i+1] > 0:
print(" + ", end='')
else:
print(" - ", end='')

p = poly([1,-2,5]) # creating the polynomial object.
p.printPoly() # prints: 1.0 * x**2 - 2.0 * x**1 + 5
print(p.evaluate(0.0)) # prints: 5.0

关于python - 如何打印 n 次多项式的字符串表示形式,其系数在 Python 中已知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57578345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com