python求多项式的和
时间: 2024-01-10 08:20:07 浏览: 74
假设有 $n$ 个多项式,每个多项式的系数分别为 $a_{i,0},a_{i,1},...,a_{i,m_i}$,则它们的和为:
$$
\begin{aligned}
f(x) &= \sum_{i=1}^n \left(a_{i,0} + a_{i,1}x + \cdots + a_{i,m_i}x^{m_i}\right) \\
&= \sum_{j=0}^{\max\{m_i\}}\left( \sum_{i=1}^n a_{i,j}x^j\right)
\end{aligned}
$$
因此,我们只需要将每个多项式按照次数合并系数即可。下面是 Python 的代码实现:
```python
def poly_sum(polys):
"""
polys: 一个列表,每个元素是一个多项式的系数列表,如 [1, 2, 3] 表示 1 + 2x + 3x^2
"""
max_degree = max(len(poly) - 1 for poly in polys) # 计算最高次数
coeffs = [0] * (max_degree + 1) # 初始化系数列表
for poly in polys:
for i, coeff in enumerate(poly):
coeffs[i] += coeff # 合并系数
return coeffs
```
例如,我们要求 $f(x) = (1 + 2x + 3x^2) + (2 + x) + (3x - 1)$,则可以这样调用函数:
```python
polys = [[1, 2, 3], [2, 1], [0, 3, -1]]
coeffs = poly_sum(polys)
print(coeffs) # 输出 [3, 6, 2]
```
即 $f(x) = 3 + 6x + 2x^2$。
阅读全文