繁体   English   中英

sympy.subs() 内置 function 不起作用

[英]sympy .subs() built-in function doesn't work

我正在尝试使用 python 实现多元链规则,当我尝试使用内置的 sympy function expr.subs() 替换其中一个元素时,我不会得到答案。

练习过程如下:

使用链式法则计算以下 function 的 df/dx:

一 = x^2

b = exp(a)

c = a + b

d = 日志(c)

e = 罪恶(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

结果 function.subs() 没有替换任何东西,我不知道为什么,我尝试用其他方式替换它来编写 function,例如:

dfdc.subs({c : (a + b)})
dfdc.subs(c, a + b)

甚至试图将它替换为 integer 以查看它是否可以工作,但也没有。

我究竟做错了什么?

c表达式中的dfdc是在设置c=a+b之前创建的。 所以它在dfdc c 然而,当你想做你的subs时, c符号被声明为c=a+b ,所以你的替代品真的是

dfdc.subs(a+b, a+b)

那什么都不做。

为了在那里真正使用c ,做

dfdc.subs(sym.Symbol('c'), a+b)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM