Python 用于大量变量的subs()

Python 用于大量变量的subs(),python,sympy,Python,Sympy,我正在进行优化,我想编写一个函数,在这个函数中,我可以使用更多的变量。 为此,我生成了一个包含n个变量的m函数。例如,假设3个函数和2个变量 num_var=2 x=symbols('x0:num_var') 我生成了以下函数: f=[5*x0 + 4*x1 + 6, -4*x0 - 5*x1 - 6, -8*x0 - 10] 我的观点是: point=[-2.8,1.74] 如果我想在每个函数中使用sub(),最快的方法是什么 f[0].subs([(x[0],point[0]),(x[

我正在进行优化,我想编写一个函数,在这个函数中,我可以使用更多的变量。 为此,我生成了一个包含n个变量的m函数。例如,假设3个函数和2个变量

num_var=2
x=symbols('x0:num_var')
我生成了以下函数:

f=[5*x0 + 4*x1 + 6, -4*x0 - 5*x1 - 6, -8*x0 - 10]
我的观点是:

point=[-2.8,1.74]
如果我想在每个函数中使用sub(),最快的方法是什么

f[0].subs([(x[0],point[0]),(x[1],point[1])])
(这将对第一个功能进行评估) 我在列表中得到了三个函数求值:

fun_eval=[some number,some number, ... (in size of number of functions)] 
问题是如何编写代码来对大量函数中的大量变量进行求值

见。如果要在大量点上有效地计算函数,应使用
lambdify

>>> from sympy import *
>>> x0, x1 = x = symbols('x:2')
>>> f = [5*x0+4*x1+6, -4*x0-5*x1-6, -8*x0-10]
>>> point = (-2.8, 1.74)
>>> [fi.subs(zip(x, point)) for fi in f]
[-1.04000000000000, -3.50000000000000, 12.4000000000000]
>>> func = lambdify(x, f)
>>> func(*point)
[-1.04, -3.5, 12.399999999999999]
默认情况下,它使用SUB,但如果安装了
numpy
,则可以通过将
module=“numpy”
传递到
lambdify
来使用它进行更快的计算

顺便说一下,您的
符号('x0:num\u var')
实际上没有使用
num\u var
变量。您需要使用
符号('x0:%d'%num\u var)

请参阅。如果要在大量点上有效地计算函数,应使用
lambdify

>>> func = lambdify(x, f)
>>> func(*point)
[-1.04, -3.5, 12.399999999999999]
默认情况下,它使用SUB,但如果安装了
numpy
,则可以通过将
module=“numpy”
传递到
lambdify
来使用它进行更快的计算


顺便说一下,您的
符号('x0:num\u var')
实际上没有使用
num\u var
变量。您需要使用
符号('x0:%d'%num\u var)

谢谢您的回答。谢谢您的回答。谢谢您的回答。我从sympy换成了numpy。我发现它更有效。因为我现在所有的函数都是线性的,所以我使用numpy.array()。谢谢你的回答。我从sympy换成了numpy。我发现它更有效。因为我现在所有的函数都是线性的,所以我使用numpy.array()。