我有一个简单的方程,例如 (f(t) * g(t))^a
,其中 a
是参数,f
> 和 g
是 t 的函数。我试图复制的方法是
根据
t
对表达式进行微分,该表达式应该是具有f(t)、g(t)、f'(t)
的表达式,和‘g’(t)。在上面的简单示例中,结果应该是a * (f(t) * g(t))**(a - 1) * (f'(t) * g(t) + f(t) * g'(t))
现在,我们使用这个特定问题(经济学问题)的一些知识,其中仅在一个特定的稳态值,我们知道
f(t )
和g(t)
。假设它们是f(tss) = 1
和g(tss) = 100
,其中tss
是稳态值,我将其'将任意设置为tss = 7
。这些不是 f 和 g 的一般函数形式。代入这些值后,我们就得到了一个包含两个未知数的方程:
f'(tss)
和g'(tss)
的值。在这一点上,它们是否是衍生品并不重要;重要的是。它们只是未知数,我还有其他方程,当与这个方程结合时,我可以得到一个非线性系统,我可以使用 scipy.optimize.fsolve 或 sympy 的求解器之一来求解该系统。 p>
问题是,我陷入了步骤 1 和 2。下面的代码似乎没有正确替换中的值。
from sympy import *
t = symbols('t')
a = symbols('a')
f, g = symbols('f g', cls=Function)
eq = (f(t) * g(t))**a
eq_diff = eq.diff(t)
output = eq_diff.evalf(subs={f:1, g:100, a:0.5})
output
它根本不替换这些值。我做错了什么?
再说一次,这只是一个简单的数学例子,但它很好地演示了这个问题。
最佳答案
你可以这样做:
fd, gd = symbols('f_d, g_d') #values of steady-state derivatives
output.subs({f(t).diff(t):fd, g(t).diff(t):gd, f(t):1, g(t):100, a:Rational(1,2)})
5*f_d + g_d/20
关于python - 为什么 Sympy 会错误地替换值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40623654/