Python class 多项式不起作用,就像我期望的那样
Python class Polynomials won't work, like I expect it to work
为了练习,我们应该创建一个class Polynomials,它存储一个变量(1维)的多项式的系数,实现两个多项式的打印功能,乘法,求和和减法,评估在一个点作为函子和两种实现多项式的导数和积分的方法(积分常数设置为零)。
我尝试创建一个 Class 多项式,我可以在其中创建一个具有 n 个系数的多项式并实现这些方法。
当我不使用额外的 class 并创建像 p1 = np.poly1d([...])
这样的多项式时,代码就可以正常工作。但是,一旦我创建 class 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'
我已经尝试测试,当我在新的 class 中创建多项式时,以及当我在没有 Class.
那么,为什么我在没有 class 的情况下创建的多项式可以执行所有操作,而在 class 中创建它却无法执行?
我哪里迷路了?
试试这个:
class Polynomials (np.poly1d):
def __init__(self, coefficients):
super().__init__(coefficients)
self.name = np.poly1d(coefficients)
# ...
否则你永远不会运行任何poly1d
初始化程序。
为了练习,我们应该创建一个class Polynomials,它存储一个变量(1维)的多项式的系数,实现两个多项式的打印功能,乘法,求和和减法,评估在一个点作为函子和两种实现多项式的导数和积分的方法(积分常数设置为零)。
我尝试创建一个 Class 多项式,我可以在其中创建一个具有 n 个系数的多项式并实现这些方法。
当我不使用额外的 class 并创建像 p1 = np.poly1d([...])
这样的多项式时,代码就可以正常工作。但是,一旦我创建 class 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'
我已经尝试测试,当我在新的 class 中创建多项式时,以及当我在没有 Class.
那么,为什么我在没有 class 的情况下创建的多项式可以执行所有操作,而在 class 中创建它却无法执行? 我哪里迷路了?
试试这个:
class Polynomials (np.poly1d):
def __init__(self, coefficients):
super().__init__(coefficients)
self.name = np.poly1d(coefficients)
# ...
否则你永远不会运行任何poly1d
初始化程序。