python - 如何使用循环和调用另一个函数在 Python 中将两个多项式相乘?

标签 python class loops polynomial-math multiplication

我已经在这个问题上工作了几个小时,但我不知道从哪里开始或做任何事情。我了解其背后的数学/逻辑,但我不知道如何将其很好地放入代码中。

问题是:

  1. 编写并测试一个返回两个多项式乘积的函数multiply(self, other)。使用一个循环(for 或 while);在其中调用上一个问题中的 *multiply_by_one_term*。

这是我一开始设置的,我不记得它叫什么了:

class Polynomial:
    def __init__(self, coeffs=[0]):
        self.coeffs = coeffs

这是我做的测试:

def multiply(self, other):
    """
      >>> p1 = Polynomial([1, 2])
      >>> p2 = Polynomial([3, 4])
      >>> p1.multiply(p2).coeffs
      [3, 10, 8]
    """

这是我需要调用的函数:

def multiply_by_one_term(self, a, exp):
    """       
      >>> p = Polynomial([2, 1, 3])
      >>> p.multiply_by_one_term(3, 2).coeffs
      [6, 3, 9, 0, 0]
      >>> p = Polynomial([2, 1, 3])
      >>> p.multiply_by_one_term(3, 0).coeffs
      [6, 3, 9]
    """

    return Polynomial([a*i for i in self.coeffs] + [0]*exp)

如果有人能帮助我,我将不胜感激。在编程方面,我仍然是一个菜鸟,我不是很了解。

最佳答案

从数学上讲,我们最终得到的系数数量(或幂)应该是第一个多项式的幂加上第二个多项式的幂,因此我们生成了一个包含那么多零的列表。现在我们迭代第一个多项式的系数。在这里,我使用 enumerate 来跟踪我们当前所在的索引。这当然是假设每个数字的系数的幂与其索引相同。所以第 2 项中的数字将在 x^2 之前。

对于多项式一的每个系数,我们遍历多项式二的所有系数(多项式二的每个系数都需要与多项式一的每个系数相乘)。得到的幂将是索引的相加,这由 final_coeffs[ind1 + ind2] += coef1 * coef2 处理。然后剩下的就是返回新的 Polynomial 对象。

意识到这里的 p1 和 p2 是两个 Polynomial 对象。

def multiply(p1, p2):
    final_coeffs = [0] * (len(p2.coeffs)+len(p1.coeffs)-1)
    for ind1, coef1 in enumerate(p1.coeffs):
        for ind2, coef2 in enumerate(p2.coeffs):
            final_coeffs[ind1 + ind2] += coef1 * coef2
    return Polynomial(final_coeffs)

关于python - 如何使用循环和调用另一个函数在 Python 中将两个多项式相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116230/

相关文章:

python - 遍历文件夹中的文件

python - 按两个字段对二维列表进行排序

python - 使用 Python 和 %s 运算符将 Excel 工作表中的值添加到 MySQL 表

Javascript for 循环无法正常工作?

python - Panda 的 DataFrame 双转置将数字类型更改为对象

c# - 是否有必要在 C# 中至少有一个类

c++ - 我如何告诉编译器有一些未定义但会结构化的结构?

python - 帮助开发人员更快阅读类层次结构的工具

java - 如何将唯一 ID、ID 组合映射到 Java 中清晰的编号行

java - 需要将 ArrayList 中的整数存储在尽可能少的容器中