gpt4 book ai didi

python - Python 和 Matlab 中的克罗内克积

转载 作者:太空狗 更新时间:2023-10-30 03:04:04 25 4
gpt4 key购买 nike

我试图从 MATLAB 中用 Python 重现结果。但是,我似乎做对了。这是正确的 MATLAB 代码:

nx = 5;
ny = 7;

x = linspace(0, 1, nx); dx = x(2) - x(1);
y = linspace(0, 1, ny); dy = y(2) - y(1);

onex = ones(nx, 1);
oney = ones(ny, 1);

Dx = spdiags([onex -2*onex onex], [-1 0 1], nx, nx);
Dy = spdiags([oney -2*oney oney], [-1 0 1], ny, ny);

Ix = eye(nx); Iy = eye(ny);
L = kron(Iy, Dx);

size(L) % 35 35

现在,这是 Python 代码:

nx = 5
ny = 7
x = linspace(0, 1, nx); dx = x[1] - x[0]
y = linspace(0, 1, ny); dy = y[1] - y[0]

onex = ones(nx)
oney = ones(ny)
Dx = sparse.dia_matrix( ([onex, -2*onex, onex], [-1,0,1] ), shape=(nx,nx))
Dy = sparse.dia_matrix( ([oney, -2*oney, oney], [-1,0,1] ), shape=(ny,ny))

Ix = eye(nx)
Iy = eye(ny)

L = kron(Iy, Dx)

L.shape # (7, 7)

据我所知,在定义 L 之前一切都是正确的。根据 MA​​TLAB kron(Iy, Dx)(应该是克罗内克积)应该产生一个35X35的矩阵,但是Python认为应该是7X7的矩阵。在更简单的计算中,两者都给出了正确答案:

python :

kron(array(([1,2],[2,3])), [1,2])

array([[1, 2, 2, 4],
[2, 4, 3, 6]])

编程语言

kron([1 2; 2 3], [1 2]) 

ans = 1 2 2 4
2 4 3 6

为什么我会得到不同的结果?

谢谢!

最佳答案

使用sparse.kron对于稀疏矩阵的 Kronecker 积。

numpy.kron不处理稀疏矩阵。当给定稀疏矩阵时,它可能不会产生错误,但它返回的值将不正确。

关于python - Python 和 Matlab 中的克罗内克积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035767/

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