首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何打印在Python中系数已知的n次多项式的字符串表示?

如何打印在Python中系数已知的n次多项式的字符串表示?
EN

Stack Overflow用户
提问于 2019-08-21 00:54:51
回答 2查看 375关注 0票数 2

假设我有一个polynomial.How的系数,用我们用纸和笔写的通常形式来写它?例如,如果我有coefficients=1,-2,5,多项式是二次多项式,那么程序应该打印x**2-2*x+5. 1*x**2-2*x**1+5*x**0,do.It,更可取的是,程序写得对大n也有效,就像多项式的阶20或30,还有一些方法可以把x的一些值放入我设置的result.e.g.If中,在上面的例子中,它应该返回5。

到目前为止,我已经知道我要求的是符号计算,在python中有一个现成的包可以做这些,但是只使用函数,我无法洞察编写函数的逻辑,我参考了符号模块中几个函数的冗长源代码,并完全confused.Is有一个简单的方法可以做到这一点,而不是使用直接的符号数学包?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-21 01:31:08

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

代码语言:javascript
运行
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-08-21 01:15:36

对于这个任务,您必须使用python的符号模块(sympy),因为您特别希望您的输出是一个多项式表示。下面的代码应该可以完成这项工作。

代码语言:javascript
运行
复制
import sympy 
from sympy import poly

x = sympy.Symbol('x') # Create a symbol x

coefficients = [1,-2,5] # Your coefficients a python list

p1 = sum(coef*x**i for i, coef in enumerate(reversed(coefficients))) # expression to generate a polynomial from coefficients.

print p1 # print(p1), depending on your python version

这条语句:p1.subs('x',2)然后在x=2计算你的多项式'p1‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57578345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档