【发布时间】:2019-12-26 21:10:21
【问题描述】:
我看到sympy 的问题已经得到解答,但我正在尝试在没有第三方库的玩具项目上编写链式规则的实现以用于教育目的。
基本上链式规则是k'(x) = f'(g(x)) * g'(x) where k(x) = f(g(x))
我有以下功能:
def g(x):
return x**3 + 2
def f(x):
return x**2 + 7
def de(fn, x, step):
t1 = fn(x)
t2 = fn(x+step)
return (t2 - t1) / step
def chain(x):
return f(g(x))
def de_chain(x, step):
d_g = de(g, x, step)
gres = g(x)
d_f_g = de(f, gres, step)
return d_g * d_f_g
问题是当我为x=1.2 和step=2.6 评估de_chain 和de(chain) 时,我得到de(chain) = 205.5446... 和de_chain = 1238.6639...。
这里出了点问题,因为与k'(x) = g'(x) + f'(x) where k(x) = g(x) + f(x) 中的加法和减法相同的方法
结果非常非常接近。我做错了什么?
谢谢
【问题讨论】:
标签: python math derivative chain calculus