如何解决为什么sympy中符号名称的字典顺序会有所不同?
考虑以下代码:
from sympy import *
q,a = symbols('q a')
y = -6*q**2 + 2*q*a**0.5 + 50*q - a
print(y)
r = solve((diff(y,q),diff(y,a)))
print(r)
结果:
2*a**0.5*q - a - 6*q**2 + 50*q
[]
from sympy import *
a,q = symbols('a q')
print(y)
y = -6*a**2 + 2*a*q**0.5 + 50*a - q
r = solve((diff(y,a),q)))
print(r)
结果:
-6*a**2 + 2*a*q**0.5 + 50*a - q
[{a: 5.00000000000000,q: 25.0000000000000}]
两者之间的唯一区别是a
和q
的角色已互换。为什么合理地认为两个功能相同的代码块在行为上有所不同?
我玩了很多。事实证明,对于此代码中的任何符号名称替换,只要在symbols('<name1> <name2>')
中提及的第一个符号的名称在字典上小于第二个符号的名称,便会找到解决方案。无论何时相反,都不会找到解决方案。我尝试了很多组合。例如,symbols('qqq qqr')
导致解决方案,而symbols('qqq qqp')
却没有解决方案。任何两个符号名称都适用。一站式提供解决方案。另一方面,你没有。
我已经搜索了sympy
文档,却找不到提及symbols()
函数提供的符号应按升序排列的约束条件。为什么会这样呢?这是怎么回事?
更新:根据@superbrain的建议,我在每种情况下都使用了代码打印y
。有趣的是,这两个结果是不同的,这可能是由于术语名称在词法上的差异所致。啊哈!那时这里可能有些东西。但是,这两个功能不是等效的吗?除非sympy
搞砸了,否则它们不是必须的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。