gpt4 book ai didi

python - 由网格上的矩阵定义的函数的矢量化评估

转载 作者:行者123 更新时间:2023-12-01 01:19:46 25 4
gpt4 key购买 nike

我希望在值网格上绘制由矩阵定义的函数的值。

S 为可逆 2x2 矩阵,令 x 为二维向量。如何在二维网格上对 x@S@x 的评估进行矢量化?

这是我目前的做法。它可以工作,但由于网格非常精细,因此执行计算需要一些时间。

#Initialize Matrix
S = np.zeros(shape = (2,2))

while np.linalg.matrix_rank(S)<S.shape[1]:
S = np.random.randint(-5,5+1, size = (2,2))


X,Y = [j.ravel() for j in np.meshgrid(np.linspace(-2,2,1001),np.linspace(-2,2,1001))]

Z = np.zeros_like(X)

for i,v in enumerate(zip(X,Y)):
v = np.array(v)
Z[i] = v@S@v

n = int(np.sqrt(X.size))
Z = Z.reshape(n,n)
X = X.reshape(n,n)
Y = Y.reshape(n,n)
plt.contour(X,Y,Z)

最佳答案

最简单的方法是将这些 X,Y 堆叠到一个 2 列的 2D 数组中,然后使用 np.einsum替换循环矩阵乘法 -

p = np.column_stack((X,Y)) # or np.stack((X,Y)).T
Zout = np.einsum('ij,jk,ik->i',p,S,p,optimize=True)

关于python - 由网格上的矩阵定义的函数的矢量化评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53950335/

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