标签:python scipy sympy symbolic-math
我正在研究一个带有电路模拟器ahkab的应用程序,长话短说我需要用1j * w代替一些方程中的laplace变量s.对我来说,使用符号名称而不是符号本身来执行此替换和其他替换更方便.我遇到了一些奇怪的行为.
如果你这样做
>>> x = Symbol('x')
>>> y = Symbol('y')
>>> expr = x + y
x + y
>>> expr.subs('x', 'w')
w + y
这似乎像我期望的那样有效.问题来自于此处使用complex = True声明符号
>>> s = Symbol('s', complex = True)
>>> y = Symbol('y')
>>> expr = s + y
s + y
>>> expr.subs(s, 'w') #Works as expected
w + y
>>> expr.subs('s', 'w') #Has no effect, this is my problem.
s + y
我无法在文档中以这种方式找到有关替换的信息.对我来说,这似乎是一个错误,但我不知道应该是什么行为.
解决方法:
subs调用同意它的论点.例如,请参见https://github.com/sympy/sympy/blob/master/sympy/core/basic.py#L845.这意味着字符串将转换为符号,但是sympify无法知道您希望将字符串转换为具有非默认假设的符号.唯一的方法是实际传入符号.请注意,具有不同假设的符号不被视为相等.
In [1]: from sympy import Symbol
In [2]: x = Symbol('s')
In [3]: y = Symbol('s')
In [4]: x == y
Out[4]: True
In [5]: y = Symbol('s', complex=True)
In [6]: x == y
Out[6]: False
标签:python,scipy,sympy,symbolic-math 来源: https://codeday.me/bug/20190623/1273622.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。