Numpy Полином с матричной переменной - PullRequest
0 голосов
/ 08 апреля 2020
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 , несмотря на результат первого печать выписка

1 Ответ

0 голосов
/ 18 апреля 2020

Для вычисления 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]]
...