簡體   English   中英

Sympy function 在符號處評估

[英]Sympy function evaluated at symbol

我對符號 Python package Sympy 有疑問。 也許我在 Sympy 中遺漏了一些明顯的工具,但我已經通讀了文檔,但沒有找到解決方案。

我的問題是g(f(y)) = g(f(x))|_(x=y)關於x的導數能否以Derivative(f(x), x)(y)的形式獲得在 Sympy? 如果是這樣怎么辦?

這是一個簡單的例子:我有一個符號 function 的一個變量,例如f(x) 我有另一個表達式g ,它調用這個 function ,輸入 arguments 由其他符號表示,即g(f(y))其中y = Symbol('y') 我用以下方法實現它:

x = Symbol('x')
f = Function('f')(x)
y = Symbol('y')
g = Function('g')(f).subs('x','y')

然后我的目標是評估 g wrt x 在 x=y 處的導數,比如
Derivative(f(x), x)(y) * Derivative(g(f), f)(f(y))

這可以大致實現
diff(g, y) = Derivative(f(y), y)*Derivative(g(f(y)), f(y))
這里的問題是,在這種情況下,術語Derivative(f(y), y)是在 y 處計算的導數。 我有關於所有輸入變量的函數導數的表達式,即在本例中為Derivative(f(x), x) ,而不是關於 y,因為它不是 f 的變量。 因此,我希望導數以Derivative(f(x), x)(y)的形式表示,以避免對所有可能使用的變量重復相同的表達式。 (為了完整起見,術語diff(g, x)=0因為 x 的任何實例都已被 y 替換。)

為了強化 g 是在 y 處計算的 x 的 function 的概念,將上面第四行的方法subs替換為evalf方法可能是正確的路徑。 但似乎 expression 只能在特定值而不是其他符號變量上進行評估。

非常感謝任何幫助和建議。

將差異包裝在Subs中似乎可行; 這是一個延遲的替換。

>>> from sympy import Subs, sin, cos
>>> from sympy.abc import x, y
>>> f, g = symbols('f g', cls=Function)
>>> Subs(g(f(x)).diff(x),x,y).subs(g,sin).subs(f,cos).doit(
... ) == Subs(sin(cos(x)).diff(x),x,y).doit()
True

暫無
暫無

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

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