为了练习,我们应该创建一个 Polynomials 类,它存储一个变量(一维)多项式的系数,实现打印函数,两个多项式的乘法、求和和减法,一个点的评估作为函子和两种方法实现多项式的导数和积分(积分常数设置为零)。

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

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

无论是 Key 错误还是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))创建了什么对象,这表明是正确的。

那么,为什么我可以使用创建的多项式执行所有操作,当我在没有类的情况下创建它并且无法执行它时,当我在类中创建它时? 我在哪里迷路了?

#1楼 票数:0 已采纳

尝试这个:

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

    # ...

否则你永远不会运行任何poly1d初始化过程。

  ask by Nanex1011 translate from so

未解决问题?本站智能推荐:

1回复

Python多项式根不准确

我试图实现的算法需要找到我用 sympy 创建的 10 次多项式的根,它看起来像这样:import sympyimport numpy as npdet = sympy.Poly(1.3339507303385e-16*z**10 + 6.75390067076469e-14*z**9 + 7.18
1回复

Numpy多项式

我正在尝试在 python 上编写 Bernstein 多项式,但是 poly1d 函数有问题。 在 Bernstein 函数中,变量是t ,但在 poly1d 函数中,默认变量是x 。 在以下代码中,我将变量称为t : 但我得到了这样的输出: 我如何解决我的第一个问题?
1回复

使用numpy/python从头开始​​多项式展开

我在不使用 Sklearn 的情况下构建多项式回归。 我现在在使用多项式展开功能时遇到了麻烦。 我有一个包含 A 列和 B 列的数据框。当我从 Sklearn 导入并运行 PolynomialFeatures(degree of 2) 时,我发现它返回 6 个不同的特征。 我知道 2 个特征变成了
1回复

在python中查找切比雪夫多项式的根

我想使用 Python 找到任意阶的 Chebysev 多项式的根。 我见过类似的勒让德多项式线程。 但是,我使用此处定义的方法构建了多项式 我尝试使用np.roots(f4) ,但收到以下错误: TypeError: float() argument must be a string or a n
1回复

在Python中从lambda提取多项式的系数

我正在研究一些线性代数并使用numpy作为参考。 我使用lambda k: numpy.linalg.det(A - k*I)来计算矩阵A的特征多项式。 这非常有效,下一步是使用numpy.roots计算表示矩阵特征值的多项式的根,问题在于numpy.roots将多项式系数作为参数。 有没有办法从l
1回复

numpypolyfit和numpy多项式

嘿,到目前为止,我使用numpy.polyfit来拟合数据,但我看到有可用的新类numpy.polynomial ,我可以在其中选择例如 Chebyshev 系列。 从文档中我知道我可以from numpy.polynomial import Chebyshev c = Chebyshev.fit(
1回复

计算多项式系数中的误差

我目前已经编写了一些代码来生成多项式来插入我拥有的几个数据集。 我现在想计算多项式系数中的误差,但不确定如何进行。 我当前的代码如下:import numpy.polynomial.polynomial as polyimport matplotlib.pyplot as pltimport num
4回复

如何拟合具有某些系数约束的多项式?

使用 NumPy 的polyfit (或类似的东西)是否有一种简单的方法来获得一个或多个系数被限制为特定值的解决方案? 例如,我们可以使用以下方法找到普通多项式拟合: 屈服 但是,如果我想要第三个系数(在上述情况下z[2] )为 1 的最佳拟合多项式怎么办? 还是我需要从头开始编写配件?