我需要对非常大的方程组进行符号处理,最终得到200多个我需要进行计算的变量。问题是,在求解小方程组时,通常会将变量命名为x
,y
,可能为z
。即使从a
,b
开始,......您也只能通过这种方式获得26个唯一变量。
有解决此问题的好方法吗?比方说,我想在每个点填充一个14x14矩阵,其中有一个不同的变量。我该怎么做呢?
答案 0 :(得分:2)
答案 1 :(得分:0)
我认为最直接的方法是使用sympy.symarray
,如下所示:
x = sympy.symarray("x",(5,5,5))
这会创建一个相应大小的(numpy
)数组 - 此处大小为5x5x5
- 其中包含sympy变量,更具体地说,这些变量以您选择的任何内容为前缀 - 此处为"x"
- 并且拥有与您提供的维度一样多的索引,这里3.当然,您可以根据需要制作尽可能多的这些数组 - 也许为不同的变量组使用不同的前缀以提高可读性等。
然后,您可以使用以下代码在代码中使用这些内容: X [I,J,K]:
In [6]: x[0,1,4]
Out[6]: x_0_1_4
(请注意,你可以不通过x_i_j_k
访问元素 - 当我开始使用sympy时,我发现这有点违反直觉,但是一旦你掌握了python与sympy变量的关系,这很有道理。)
您当然也可以在阵列上使用切片,例如X [:,0,0]。
如果你需要一个变量的python列表,你可以使用例如x.flatten().tolist()
。
我认为这比使用sympy.MatrixSymbol
更可取,因为(a)你可以决定你想要的索引数量,(b)元素是“正常”sympy.Symbol
s,这意味着你如果你宣称它们是常规符号,你可以确定你可以用它们做任何事情。
(我不确定在观察1.1中是否仍然存在这种情况,但在同情1.0中,过去并非所有功能都是针对MatrixElement
实现的。)
答案 2 :(得分:-2)
我建议使用包numpy
,以便您可以使用NumPy数组。
# import statement
import numpy as np
# instantiate a NumPy array (matrix) with 14 rows and 14 columns
variableMatrix = np.zeros((14,14))
注意```np.zeros((14,14))``将用0填充矩阵,你可以稍后用你想要的变量值替换每个元素。请注意,函数调用中的额外括号是必要的!
您可以使用语法i,j
访问矩阵的variableMatrix[i-1,j-1]
元素。我从索引中减去了一个,因为当然Python索引从0开始。