在 sympy 中使用链式法则时,替代将不起作用

问题描述 投票:0回答:1

我有以下

SymPy
脚本

from sympy import Function, symbols, diff, cos
x, y = symbols('x y') 
f, g = symbols("f g", cls=Function)
g = g(x)
f =  f(x + g) # function composition here
dfdx = diff(f,x)
dfdx

这会产生:

我想用 cos(x) 替换 f(x) (或者如果您更喜欢 f(xi_1) = cos(xi_1),无论什么都可以)。 但这不起作用。

这就是我正在做的事情:

dfdx.subs([(f, cos(x))])

结果是完全相同的表达式。一切都没有改变。

我也尝试过

dfdx.replace(f, cos(x))

结果又是完全一样的。没有什么变化。 替换后,如何在表达式中得到 cos(x) 而不是 f(x)?

python sympy
1个回答
0
投票

我更多地思考的是:

In [46]: f1=f(x+g(x))  

我在这个表达中使用

g(x)
,而不是你的
g=g(x)

In [47]: dfdx = diff(f1,x)    
In [48]: dfdx
Out[48]: 
(Derivative(g(x), x) + 1)*Subs(Derivative(f(_xi_1), _xi_1), _xi_1, x + g(x))
    
In [50]: dfdx.subs({f:cos})
Out[50]: 
(Derivative(g(x), x) + 1)*Subs(Derivative(cos(_xi_1), _xi_1), _xi_1, x + g(x))

In [51]: dfdx.subs({g:cos})
Out[51]: 
(Derivative(cos(x), x) + 1)*Subs(Derivative(f(_xi_1), _xi_1), _xi_1, x + cos(x))

你正在努力做

In [52]: dfdx.subs({f1:cos})
Out[52]: 
(Derivative(g(x), x) + 1)*Subs(Derivative(f(_xi_1), _xi_1), _xi_1, x + g(x))
© www.soinside.com 2019 - 2024. All rights reserved.