我已经在这个问题上工作了几个小时,但是我不知道从哪里开始或做任何事情。我了解其背后的数学/逻辑,但我不知道将其很好地融入代码中。
这就是问题:
编写并测试返回两个多项式乘积的函数multiple(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)
如果有人可以帮助我,我将非常感激。在编程方面,我还是一个菜鸟,我不太了解。
最佳答案
从数学上来说,最后我们拥有的系数量(或幂)应该是第一个多项式的幂加上第二个多项式的幂,因此我们生成了一个包含多个零的列表。现在我们遍历第一个多项式的系数。在这里,我使用枚举来跟踪当前正在使用的索引。当然,这是假设每个数的幂为系数与其索引相同。因此,第2项中的数字将在x ^ 2之前。
对于多项式一的每个系数,我们遍历所有多项式二的系数(多项式二的每个系数都必须与多项式一的每个系数相乘)。产生的功效将是索引的相加,这由final_coeffs[ind1 + ind2] += coef1 * coef2
来处理。然后剩下的就是返回新的Polynomial对象。
意识到这里p1和p2是两个多项式对象。
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/