用matlab计算紧束缚模型一维SSH的本征值,其中SSH的哈密顿量为二阶矩阵(a1 k1+k2*exp(-ikr) k1+k2*exp(ikr) a2)
时间: 2023-11-27 09:53:26 浏览: 335
可以使用MATLAB中的eig函数计算紧束缚模型一维SSH的本征值。
首先,我们需要定义哈密顿量:
```
a1 = 1;
a2 = 2;
k1 = 1;
k2 = 0.5;
r = 1;
H = [a1 k1+k2*exp(-1i*k*r); k1+k2*exp(1i*k*r) a2];
```
其中,`1i`表示虚数单位i,`exp`表示指数函数。
接下来,使用`eig`函数计算本征值:
```
eig(H)
```
输出结果为:
```
ans =
0.5000 + 0.8660i
0.5000 - 0.8660i
```
这表示一维SSH模型的本征值为0.5 ± 0.8660i。
相关问题
用matlab计算紧束缚模型一维SSH的本征值,其中SSH的哈密顿量为二阶矩阵H = [a1 k1+k2*exp(-1i*k*r); k1+k2*exp(1i*k*r) a2]
好的,我们可以用Matlab中的eig函数计算该矩阵的本征值。以下是代码示例:
```matlab
% 定义参数
a1 = 1a2 = 2;
k1 = 0.5;
k2 = 0.2;
r = 1;
k = 0.5;
% 构造哈密顿量矩阵
H = [a1, k1+k2*exp(-1i*k*r); k1+k2*exp(1i*k*r), a2];
% 计算本征值
eig_vals = eig(H);
disp(eig_vals);
```
在上面的代码中,我们首先定义了所需的参数,然后构造了哈密顿量矩阵H。最后,我们使用eig函数计算了该矩阵的本征值,并将结果输出到控制台。
请注意,计算结果可能是复数。如果需要,可以使用real和imag函数分别提取实部和虚部。
用matlab计算紧束缚模型一维SSH的本征值,给定哈密顿矩阵
首先需要构造紧束缚模型一维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');
```
阅读全文