エネルギーバンドプロット



Energy Band Plotting



解決:

構築するから変換する補間関数$ x $-への値$ {k_x、k_y } $座標:

xkData = {{0、{Pi、0}}、{1、{0,0}}、{2、{Pi、-Pi}}、{3、{Pi、0}}、{4、{2Pi、 0}}}; if = Interpolation [xkData、InterpolationOrder-> 1];

次に、上記の補間関数を使用してプロットを作成し、xkDataを再度実行して、ティックを作成します。



Plot [energy @@ if [x]、{x、0、4}、Frame-> True、FrameTicks-> {{Automatic、None}、{xkData、None}}、GridLines-> {Range [0,4] 、 なし} ]

ここに画像の説明を入力してください


私の古いソリューションと比較して、Carlのものははるかに優れています。しかし、そこには微妙な欠陥があり、OPが投稿した元の画像には、間隔間の距離が同じではありません。正しいパラメーター化は、弧長を使用することです。基本的に、私たちはする必要があります次のように、k空間内の点間の弧長を累積します。



pts = {{π、0}、{0、0}、{π、-π}、{π、0}、{2π、0}}; arcs = Map [A​​rcLength [Line [#]]&] @ FoldList [Join [#1、{#2}]&、{[email protected]#}、[email protected]#]&@ pts(* {0、 π、π+ Sqrt [2]π、2π+ Sqrt [2]π、3π+ Sqrt [2]π} *)

次に、いくつかの変更を加えて、答えを適応させることができます。

xkData = Transpose [{arcs、pts}]; if = Interpolation [xkData、InterpolationOrder-> 1]; Plot [energy @@ if [x]、{x、arcs [[1]]、arcs [[-1]]}、Frame-> True、FrameTicks-> {{Automatic、None}、{xkData、None}} 、GridLines-> {arcs、None}]

ここに画像の説明を入力してください


いくつかの素晴らしい答えがありましたが、私は別のものを追加することにしました。区分的および代わりに再スケールします。



kList = {{ [Pi]、0}、{0、0}、{ [Pi]、- [Pi]}、{ [Pi]、0}、{2  [Pi]、0}} ; xList = Range [0、4、1]; mapXToK [x _]:= [メール保護] MapThread [{Rescale [x、{#1、#2}、{#3、#4}]、x {xList、None}、FrameTicks-> {Automatic、{Transpose [ {xList、kList}]、None}}、Frame-> True]

ここに画像の説明を入力してください

弧長のコメントを考慮に入れる:

xList = Prepend [[email protected] MapThread [ArcLength [Line [{##}]]&、{Most [kList]、Rest [kList]}]、0]; Plot [energy @@ mapXToK [x]、{x、0、Last [xList]}、GridLines-> {xList、None}、FrameTicks-> {Automatic、{Transpose [{xList、kList}]、None}}、フレーム->真]

ここに画像の説明を入力してください