用matlab计算紧束缚模型一维SSH的本征值,给定哈密顿矩阵
时间: 2023-11-27 08:54:16 浏览: 88
首先需要构造紧束缚模型一维SSH的哈密顿矩阵。SSH模型的哈密顿矩阵可以表示为:
$$H = \sum_{n=1}^{N/2}\begin{pmatrix}0 & t_1+t_2e^{ik}\\ t_1+t_2e^{-ik} & 0\end{pmatrix}$$
其中,$N$为系统大小,$t_1$和$t_2$为耦合常数,$k$为动量。
在Matlab中,可以使用以下代码构造SSH模型的哈密顿矩阵:
```
N = 100; % 系统大小
t1 = 1; % 耦合常数1
t2 = 2; % 耦合常数2
k = linspace(-pi, pi, N); % 动量
H = zeros(2*N, 2*N);
for n = 1:N/2
H(2*n-1:2*n, 2*n-1:2*n) = [0, t1+t2*exp(1i*k(n)); t1+t2*exp(-1i*k(n)), 0];
end
```
接下来,可以使用Matlab中的`eig`函数计算SSH模型的本征值和本征向量:
```
[eigenvectors, eigenvalues] = eig(H);
eigenvalues = diag(eigenvalues);
```
其中,`eigenvectors`为SSH模型的本征向量矩阵,`eigenvalues`为SSH模型的本征值向量。可以通过`plot`函数将SSH模型的本征值可视化:
```
plot(real(eigenvalues), imag(eigenvalues), '.');
xlabel('Real Part');
ylabel('Imaginary Part');
title('Eigenvalues of SSH Model');
```
完整的Matlab代码如下:
```
N = 100; % 系统大小
t1 = 1; % 耦合常数1
t2 = 2; % 耦合常数2
k = linspace(-pi, pi, N); % 动量
H = zeros(2*N, 2*N);
for n = 1:N/2
H(2*n-1:2*n, 2*n-1:2*n) = [0, t1+t2*exp(1i*k(n)); t1+t2*exp(-1i*k(n)), 0];
end
[eigenvectors, eigenvalues] = eig(H);
eigenvalues = diag(eigenvalues);
plot(real(eigenvalues), imag(eigenvalues), '.');
xlabel('Real Part');
ylabel('Imaginary Part');
title('Eigenvalues of SSH Model');
```