[英]Differentiating in SymPy
我正在尝试使用 SymPy 来区分以下等式:
log(n)**k
import math, sympy
from sympy.abc import x, y, n, k
print(sympy.diff(math.pow(math.log(n, 2), k), n))
但是我从 SymPy 得到了can't convert expression to float
错误。 我做错了什么?
runfile('C:/Users/towis/.spyder-py3/temp.py', wdir='C:/Users/towis/.spyder-py3')
Traceback (most recent call last):
File "<ipython-input-19-3728a7ec31a4>", line 1, in <module>
runfile('C:/Users/towis/.spyder-py3/temp.py', wdir='C:/Users/towis/.spyder-py3')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/towis/.spyder-py3/temp.py", line 6, in <module>
print(sympy.diff(math.pow(math.log(n,2), k), n))
File "C:\ProgramData\Anaconda3\lib\site-packages\sympy\core\expr.py", line 226, in __float__
raise TypeError("can't convert expression to float")
TypeError: can't convert expression to float
正如@ForceBru 所说,使用 SymPy 函数:
>>> diff(log(n, 2)**k, n)
k∗(log(n)/log(2))∗∗k/(n∗log(n))
您可以通过以下方式更正您提供的代码:
import sympy
from sympy.abc import x, y, n, k
print(sympy.diff(sympy.Pow(sympy.log(n, 2),k), n))
如前所述,您需要使用 sympy Fucntions:
import sympy as sp
from sympy.abc import x, y, n, k
print(sp.diff(sp.log(n,2)**k,n)
那应该这样做
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.