我试图用python实现多元链规则,当我试图用内置的sympy函数expr.subs()替换其中一个元素时,我不会得到答案
演习内容如下:
使用链规则计算以下函数的df/dx:
a=x^2
b=exp(a)
c=a+b
d=对数(c)
e=sin(c)
f=d+e 这是代码:
a, b, c, d, e, f = sym.symbols('a b c d e f')
f = d + e
dfd = sym.diff(f, d)
dfe = sym.diff(f, e)
df = sym.Matrix([[dfd, dfe]])
d = sym.log(c)
e = sym.sin(c)
ddc = sym.diff(d)
dde = sym.diff(e)
dd = sym.Matrix([[ddc],[dde]])
dfdd = df@dd
c = a + b
dca = sym.diff(c, a)
dcb = sym.diff(c, b)
dc = sym. Matrix([[dca, dcb]])
dfdc = dfdd@dc
a = x**2
b = sym.exp(a)
result = dfdc.subs(c, (a + b))
result
结果函数.subs()没有替换任何东西,我不知道为什么,我尝试用其他方法来替换它来编写函数,如:
dfdc.subs({c : (a + b)})
dfdc.subs(c, a + b)
甚至试着用它来代替一个整数,看看它能不能工作,但两者都不行
我做错了什么
dfdc
表达式中的c
是在设置c=a+b
之前创建的。所以它仍然在dfdc
中显示为c
。但是,当您要执行subs
时,c
符号被声明为c=a+b
,因此您的替换项实际上是但那没用
为了在那里真正使用
c
,请执行以下操作相关问题 更多 >
编程相关推荐