import scipy.sparse as scsp n = 3 B = scsp.diags([1, -4, 1], [-1, 0, 1], shape=(n, n)) I = scsp.eye(n) upperones = scsp.diags(1, n, shape=(n**2, n**2)) L = scsp.kron(I, B) + upperones + upperones.transpose() k = 1 dx = n A = L + dx**2*k**2*scsp.eye(n**2) print A.toarray()