gpt4 book ai didi

matrix - 在 sympy 中获取矩阵乘法的元素方程

转载 作者:行者123 更新时间:2023-12-05 01:01:16 24 4
gpt4 key购买 nike

我有 2 个矩阵,第一个矩阵是整数系数的稀疏矩阵。

import sympy
A = sympy.eye(2)
A.row_op(1, lambda v, j: v + 2*A[0, j])

第二个是象征性的,我在它们之间执行一个操作:
M = MatrixSymbol('M', 2, 1)
X = A * M + A.col(1)

现在,我想要的是获得元素方面的方程:
X_{0,0} = A_{0,0}
X_{0,1} = 2*A_{0,0} + A_{0,1}

一种方法是在 sympy 中指定一个矩阵。每个元素都是一个单独的符号:
rows = []
for i in range(shape[0]):
col = []
for j in range(shape[1]):
col.append(Symbol('%s_{%s,%d}' % (name,i,j)))
rows.append(col)
M = sympy.Matrix(rows)

有没有办法用 MatrixSymbol 做到这一点?上面,然后得到由此产生的逐元素方程?

最佳答案

原来,这个问题有一个非常明显的答案:

MatrixSymbol sympy 中的 s 可以像矩阵一样索引,即:

X[i,j]

给出逐元素方程.

如果想要对多个元素进行子集化,则 MatrixSymbol必须先转换为 sympy.Matrix类(class):
X = sympy.Matrix(X)
X # lists all indices as `X[i, j]`
X[3:4,2] # arbitrary subsets are supported

请注意,这不允许 numpy 的所有操作。数组/矩阵(例如使用 bool 值进行索引),因此您最好创建一个 numpy带有 sympy 的数组符号:
ijstr = lambda i,j: sympy.Symbol(name+"_{"+str(int(i))+","+str(int(j))+"}")
matrix = np.matrix(np.fromfunction(np.vectorize(ijstr), shape))

关于matrix - 在 sympy 中获取矩阵乘法的元素方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com