gpt4 book ai didi

python - 显示一个矩阵,在 sympy 中放置一个公因数

转载 作者:行者123 更新时间:2023-12-04 00:37:21 28 4
gpt4 key购买 nike

我想显示一个矩阵,在 sympy 中进行矩阵计算后将提取的公因子放在矩阵外部。

我写了下面的代码。

from sympy import *
a = symbols("a")
b = symbols("b")

A = Matrix([exp(I*a),exp(I*a)*exp(I*b)])
print simplify(A)

我得到了低于输出。
Matrix([
[ exp(I*a)],
[exp(I*(a + b))]])

但是,我想低于输出。
exp(I*a)*Matrix([
[ 1],
[exp(I*b)]])

我尝试了 collect(A,exp(I*a)) 并得到了跟随错误。
Traceback (most recent call last):

File "<ipython-input-65-834f4c326df4>", line 1, in <module>
runfile('C:/Anaconda2/Programs/test/untitled44.py', wdir='C:/Anaconda2/Programs/test')

File "C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 699, in runfile
execfile(filename, namespace)

File "C:\Anaconda2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 74, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)

File "C:/Anaconda2/Programs/test/untitled44.py", line 14, in <module>
collect(A,exp(I*a))

File "C:\Anaconda2\lib\site-packages\sympy\simplify\simplify.py", line 451, in collect
if expr.is_Mul:

File "C:\Anaconda2\lib\site-packages\sympy\matrices\matrices.py", line 3084, in __getattr__
"%s has no attribute %s." % (self.__class__.__name__, attr))

AttributeError: MutableDenseMatrix has no attribute is_Mul.

我知道一种提取矩阵元素的公因子的方法,例如跟随链接。
https://github.com/sympy/sympy/issues/8442

但这不是我的愿望。

我应该怎么做?

最佳答案

我不认为Sympy为您想要的任务提供一个函数。但是,您可以根据 Mathematica SE ( link ) 中提出的类似问题的公认答案中提出的方法手动执行此操作。

这个想法是通过gcd提取多项式元素的公因数。然后使用 MatMulevaluate=False选项以限制 Sympy从执行标量矩阵乘法。

import sympy as sp

a, b = sp.symbols('a, b')

A = sp.Matrix([sp.exp(sp.I * a), sp.exp(sp.I * a) * sp.exp(sp.I * b)])
g = sp.gcd(tuple(A))

A_v2 = sp.MatMul(g,(A/g),evaluate = False)
print(A_v2)

exp(I*a)*Matrix([
[ 1],
[exp(I*b)]])

关于python - 显示一个矩阵,在 sympy 中放置一个公因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691325/

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