2017-01-13 48 views
1

我目前正在使用Sympy 1.0和Python 2.7,我的目標是用符號替換表達式中的每個數字參數。Sympy:在表達式中替換「-1」?

例如:

2 * x + 3 * y - 10 * z -> a * x + b * y - c * z 

到目前爲止,我用expression.atoms(Number)獲得數值參數列表中,以後取代它們或者使用.subs或寫信一切爲字符串並使用.replace。不過,我現在面臨的問題與表達式,如:

expression = sympy.simpify("x - z") 

哪裏-z實際上是-1 * z如果我分析表達式樹......但-1沒有的expression.atoms(Number)結果中出現,所以我不能代替它。

即使將表達式轉換爲字符串,然後使用.replace也沒有什麼幫助,因爲-1 * z始終寫爲-z

可能有一些解決方案,我忽略了,但到目前爲止,我卡住了。你可以幫我嗎?預先感謝您的時間。

+3

你確定嗎? 'sympy.simplify(' - x')。atoms()'返回給我{-1,x}' –

+1

你是對的:我第一次嘗試使用'subs'時可能犯了個錯誤。我用'subs'重試。剛纔,它的工作完美無瑕。 – Alberto

+0

你說得對,我會這麼做。 – Alberto

回答

1

事實上,事實證明,我可能做了一個虛無error error的錯誤,當我第一次嘗試使用.subs;正如帕特里克在評論中指出的,.subs在這種情況下完美運作。