在SymPy中,有没有一种适当的方法将复合希腊字母设置为符号?

12

虽然听起来有些傻,但我想在SymPy中使用复合希腊字母作为单个符号。例如,如果在Jupyter笔记本中输入以下内容:

import sympy as sp
ab = sp.Symbol("alpha beta")
sp.pprint(ab)

ab在符号计算中的表现符合预期,但输出结果为:

alpha beta

我希望输出结果为:

α⋅β

在进行操作后,我可以使用 subs 命令,像这样:

ab.subs({ab : sp.Symbol("alpha") * sp.Symbol("beta")})

但这很繁琐而且不可取。


在每个字符之间添加 * 行不行? >>> pprint(alpha * beta) α⋅β - evan.oman
如果我对那个表达式关于 alpha 求导,我会得到 beta。但我想要得到 0。 - Andrew Franklin
2个回答

13

符号名称可以是任何字符串,但是将希腊字母名称自动转换为打印的希腊字母并不适用于所有输入。我猜它没有尝试在空格中分割字符串。

如果您正在使用Jupyter笔记本,则只需将符号名称设置为所需内容的LaTeX即可。

ab = Symbol(r'\alpha\cdot\beta')

(不要忘记在字符串前面加上r,以便Python不会吃掉反斜杠)

如果您使用纯文本输出,您可以将其设置为Unicode字符串。这在Jupyter笔记本中也应该可以工作,尽管呈现的方式会略有不同,因为它将呈现实际的Unicode字符而不是LaTeX。

ab = Symbol(u'α⋅β')

正是我所需要的!谢谢! - Andrew Franklin

-1

在sympy中将任何Unicode字母设置为符号的正确方法是 - 编写symbols(u'任何您想要复制粘贴的Unicode')

这里是一个快照:

unicode in sympy symbol

代码:

ab = symbols(r'\alpha\cdot\beta')
print(ab)
a = symbols(u'α')
b = symbols(u'β')
bangla = symbols(u'ম')
print(a)
print(b)
print(bangla)

我在我的快照中删掉了那些行,因为它目前无法工作并且得分较高


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接