1.4.2. Метод прямого вычисления одночастичной матрицы плотности
Данный вариационный метод (см. [117]) базируется на том, что матрица плотности MPSetEqnAttrs('eq0479','',3,[[31,14,3,-1,-1],[41,18,4,-1,-1],[53,23,5,-1,-1],[48,21,5,-1,-1],[62,28,6,-1,-1],[78,35,8,-2,-2],[131,60,14,-3,-3]]) MPEquation() ![]()
![]()
является хорошо локализованной функций, т. е. она быстро затухает при увеличении MPSetEqnAttrs('eq0480','',3,[[28,14,4,-1,-1],[36,19,5,-1,-1],[45,23,7,-1,-1],[42,22,7,-1,-1],[53,29,8,-1,-1],[67,36,11,-2,-2],[113,61,18,-3,-3]]) MPEquation() ![]()
![]()
. Этот факт позволяет добиться общей скалируемости алгоритма как О(N). В методе вводится единственная аппроксимация MPSetChAttrs('ch0563','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPInlineChar(0) ![]()
![]()
![]()
параметр обрезания rC, используемый для того, чтобы ограничить недиагональные элементы матрицы плотности величинами MPSetEqnAttrs('eq0481','',3,[[48,14,4,-1,-1],[63,19,5,-1,-1],[79,23,7,-1,-1],[72,22,7,-1,-1],[95,29,8,-1,-1],[119,36,11,-2,-2],[201,61,18,-3,-3]]) MPEquation() ![]()
![]()
. При этом метод становится точным, когда MPSetEqnAttrs('eq0482','',3,[[36,10,3,-1,-1],[46,13,4,-1,-1],[57,15,5,-1,-1],[52,13,4,-1,-1],[68,18,6,-1,-1],[85,22,7,-2,-2],[143,37,12,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0482','',3,[[36,10,3,-1,-1],[46,13,4,-1,-1],[57,15,5,-1,-1],[52,13,4,-1,-1],[68,18,6,-1,-1],[85,22,7,-2,-2],[143,37,12,-3,-3]]); MPDeleteCode('eq0482') MPSetEqnAttrs('eq0481','',3,[[48,14,4,-1,-1],[63,19,5,-1,-1],[79,23,7,-1,-1],[72,22,7,-1,-1],[95,29,8,-1,-1],[119,36,11,-2,-2],[201,61,18,-3,-3]]); MPDeleteCode('eq0481') MPSetChAttrs('ch0563','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPDeleteCode('ch0563') MPSetEqnAttrs('eq0480','',3,[[28,14,4,-1,-1],[36,19,5,-1,-1],[45,23,7,-1,-1],[42,22,7,-1,-1],[53,29,8,-1,-1],[67,36,11,-2,-2],[113,61,18,-3,-3]]); MPDeleteCode('eq0480') MPSetEqnAttrs('eq0479','',3,[[31,14,3,-1,-1],[41,18,4,-1,-1],[53,23,5,-1,-1],[48,21,5,-1,-1],[62,28,6,-1,-1],[78,35,8,-2,-2],[131,60,14,-3,-3]]); MPDeleteCode('eq0479') В данном методе решение вариационной проблемы включает только процедуру безусловной минимизации, что может проводиться хорошо разработанным методом сопряженных градиентов и т. д. При этом метод хорошо подходит для объединения в итеративные схемы молекулярно-динамических расчетов.
Рассмотрим данный метод при применении его для описания системы, включающей N атомов с М базисными орбиталями, и с использованием метода сильной связи. Матрица плотности определяется как
MPSetEqnAttrs('eq0483','',3,[[90,22,11,-1,-1],[120,29,15,-1,-1],[150,37,18,-1,-1],[136,34,17,-1,-1],[179,46,23,-1,-1],[224,56,28,-2,-2],[375,95,47,-3,-3]]) MPEquation() | (1.224) |
MPSetEqnAttrs('eq0483','',3,[[90,22,11,-1,-1],[120,29,15,-1,-1],[150,37,18,-1,-1],[136,34,17,-1,-1],[179,46,23,-1,-1],[224,56,28,-2,-2],[375,95,47,-3,-3]]); MPDeleteCode('eq0483') где индексы i, j пробегают по всем базисным функциям системы, а n MPSetChAttrs('ch0564','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPInlineChar(0) ![]()
![]()
![]()
по заполненным состояниям гамильтониана. Уравнение Шредингера при этом выглядит следующим образом:
MPSetChAttrs('ch0564','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPDeleteCode('ch0564') MPSetEqnAttrs('eq0484','',3,[[85,21,12,-1,-1],[116,29,17,-1,-1],[143,38,22,-1,-1],[128,33,19,-1,-1],[170,46,26,-1,-1],[213,57,33,-2,-2],[357,96,54,-3,-3]]) MPEquation() | (1.225) |
MPSetEqnAttrs('eq0484','',3,[[85,21,12,-1,-1],[116,29,17,-1,-1],[143,38,22,-1,-1],[128,33,19,-1,-1],[170,46,26,-1,-1],[213,57,33,-2,-2],[357,96,54,-3,-3]]); MPDeleteCode('eq0484') Стандартное решение данного уравнения проводится с помощью разбиения объема системы на плотную систему точек и решения полученного матричного численного уравнения для собственных волновых функций. Альтернативно вместо этого можно попытаться решить уравнение непосредственно для MPSetEqnAttrs('eq0485','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]) MPEquation() ![]()
![]()
. В обоих случаях общее число электронов в системе и ее электронная энергия выражаются как
MPSetEqnAttrs('eq0485','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]); MPDeleteCode('eq0485') MPSetEqnAttrs('eq0486','',3,[[87,24,11,-1,-1],[118,33,16,-1,-1],[147,41,19,-1,-1],[133,37,17,-1,-1],[176,49,23,-1,-1],[220,61,28,-2,-2],[368,102,47,-3,-3]]) MPEquation() | (1.226) |
MPSetEqnAttrs('eq0487','',3,[[110,23,12,-1,-1],[148,32,17,-1,-1],[184,40,22,-1,-1],[165,36,19,-1,-1],[218,48,26,-1,-1],[275,61,33,-2,-2],[459,100,54,-3,-3]]) MPEquation() | (1.227) |
MPSetEqnAttrs('eq0487','',3,[[110,23,12,-1,-1],[148,32,17,-1,-1],[184,40,22,-1,-1],[165,36,19,-1,-1],[218,48,26,-1,-1],[275,61,33,-2,-2],[459,100,54,-3,-3]]); MPDeleteCode('eq0487') MPSetEqnAttrs('eq0486','',3,[[87,24,11,-1,-1],[118,33,16,-1,-1],[147,41,19,-1,-1],[133,37,17,-1,-1],[176,49,23,-1,-1],[220,61,28,-2,-2],[368,102,47,-3,-3]]); MPDeleteCode('eq0486') Из условия того, что матрица MPSetEqnAttrs('eq0488','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]) MPEquation() ![]()
![]()
![]()
![]()
является проекционным оператором, она должна удовлетворять условию идемпотентности MPSetEqnAttrs('eq0489','',3,[[30,12,2,-1,-1],[39,17,3,-1,-1],[49,21,3,-1,-1],[44,19,4,-1,-1],[58,26,5,-1,-1],[72,30,6,-2,-2],[123,51,10,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0489','',3,[[30,12,2,-1,-1],[39,17,3,-1,-1],[49,21,3,-1,-1],[44,19,4,-1,-1],[58,26,5,-1,-1],[72,30,6,-2,-2],[123,51,10,-3,-3]]); MPDeleteCode('eq0489') MPSetEqnAttrs('eq0488','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]); MPDeleteCode('eq0488') Так же как и в предыдущем методе, для минимизации полной энергии в (1.227) необходимо проводить минимизацию MPSetEqnAttrs('eq0490','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]) MPEquation() ![]()
![]()
при выполнении уравнения (1.226). Вместо выполнения этого условия более удобно минимизировать канонический потенциал MPSetEqnAttrs('eq0491','',3,[[68,12,3,-1,-1],[90,15,4,-1,-1],[113,19,5,-1,-1],[100,16,4,-1,-1],[137,22,6,-1,-1],[170,27,7,-2,-2],[285,47,12,-3,-3]]) MPEquation() ![]()
![]()
при фиксированном химическом потенциале (ферми-уровне) μ, выбираемом так, чтобы выполнялось уравнение (1.226). Без выполнения этого условия собственные состояния λр матрицы плотности будут стремиться или к MPSetChAttrs('ch0565','ch3',[[6,1,-3,0,0],[8,1,-4,0,0],[10,1,-4,0,0],[],[],[],[25,2,-11,0,0]]) MPInlineChar(0) ![]()
![]()
![]()
MPSetEqnAttrs('eq0492','',3,[[9,5,-1,-1,-1],[11,6,-1,-1,-1],[12,8,-3,-1,-1],[11,7,-1,-1,-1],[15,10,-1,-1,-1],[19,12,-2,-2,-2],[32,20,-4,-3,-3]]) MPEquation() ![]()
![]()
![]()
![]()
при λ р > μ (для незанятых состояний) или к + MPSetEqnAttrs('eq0493','',3,[[9,5,-1,-1,-1],[11,6,-1,-1,-1],[12,8,-3,-1,-1],[11,7,-1,-1,-1],[15,10,-1,-1,-1],[19,12,-2,-2,-2],[32,20,-4,-3,-3]]) MPEquation() ![]()
![]()
![]()
![]()
при λ р < μ (для занятых состояний). Ключевым в данном методе является трюк для выполнения условия MPSetEqnAttrs('eq0494','',3,[[52,16,5,-1,-1],[70,21,6,-1,-1],[89,27,8,-1,-1],[76,22,7,-1,-1],[105,31,9,-1,-1],[132,39,12,-2,-2],[220,64,18,-3,-3]]) MPEquation() ![]()
![]()
. Для этого используется процедура трансформации очистки (purification transformation), предложенная в [118]. Пусть ρ MPSetChAttrs('ch0566','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPInlineChar(0) ![]()
![]()
![]()
приближенная матрица плотности, которая почти идемпотентна. Определим очищенную матрицу, которая более близка к условию идемпотентности (рис. 1-18):
MPSetChAttrs('ch0566','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPDeleteCode('ch0566') MPSetEqnAttrs('eq0494','',3,[[52,16,5,-1,-1],[70,21,6,-1,-1],[89,27,8,-1,-1],[76,22,7,-1,-1],[105,31,9,-1,-1],[132,39,12,-2,-2],[220,64,18,-3,-3]]); MPDeleteCode('eq0494') MPSetEqnAttrs('eq0493','',3,[[9,5,-1,-1,-1],[11,6,-1,-1,-1],[12,8,-3,-1,-1],[11,7,-1,-1,-1],[15,10,-1,-1,-1],[19,12,-2,-2,-2],[32,20,-4,-3,-3]]); MPDeleteCode('eq0493') MPSetEqnAttrs('eq0492','',3,[[9,5,-1,-1,-1],[11,6,-1,-1,-1],[12,8,-3,-1,-1],[11,7,-1,-1,-1],[15,10,-1,-1,-1],[19,12,-2,-2,-2],[32,20,-4,-3,-3]]); MPDeleteCode('eq0492') MPSetChAttrs('ch0565','ch3',[[6,1,-3,0,0],[8,1,-4,0,0],[10,1,-4,0,0],[],[],[],[25,2,-11,0,0]]) MPDeleteCode('ch0565') MPSetEqnAttrs('eq0491','',3,[[68,12,3,-1,-1],[90,15,4,-1,-1],[113,19,5,-1,-1],[100,16,4,-1,-1],[137,22,6,-1,-1],[170,27,7,-2,-2],[285,47,12,-3,-3]]); MPDeleteCode('eq0491') MPSetEqnAttrs('eq0490','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]); MPDeleteCode('eq0490') MPSetEqnAttrs('eq0495','',3,[[63,12,2,-1,-1],[84,17,3,-1,-1],[105,21,3,-1,-1],[94,19,4,-1,-1],[125,26,5,-1,-1],[156,30,6,-2,-2],[261,51,10,-3,-3]]) MPEquation() | (1.228) |
MPSetEqnAttrs('eq0495','',3,[[63,12,2,-1,-1],[84,17,3,-1,-1],[105,21,3,-1,-1],[94,19,4,-1,-1],[125,26,5,-1,-1],[156,30,6,-2,-2],[261,51,10,-3,-3]]); MPDeleteCode('eq0495') 
Рис. 1-18. Функция f(x)=3x2 MPSetChAttrs('ch0567','ch4',[[5,1,-2,0,0],[7,1,-3,0,0],[8,1,-3,0,0],[],[],[],[22,3,-8,1,0]]) MPInlineChar(0) ![]()
![]()
![]()
2x3.
MPSetChAttrs('ch0567','ch4',[[5,1,-2,0,0],[7,1,-3,0,0],[8,1,-3,0,0],[],[],[],[22,3,-8,1,0]]) MPDeleteCode('ch0567') Из вида этой функции следует, что она имеет две стационарные точки MPSetEqnAttrs('eq0496','',3,[[35,14,3,-1,-1],[49,18,4,-1,-1],[60,23,5,-1,-1],[53,21,5,-1,-1],[73,28,6,-1,-1],[92,35,8,-2,-2],[151,60,14,-3,-3]]) MPEquation() ![]()
![]()
и MPSetEqnAttrs('eq0497','',3,[[31,14,3,-1,-1],[43,18,4,-1,-1],[54,23,5,-1,-1],[47,21,5,-1,-1],[63,27,6,-1,-1],[80,35,8,-2,-2],[132,60,14,-3,-3]]) MPEquation() ![]()
![]()
, где MPSetEqnAttrs('eq0498','',3,[[40,14,3,-1,-1],[53,18,4,-1,-1],[67,23,5,-1,-1],[58,21,5,-1,-1],[79,28,6,-1,-1],[100,35,8,-2,-2],[166,60,14,-3,-3]]) MPEquation() ![]()
![]()
. Если все собственные значения матрицы плотности попадут в эти точки, то матрица будет идемпотентной. Если какое-то собственное значение λр>1, то на следующей процедуре очистки это собственное значение будет возвращаться к значению +1. Если же какое-то собственное значение λр<0, то на следующей процедуре очистки это собственное значение будет возвращаться к значению 0. Таким образом, с проведением процедуры очистки много раз, матрица плотности будет все более и более приближаться к условию идемпотентности, а ее собственные значения MPSetChAttrs('ch0568','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPInlineChar(0) ![]()
![]()
![]()
к интервалу MPSetEqnAttrs('eq0499','',3,[[52,16,5,-1,-1],[70,21,6,-1,-1],[89,27,8,-1,-1],[76,22,7,-1,-1],[105,31,9,-1,-1],[132,39,12,-2,-2],[220,64,18,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0499','',3,[[52,16,5,-1,-1],[70,21,6,-1,-1],[89,27,8,-1,-1],[76,22,7,-1,-1],[105,31,9,-1,-1],[132,39,12,-2,-2],[220,64,18,-3,-3]]); MPDeleteCode('eq0499') MPSetChAttrs('ch0568','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]]) MPDeleteCode('ch0568') MPSetEqnAttrs('eq0498','',3,[[40,14,3,-1,-1],[53,18,4,-1,-1],[67,23,5,-1,-1],[58,21,5,-1,-1],[79,28,6,-1,-1],[100,35,8,-2,-2],[166,60,14,-3,-3]]); MPDeleteCode('eq0498') MPSetEqnAttrs('eq0497','',3,[[31,14,3,-1,-1],[43,18,4,-1,-1],[54,23,5,-1,-1],[47,21,5,-1,-1],[63,27,6,-1,-1],[80,35,8,-2,-2],[132,60,14,-3,-3]]); MPDeleteCode('eq0497') MPSetEqnAttrs('eq0496','',3,[[35,14,3,-1,-1],[49,18,4,-1,-1],[60,23,5,-1,-1],[53,21,5,-1,-1],[73,28,6,-1,-1],[92,35,8,-2,-2],[151,60,14,-3,-3]]); MPDeleteCode('eq0496') Для минимизации по отношению к элементам MPSetEqnAttrs('eq0500','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]) MPEquation() ![]()
![]()
полной энергии теперь вместо минимизации (1.227) проводится минимизация следующего выражения:
MPSetEqnAttrs('eq0500','',3,[[9,10,4,-1,-1],[12,14,6,-1,-1],[15,18,8,-1,-1],[14,14,7,-1,-1],[17,20,9,-1,-1],[22,25,12,-2,-2],[39,41,18,-3,-3]]); MPDeleteCode('eq0500') MPSetEqnAttrs('eq0501','',3,[[187,17,4,-1,-1],[250,22,5,-1,-1],[313,28,6,-1,-1],[279,25,6,-1,-1],[376,34,8,-1,-1],[469,43,11,-2,-2],[783,71,17,-3,-3]]) MPEquation() | (1.229) |
MPSetEqnAttrs('eq0501','',3,[[187,17,4,-1,-1],[250,22,5,-1,-1],[313,28,6,-1,-1],[279,25,6,-1,-1],[376,34,8,-1,-1],[469,43,11,-2,-2],[783,71,17,-3,-3]]); MPDeleteCode('eq0501') При этом полагается, что MPSetEqnAttrs('eq0502','',3,[[29,13,4,-1,-1],[38,17,6,-1,-1],[48,21,8,-1,-1],[43,18,7,-1,-1],[57,25,9,-1,-1],[72,31,12,-2,-2],[121,51,18,-3,-3]]) MPEquation() ![]()
![]()
при MPSetEqnAttrs('eq0503','',3,[[46,14,4,-1,-1],[61,19,5,-1,-1],[76,23,7,-1,-1],[69,22,7,-1,-1],[92,28,8,-1,-1],[117,37,12,-2,-2],[195,62,19,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0503','',3,[[46,14,4,-1,-1],[61,19,5,-1,-1],[76,23,7,-1,-1],[69,22,7,-1,-1],[92,28,8,-1,-1],[117,37,12,-2,-2],[195,62,19,-3,-3]]); MPDeleteCode('eq0503') MPSetEqnAttrs('eq0502','',3,[[29,13,4,-1,-1],[38,17,6,-1,-1],[48,21,8,-1,-1],[43,18,7,-1,-1],[57,25,9,-1,-1],[72,31,12,-2,-2],[121,51,18,-3,-3]]); MPDeleteCode('eq0502') Здесь уже явно никакие ограничения на систему не накладываются. При минимизации канонического потенциала Ω ищется его локальный минимум, при котором собственные значения ρ, соответствующие занятым и свободным состояниям, кластеризуются вокруг 1 и 0 соответственно. Минимизация обычно начинается со стартовой точки MPSetEqnAttrs('eq0504','',3,[[36,26,9,-1,-1],[48,35,12,-1,-1],[61,44,15,-1,-1],[54,39,14,-1,-1],[72,53,19,-1,-1],[90,65,23,-2,-2],[152,111,39,-3,-3]]) MPEquation() 
![]()
. Затем в процессе итеративных вычислений вычисляется градиент
MPSetEqnAttrs('eq0504','',3,[[36,26,9,-1,-1],[48,35,12,-1,-1],[61,44,15,-1,-1],[54,39,14,-1,-1],[72,53,19,-1,-1],[90,65,23,-2,-2],[152,111,39,-3,-3]]); MPDeleteCode('eq0504') MPSetEqnAttrs('eq0505','',3,[[262,26,11,-1,-1],[347,37,16,-1,-1],[435,46,19,-1,-1],[392,41,18,-1,-1],[522,54,23,-1,-1],[651,67,29,-2,-2],[1086,114,48,-3,-3]]) MPEquation() | (1.230) |
MPSetEqnAttrs('eq0505','',3,[[262,26,11,-1,-1],[347,37,16,-1,-1],[435,46,19,-1,-1],[392,41,18,-1,-1],[522,54,23,-1,-1],[651,67,29,-2,-2],[1086,114,48,-3,-3]]); MPDeleteCode('eq0505') Градиент вычисляется методом наискорейшего спуска, сопряженных градиентов или другими методами. Метод позволяет также вычислять обобщенные силы, т. е. производные Ω по отношению к какому-либо параметру λ (например, к атомным координатам):
MPSetEqnAttrs('eq0506','',3,[[109,27,11,-1,-1],[146,37,16,-1,-1],[182,46,19,-1,-1],[164,42,18,-1,-1],[218,55,23,-1,-1],[273,68,29,-2,-2],[456,114,48,-3,-3]]) MPEquation() | (1.231) |
MPSetEqnAttrs('eq0506','',3,[[109,27,11,-1,-1],[146,37,16,-1,-1],[182,46,19,-1,-1],[164,42,18,-1,-1],[218,55,23,-1,-1],[273,68,29,-2,-2],[456,114,48,-3,-3]]); MPDeleteCode('eq0506') Но первый член исчезает из-за вариационного решения, поэтому обобщенная сила вычисляется как
MPSetEqnAttrs('eq0507','',3,[[72,30,12,-1,-1],[96,39,16,-1,-1],[121,48,19,-1,-1],[108,44,17,-1,-1],[144,58,23,-1,-1],[179,73,29,-2,-2],[299,122,48,-3,-3]]) MPEquation() | (1.232) |
MPSetEqnAttrs('eq0507','',3,[[72,30,12,-1,-1],[96,39,16,-1,-1],[121,48,19,-1,-1],[108,44,17,-1,-1],[144,58,23,-1,-1],[179,73,29,-2,-2],[299,122,48,-3,-3]]); MPDeleteCode('eq0507') В заключение можно сказать, что в данном методе:
1. Ищется не глобальный, а локальный минимум Ω. Существуют нефизичные решения, при которых MPSetEqnAttrs('eq0508','',3,[[32,9,2,-1,-1],[41,12,3,-1,-1],[52,14,3,-1,-1],[47,13,4,-1,-1],[61,17,5,-1,-1],[77,21,6,-2,-2],[131,35,10,-3,-3]]) MPEquation() ![]()
![]()
для состояний μ и MPSetEqnAttrs('eq0509','',3,[[38,9,2,-1,-1],[50,12,3,-1,-1],[62,14,3,-1,-1],[56,13,4,-1,-1],[74,17,5,-1,-1],[93,21,6,-2,-2],[157,35,10,-3,-3]]) MPEquation() ![]()
![]()
![]()
![]()
для состояний ниже μ. К счастью, стартуя со значений MPSetEqnAttrs('eq0510','',3,[[36,26,9,-1,-1],[48,35,12,-1,-1],[61,44,15,-1,-1],[54,39,14,-1,-1],[72,53,19,-1,-1],[90,65,23,-2,-2],[152,111,39,-3,-3]]) MPEquation() 
![]()
, метод обычно сходится к требуемым значениям MPSetEqnAttrs('eq0511','',3,[[43,16,5,-1,-1],[56,20,6,-1,-1],[73,26,8,-1,-1],[64,23,7,-1,-1],[87,31,9,-1,-1],[107,38,12,-2,-2],[182,65,18,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0511','',3,[[43,16,5,-1,-1],[56,20,6,-1,-1],[73,26,8,-1,-1],[64,23,7,-1,-1],[87,31,9,-1,-1],[107,38,12,-2,-2],[182,65,18,-3,-3]]); MPDeleteCode('eq0511') MPSetEqnAttrs('eq0510','',3,[[36,26,9,-1,-1],[48,35,12,-1,-1],[61,44,15,-1,-1],[54,39,14,-1,-1],[72,53,19,-1,-1],[90,65,23,-2,-2],[152,111,39,-3,-3]]); MPDeleteCode('eq0510') MPSetEqnAttrs('eq0509','',3,[[38,9,2,-1,-1],[50,12,3,-1,-1],[62,14,3,-1,-1],[56,13,4,-1,-1],[74,17,5,-1,-1],[93,21,6,-2,-2],[157,35,10,-3,-3]]); MPDeleteCode('eq0509') MPSetEqnAttrs('eq0508','',3,[[32,9,2,-1,-1],[41,12,3,-1,-1],[52,14,3,-1,-1],[47,13,4,-1,-1],[61,17,5,-1,-1],[77,21,6,-2,-2],[131,35,10,-3,-3]]); MPDeleteCode('eq0508') 2. Решение для энергии представляет собой верхнюю границу точной энергии
3. Метод становится точным, т. е. MPSetEqnAttrs('eq0512','',3,[[49,11,3,-1,-1],[68,15,4,-1,-1],[83,19,5,-1,-1],[75,16,4,-1,-1],[101,22,6,-1,-1],[125,27,7,-2,-2],[210,47,12,-3,-3]]) MPEquation() ![]()
![]()
при MPSetEqnAttrs('eq0513','',3,[[36,10,3,-1,-1],[46,13,4,-1,-1],[57,15,5,-1,-1],[52,13,4,-1,-1],[68,18,6,-1,-1],[85,22,7,-2,-2],[143,37,12,-3,-3]]) MPEquation() ![]()
![]()
.
MPSetEqnAttrs('eq0513','',3,[[36,10,3,-1,-1],[46,13,4,-1,-1],[57,15,5,-1,-1],[52,13,4,-1,-1],[68,18,6,-1,-1],[85,22,7,-2,-2],[143,37,12,-3,-3]]); MPDeleteCode('eq0513') MPSetEqnAttrs('eq0512','',3,[[49,11,3,-1,-1],[68,15,4,-1,-1],[83,19,5,-1,-1],[75,16,4,-1,-1],[101,22,6,-1,-1],[125,27,7,-2,-2],[210,47,12,-3,-3]]); MPDeleteCode('eq0512') 4. Из свойств вариационных решений ошибки первого порядка в ρ приводят к ошибкам второго порядка в Ω.
5. Метод наиболее быстро сходится для изоляторов, так как в них недиагональные элементы матрицы плотности затухают более быстро.
6. Метод не требует дополнительного интегрирования по энергии в отличие от рекурсивных методов (основанных на функции Грина).
7. Наиболее вычислительно требовательная часть алгоритма MPSetChAttrs('ch0569','ch0',[[12,1,-3,0,0],[16,1,-4,0,0],[20,1,-4,0,0],[],[],[],[50,2,-11,0,0]])
MPInlineChar(0) ![]()
![]()
![]()
это перемножение ленточных матриц, т. е. получение ρ2 из ρ. Однако если данная матрица является разреженной, к ней может быть применена эффективная техника диагонализации, позволяющая работать с подобными матрицами достаточно больших размеров. Разреженность матрицы гамильтониана связана, в свою очередь, с понятием «близорукости» и локализованности волновых функций.





