gpt4 book ai didi

python - 你如何在没有评估的情况下定义长符号表达式的实部/虚部?

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:01 24 4
gpt4 key购买 nike

我是 python 的新手,在使用 sympy 时遇到了问题。我定义了复杂的方程式,它们是参数 a、b 的函数,并使用 hold=true 来节省计算时间。例如,我根据其他量 A、B、C、D、E、F 定义了 g,如,

In [92]: g=sympy.MatAdd(sympy.MatMul(A, B), \
...: sympy.MatMul(C, D, hold=sympy.true), \
...: sympy.MatMul(E, F, hold=sympy.true), hold=sympy.true)

我想定义新的数量,即虚部和实部的比率。例如,alpha=Im(g)/Re(g)。我已经通过执行以下操作进行了尝试,

In [93]: alpha=sympy.im(g)/sympy.re(g)

,但我得到了错误,

In [94]: alpha=sympy.im(g)/sympy.re(g)
Traceback (most recent call last):

File "<ipython-input-94-e3054aea27cc>", line 1, in <module>
alpha=sympy.im(g)/sympy.re(g)

File "C:\Anaconda3\lib\site-packages\sympy\core\function.py", line 385, in __new__
result = super(Function, cls).__new__(cls, *args, **options)

File "C:\Anaconda3\lib\site-packages\sympy\core\function.py", line 209, in __new__
evaluated = cls.eval(*args)

File "C:\Anaconda3\lib\site-packages\sympy\functions\elementary\complexes.py", line 158, in eval
coeff = term.as_coefficient(S.ImaginaryUnit)

AttributeError: 'MatAdd' object has no attribute 'as_coefficient'

即使这成功了,我怀疑我是否愿意等待它完成。我的第一个问题是 - 如何修复第 93 行的定义,同时抑制求值?

假设这可以以某种方式完成,我想定义 f(alpha(a,b), beta(a,b)),其中 beta 的定义类似于 alpha。然后我想绘制 a 和 b 使得 f=0。我在想这样的事情会奏效,

p1=sympy.plot_implicit(f(alpha(a,b),beta(a,b)),(a,0,2.5),(b,0,4))

这是最有效的方法还是其他方法会更好?

我正在考虑使用 lambdify 来定义 g_num,

g_num=sympy.lambdify((a,b), g, 'numpy')

然后定义一个lambda函数

lambda a,b,delta : f(alpha(a,b), beta(a,b))

但后来我不知道如何用这种方法获得隐式图 f(a,b)=0。

最佳答案

hold=True 不是真正的 SymPy 选项。你想要 evaluate=False。请注意,MatMul 默认情况下不会计算。

reimpresently仅定义为对标量而不是矩阵进行操作。这就是为什么你得到你得到的错误。使用 re(g, evaluate=False) 应该有效,因为来自 NumPy 的 lambdified re 只会在数组上广播。

关于python - 你如何在没有评估的情况下定义长符号表达式的实部/虚部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39410579/

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