Python类多项式将无法正常工作,就像我期望的那样

问题描述 投票:0回答:1

为了进行练习,我们应该创建一个类的多项式,该类存储一个变量(一维)的多项式的系数,实现两个多项式的打印功能,相乘,相加和相减,将一点作为一个算子和两个进行求和实现多项式的导数和积分的方法(积分常数设置为零)。

我试图创建一个类多项式,在其中我可以创建一个具有n个系数的多项式并实现这些方法。

[当我不使用额外的类并创建p1 = np.poly1d([...])之类的多项式时,代码可以正常工作。但是,一旦我创建类Polynomials并使用我的__init__函数,则在调用其他方法时,代码将显示一些错误。

是键错误还是Polynomials object has no attribute '_variable'

我的代码:

import numpy as np

class Polynomials (np.poly1d):
    def __init__(self, coefficients):
        self.name = np.poly1d(coefficients)

    def Coefficients(self):
        return self.c

    def evaluation(self, x):
        return self(x)

    def mul(self, a):
        return np.polymul(self, a)

    def sum(self, a):
        return np.polyadd(self, a)

    def subtraction(self, a):
        return np.polysub(self, a)

    def __str__(self):
        return str(self.name)

def differentiate(self):
    return np.polyder(self)

def integrate(self):
    return np.polyint(self)


a= Polynomials([2,5,7,8])
b = Polynomials([3,5,7,1])
print (a)
print(b)
#print(a(10))
c = a.mul(b)
#print(c)

错误代码如下:

line 14, in mul
    return np.polymul(self, a)
  File "<__array_function__ internals>", line 6, in polymul
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/numpy/lib/polynomial.py", line 904, in polymul
    a1, a2 = poly1d(a1), poly1d(a2)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-               packages/numpy/lib/polynomial.py", line 1155, in __init__
    self._variable = c_or_r._variable
   AttributeError: 'Polynomials' object has no attribute '_variable'

我已经尝试测试用print(isinstance(a, np.poly1d))在其中真正创建的对象,当我在新类中创建多项式而在没有类的情况下创建它时,该对象显示为true。

因此,当我在没有类的情况下创建多项式,而在类中创建它时,为什么不能执行所有运算?我在哪里迷路了?

python numpy class polynomials
1个回答
0
投票

尝试一下:

class Polynomials (np.poly1d):
    def __init__(self, coefficients):
        super().__init__(coefficients)
        self.name = np.poly1d(coefficients)

    # ...

否则,您将永远不会执行任何poly1d初始化过程。

© www.soinside.com 2019 - 2024. All rights reserved.