繁体   English   中英

SymPy 中的差异化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM