![在 Excel 中乘以多项式系数](https://linux22.com/image/1604007/%E5%9C%A8%20Excel%20%E4%B8%AD%E4%B9%98%E4%BB%A5%E5%A4%9A%E9%A1%B9%E5%BC%8F%E7%B3%BB%E6%95%B0.png)
我想要一个通用的 Excel 方法来乘以多项式。但我现在还不想求多项式的值,x 实际上是一个虚数。我知道如何在 Excel 中使用复数,我已经有一个电子表格,可以根据多项式系数求方程的值。但在电气工程中,起点通常是一组因式分解的多项式,需要先将它们相乘,然后我的电子表格才能工作。
例如,以以下内容开头:
m2*x^2 + m1*x^1 + m0*x^0 and
n2*x^2 + n1*x^1 + n0*x^0
将两者相乘可得出:
m2*n2*x^4 + (m2*n1+m1*n2)*x^3 + (m2*n0+m1*n1+m0*n2)*x^2 + (m1*n0+m0*n1)*x^1 + m0*n0*x^0
因此,给定 m2 ... m0,和 n2 ... n0
我想知道 p4 ... p0,其中:
p4 = m2*n2
p3 = m2*n1 + m1*n2
p2 = m2*n0 + m1*n1 + m0*n2
p1 = m1*n0 + m0*n1
p0 = m0*n0
希望您能看出其中的规律。当然,我希望找到一种适用于较大多项式的通用方法。
我可以用蛮力来解决它,因为我可能遇到的最大的数是四个 2 阶多项式 (x^2),但应该有一种更优雅的方法。
我宁愿不使用 Visual Basic,因为我想在完成后分享它,而且人们对 VBA 电子表格很偏执。
允许使用多行和多列来表示中间结果。我更希望将结果放在一行中,右侧是 p0 (p8 ... p0)。如果该方法自然地给出另一种格式,我相信我可以将其转换为我需要的格式。
编辑:这是一个强力解决方案。虽然不是我想要的通用解决方案,但它目前可以满足我的需求。
答案1
在评论者的启发下,我得到了一个矩阵乘法解决方案。
以下是其屏幕截图:
将每个矩阵左侧的多项式放入其列中。然后使用函数将矩阵与右侧的多项式相乘MMULT()
。中间结果列显示多项式常数(最低非零常数为 s^0)。
诀窍是编写公式来填充矩阵。它看起来像这样:
=IF(Row-Col+1 > 0, INDEX(Polynomial_1, Row-Col+1, 1), 0)
它使用矩阵两边的数字来索引多项式常数Row
。Col
一旦完成矩阵乘法,您就可以根据需要多次使用它的输出作为下一个矩阵的输入多项式。
我用了公式Chop来生成这个公式。(完整披露:我编写了 FormulaChop)。这里是输出截图的链接。这里是我为此答案创建的电子表格的下载链接。