Lambdify /评估给定的参数值

时间:2019-03-18 10:25:14

标签: python sympy

假设我有一个符号变量(来自sympy),定义为

z = r/p * (p-c)/(r-c)

更正式地将其表示为z=z(p; c, r)cr是我要保持常数的参数,而z实际上是{{1}中的函数}。 现在,我想为pz=z(p)的选定值评估c,但是我不想在我的r环境中定义它们,因为我想要其他表达式仍将其视为常规参数和未知参数。

本质上,我在寻找类似的东西

sympy

我该如何进行数字评估?

1 个答案:

答案 0 :(得分:1)

这可能会满足您的要求:

def my_lambdify(x, y, parameters=None):
    if parameters is not None:
        try:
            ys = y.subs(parameters)
        except ValueError:
            ys = y
    else:
        ys = y
    return lambdify(x, ys)

my_func = my_lambdify(p , z, parameters={'r': 2, 'c': 3})

输出:

my_func(2)
  

1.0

z
  

r *(-c + p)/(p *(-c + r))

my_func = my_lambdify(p , z, parameters={'r': 'r0', 'c': 'c0'})
my_func(2)
  

r0 *(-c0 + 2)/(-2 * c0 + 2 * r0)