python - 为什么 Sympy 会错误地替换值?

标签 python sympy equation solver

我有一个简单的方程,例如 (f(t) * g(t))^a,其中 a 是参数,f > 和 g 是 t 的函数。我试图复制的方法是

  1. 根据t对表达式进行微分,该表达式应该是具有f(t)、g(t)、f'(t)的表达式,和‘g’(t)。在上面的简单示例中,结果应该是

    a * (f(t) * g(t))**(a - 1) * (f'(t) * g(t) + f(t) * g'(t))
    
  2. 现在,我们使用这个特定问题(经济学问题)的一些知识,其中仅在一个特定的稳态值,我们知道 f(t )g(t)。假设它们是 f(tss) = 1g(tss) = 100,其中 tss 是稳态值,我将其'将任意设置为tss = 7。这些不是 f 和 g 的一般函数形式

  3. 代入这些值后,我们就得到了一个包含两个未知数的方程: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

这输出 ![derivatives

它根本不替换这些值。我做错了什么?

再说一次,这只是一个简单的数学例子,但它很好地演示了这个问题。

最佳答案

你可以这样做:

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/

相关文章:

javascript - 如何计算给定发射 Angular 物体行进多远

python - jupyter notebook 不显示图像

python - 使用字段和文本定界符拆分文本

java - Java 中的方程问题

python - 与 Sympy 中的非交换符号集成

ipython - 更改 IPython (Jupyter) 中 Latex 输出的颜色

equation - 从等式实现 CRC 算法

python - 如何在没有 NaN 的情况下组合 groupby 结果?

python - TensorFlow-GPU 导致 python 崩溃

python - 仅将 SymPy 中的 doit() 函数应用于表达式的外部