sympy .subs() 内置函数不起作用
sympy .subs() built-in function doesn't work
我正在尝试使用 python 实现多元链式法则,当我尝试使用内置的 sympy 函数 expr.subs() 替换其中一个元素时,我不会得到一个答案。
练习如下:
使用链式法则计算以下函数的 df/dx:
a = x^2
b = exp(a)
c = a + b
d = log(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
,因此您的替代实际上是
dfdc.subs(a+b, a+b)
那什么都不做。
为了在那里真正使用c
,做
dfdc.subs(sym.Symbol('c'), a+b)
我正在尝试使用 python 实现多元链式法则,当我尝试使用内置的 sympy 函数 expr.subs() 替换其中一个元素时,我不会得到一个答案。
练习如下:
使用链式法则计算以下函数的 df/dx:
a = x^2
b = exp(a)
c = a + b
d = log(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
,因此您的替代实际上是
dfdc.subs(a+b, a+b)
那什么都不做。
为了在那里真正使用c
,做
dfdc.subs(sym.Symbol('c'), a+b)