1、函數的簡單使用
用 sympy.solve() 函數來解單一方程的調用方式可以表示為 sympy.solve(表達式,符號) 。下面的代碼演示了怎樣解exp ( x ) − 3 = 0 \exp(x)-3=0exp(x)−3=0這個方程。
1 import sympy 2 from sympy import * 3 d = sympy.Symbol("d") 4 b = sympy.solve(sympy.exp(d)-3,d) 5 print(b)
可以得到log3的精確表達式。
2、遇見的問題
問題1 TypeError: can’t convert expression to float報錯
該問題是將 math 庫中的運算符用在了表達式中,如log \loglog,sin \sinsin,exp \expexp等。應該用 sympy 庫中的運算符,可以在方程表達式中用 sympy.log() 語句指定,或者去掉開頭的 import math 語句。
問題2 No algorithms are implemented to solve equation報錯
如下面的代碼所示,我們嘗試解 x + exp ( x ) + sin ( x ) − 10 = 0 這個方程。
1 import sympy 2 from sympy import * 3 d = sympy.Symbol("d") 4 b = sympy.solve(d+sympy.exp(d)+sympy.sin(d)-10,d) 5 print(b)
結果是報錯,沒有算法來解這個方程,換種說法就是不能得到解析解。我們可以用數值計算函數 sympy.nsolve() 來近似計算的到數值解。具體用法如下:
1 import sympy 2 from sympy import * 3 d = sympy.Symbol("d") 4 b=sympy.nsolve(d+sympy.exp(d)+sympy.sin(d)-10,0) 5 print(b)
運行程序可以得到結果約為1.962,十分精確。
備注:
原文鏈接:https://blog.csdn.net/weixin_44892951/article/details/106611169