我正在編寫一個程序,要求用戶輸入表達式。此表達式作爲字符串輸入,並使用parse_expr
轉換爲Sympy表達式。然後我需要獲取用戶輸入的表達式的偏導數。但是,diff
在我測試的每個表達式都返回0。解析的SymPy表達式的衍生值始終爲0
例如,如果用戶輸入a*exp(-b*(x-c)**(2))
,使用下面的代碼,diff
返回0
當它應該(據我知道diff
)取偏導數時相對於x
返回2*a*b*(c - x)*exp(-b*(x - c)**2)
:
a, b, c, x = symbols('a b c x', real=True)
str_expr = "a*exp(-b*(x-c)**(2))"
parsed_expr = parse_expr(str_expr)
result = diff(parsed_expr, x)
print(result) # prints 0
我在做什麼錯?
它不是代替'symbol'->'Symbol'使它工作的替代品。這是「真實=真」的省略。 'Symbol('x')'恰好等於'x'的'Symbol'對象,當'parse_expr'沒有在參數中傳遞時隱式創建',如[我的答案]中所述(http://stackoverflow.com /一個/648265分之43554892)。 –
所以,你只是幸運,這不是正確的做法。 –