From e7e99d56a71af54a2cd0481d047115b5fe8d1691 Mon Sep 17 00:00:00 2001 From: guanjihuan <34735497+guanjihuan@users.noreply.github.com> Date: Tue, 26 Oct 2021 20:45:38 +0800 Subject: [PATCH] Create eig_and_eigh.py --- .../2021.10.26_eig_and_eigh/eig_and_eigh.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 language_learning/2021.10.26_eig_and_eigh/eig_and_eigh.py diff --git a/language_learning/2021.10.26_eig_and_eigh/eig_and_eigh.py b/language_learning/2021.10.26_eig_and_eigh/eig_and_eigh.py new file mode 100644 index 0000000..444f0dc --- /dev/null +++ b/language_learning/2021.10.26_eig_and_eigh/eig_and_eigh.py @@ -0,0 +1,32 @@ +""" +This code is supported by the website: https://www.guanjihuan.com +The newest version of this code is on the web page: https://www.guanjihuan.com/archives/17789 +""" + +import numpy as np + +def hamiltonian(width=2, length=2): + h00 = np.zeros((width*length, width*length)) + for i0 in range(length): + for j0 in range(width-1): + h00[i0*width+j0, i0*width+j0+1] = 1 + h00[i0*width+j0+1, i0*width+j0] = 1 + for i0 in range(length-1): + for j0 in range(width): + h00[i0*width+j0, (i0+1)*width+j0] = 1 + h00[(i0+1)*width+j0, i0*width+j0] = 1 + return h00 + +print('矩阵:\n', hamiltonian(), '\n') + +eigenvalue, eigenvector = np.linalg.eig(hamiltonian()) +print('eig求解特征值:', eigenvalue) +print('eig求解特征向量:\n',eigenvector) +print('判断特征向量是否正交:\n', np.dot(eigenvector.transpose(), eigenvector)) + +print() + +eigenvalue, eigenvector = np.linalg.eigh(hamiltonian()) +print('eigh求解特征值:', eigenvalue) +print('eigh求解特征向量:\n',eigenvector) +print('判断特征向量是否正交:\n', np.dot(eigenvector.transpose(), eigenvector)) \ No newline at end of file