Python Lambdify/评估给定参数值
假设我有一个符号变量(来自Python Lambdify/评估给定参数值,python,sympy,Python,Sympy,假设我有一个符号变量(来自sympy),定义为 z = r/p * (p-c)/(r-c) 更正式地说,将其表示为z=z(p;c,r):c和r是我想要保持不变的参数,z实际上是p中的一个函数。 现在,我想为所选的c,r,计算z=z(p)——但我不想在我的sympy环境中定义它们,因为我希望其他表达式仍然将它们视为一般的未知参数 本质上,我在寻找类似的东西 my_func = lambdify(p, z(p), parameters={'r': 2, 'c': 1}) my_func(2) Ou
sympy
),定义为
z = r/p * (p-c)/(r-c)
更正式地说,将其表示为z=z(p;c,r)
:c
和r
是我想要保持不变的参数,z
实际上是p
中的一个函数。
现在,我想为所选的c
,r
,计算z=z(p)
——但我不想在我的sympy
环境中定义它们,因为我希望其他表达式仍然将它们视为一般的未知参数
本质上,我在寻找类似的东西
my_func = lambdify(p, z(p), parameters={'r': 2, 'c': 1})
my_func(2)
Out: 1
z
Out: r/p * (p-c)/(r-c)
如何执行此类数值计算?这可能会满足您的要求:
输出:
1.0
r*(-c+p)/(p*(-c+r))
r0*(-c0+2)/(-2*c0+2*r0)
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)
z
my_func = my_lambdify(p , z, parameters={'r': 'r0', 'c': 'c0'})
my_func(2)