簡體   English   中英

為什么sympy.diff沒有像預期的那樣區分交感多項式?

[英]Why does sympy.diff not differentiate sympy polynomials as expected?

我試圖找出為什么sympy.diff沒有像預期的那樣區分sympy多項式。 通常情況下, sympy.diff如果一個象征性的變量定義和多項式使用沒有定義工作得很好sympy.Poly 但是,如果使用sympy.Poly定義函數,則sympy.diff似乎不會實際計算導數。 下面的代碼示例顯示了我的意思:

import sympy as sy

# define symbolic variables
x = sy.Symbol('x')
y = sy.Symbol('y')

# define function WITHOUT using sy.Poly
f1 = x + 1
# define function WITH using sy.Poly
f2 = sy.Poly(x + 1, x, domain='QQ')

# compute derivatives and return results
df1 = sy.diff(f1,x)
df2 = sy.diff(f2,x)
print('f1:  ',f1)
print('f2:  ',f2)
print('df1:  ',df1)
print('df2:  ',df2)

這將打印以下結果:

f1:   x + 1
f2:   Poly(x + 1, x, domain='QQ')
df1:   1
df2:   Derivative(Poly(x + 1, x, domain='QQ'), x)

為什么sympy.diff不知道如何區分sympy.Poly版本的多項式? 有沒有辦法區分sympy多項式,或者將sympy多項式轉換為允許區分的形式?

注意 :我嘗試使用不同的域(即domain='RR'而不是domain='QQ' ),輸出不會改變。

這似乎是一個錯誤。 您可以通過直接在Poly實例上調用diff來解決它。 理想情況下,從頂級sympy模塊調用函數diff應該產生與調用方法diff相同的結果。

In [1]: from sympy import *

In [2]: from sympy.abc import x

In [3]: p = Poly(x+1, x, domain='QQ')

In [4]: p.diff(x)
Out[4]: Poly(1, x, domain='QQ')

In [5]: diff(p, x)
Out[5]: Derivative(Poly(x + 1, x, domain='QQ'), x)

In [6]: diff(p, x).doit()
Out[6]: Derivative(Poly(x + 1, x, domain='ZZ'), x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM