首页 > 解决方案 > 带有矩阵变量的 Numpy 多项式

问题描述

p = np.polynomial.Polynomial((0, 0, 1))  # p(x) = x^2
x = np.array(
    [[2, 2],
     [2, 2]]
)
print(p(x))
    [[4. 4.]
     [4. 4.]]
print(x @ x)
    [[8 8]
     [8 8]]

numpy 中是否有一种方法可以处理多项式,在矩阵点对它们进行评估并获得由原点矩阵乘法产生的结果,如第二个print中一样,尽管第一个print语句的结果如何

标签: pythonnumpymatrixpolynomials

解决方案


使用库函数计算x ^ n矩阵x和整数:n

from numpy.linalg import matrix_power

x = [[2, 2], [2, 2]]
print(matrix_power(x, 2))

输出:

[[8 8]
 [8 8]]

如果您需要计算有限和1 + x + x @ x / 2 + .. + x^n / n!

from numpy.linalg import matrix_power
from math import factorial


def compute_sum(x, n):
    s = 0
    for i in range(n+1):
        s += matrix_power(x, n) / factorial(n)
    return s


x = [[2, 2], [2, 2]]
print(compute_sum(x, 3))

输出:

[[21.33333333 21.33333333]
 [21.33333333 21.33333333]]

推荐阅读