gpt4 book ai didi

python - 如何在 Sympy 的矩阵运算中组合多项式?

转载 作者:行者123 更新时间:2023-12-04 12:44:36 25 4
gpt4 key购买 nike

我正在做一些矩阵运算,有时涉及其条目具有恒定值的矩阵。

但是由于某种原因,即使结果很简单,我也无法通过矩阵运算将结果组合成一个多项式。例如,考虑以下情况:

from sympy.matrices import *
import sympy

x= sympy.symbol.symbols('x')

Poly_matrix = sympy.Matrix([[sympy.Poly(x, x)],[sympy.Poly(x, x)]])
constant_matrix = sympy.Matrix([[0,1]])
constant_matrix_poly = constant_matrix.applyfunc(lambda val: sympy.Poly(val, x))

# this doesn't combine them
result1 = constant_matrix * Poly_matrix
print result1
>>>> Matrix([[Poly(0, x, domain='ZZ') + Poly(x, x, domain='ZZ')]])

# even THIS doesn't combine them when I convert the constants to Polynomials
result = constant_matrix_poly * Poly_matrix
print result
>>>> Matrix([[Poly(0, x, domain='ZZ') + Poly(x, x, domain='ZZ')]])

问题在于,当我尝试提取表达式并将此结果转换为不同的多项式时,出现以下错误:
# This is where the trouble starts
sympy.Poly(result[0].as_expr(), x)
sympy.Poly(result1[0].as_expr(), x)

并且由此产生的错误是一个很长的回溯,以:
PolynomialError: Poly(x, x, domain='ZZ') contains an element of the set of generators.
更具体地说, result[0].as_expr() 有问题。因为它无法使用 as_expr() 将其转换为表达式, 即使它仍然是 Poly 类型的对象, 所以它仍然可以使用 as_expr() 的方法.

为什么这些多项式不会自动组合成一个?
或者我有其他方法可以调用 sympy.Poly(result[0].as_expr(), x)吗? ?

编辑:以下是一些具有类似错误的问题(尽管有时是由不同的原因引起的):
sympy: PolynomialError: cos(a) contains an element of the generators set
Sympy Error when using POLY with SQRT

最佳答案

如果您想要的只是特征多项式,请使用 charpoly .这比 eigenvals 更有效。 ,因为有时符号根的计算成本很高。

样本
lamda = symbols('lamda')
p = M.charpoly(lamda)
factor(p)
2
(λ - 5) ⋅(λ - 3)⋅(λ + 2)

Source

关于python - 如何在 Sympy 的矩阵运算中组合多项式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com