パラメトリック行列の固有ベクトルの連続性
私は次元の行列H(→ K)ベクターパラメータに応じ→ Kを。んnnH^(k⃗ )H^(k→)\mathrm{\hat{H}}(\vec{k})k⃗ k→\vec{k} ここで、固有値ルーチンは固有値を特定の順序で返しません(通常は並べ替えられます)が、固有値を→ kの滑らかな関数としてトレースしたいと思います。固有値は特定の順序で返されていないので、ちょうどトレースE Iを、いくつかの特定のインデックスのためのI ∈ { 1 、。。、n }は、以下の図に示すように、滑らかではない線のセットを返しますEiEiE_ik⃗ k→\vec{k}EiEiE_ii∈{1,..,n}i∈{1,..,n}i\in\{1,..,n\} k⃗ k→\vec{k}k⃗ +dk⃗ k→+dk→\vec{k}+d\vec{k}vi(k⃗ )⋅vj(k⃗ +dk⃗ )∼δpipjvi(k→)⋅vj(k→+dk→)∼δpipjv_i(\vec{k})\cdot v_j(\vec{k}+d\vec{k})\sim \delta_{p_i p_j}pi,pj∈π({1,...,n})pi,pj∈π({1,...,n})p_i, p_j\in \pi(\{1,...,n\})ππ\pi つまり、固有ベクトルの連続性を追跡します。 ただし、数値ルーチンではいくつかの問題が発生します。私が使用する点の特定の小さなサブセットでは、近くの点にあるいくつかの固有ベクトルがほとんど正規直交ではありません。私の最初の疑いは、それらの固有ベクトルが縮退した固有値に対応していることでしたが、常にそうであるとは限りません。 dk⃗ dk→d\vec{k} そのようなことが起こるのを許されていますか?または、数値ルーチンが連続固有ベクトルを返すことを保証することは可能ですか?私が使用するルーチンはnumpy.linalg.eighで、これはLAPACKのzheevdのインターフェースです。 (あなたの中の物理学者は私がバンド構造について話していることを認識するでしょう)