我有以下
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)?
我更多地思考的是:
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))