sympy.subs()内置函数不起作用

2024-10-01 09:33:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用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)

甚至试着用它来代替一个整数,看看它能不能工作,但两者都不行

我做错了什么


Tags: 函数df规则diffsinmatrixddsubs
1条回答
网友
1楼 · 发布于 2024-10-01 09:33:02

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)

相关问题 更多 >