Final: Make integration bounds for hopping relative to system, clean up QREig test

This commit is contained in:
2022-04-03 17:05:11 +02:00
parent 75e02b2a49
commit 3c865659a9

View File

@ -606,7 +606,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": 20,
"metadata": { "metadata": {
"deletable": false, "deletable": false,
"nbgrader": { "nbgrader": {
@ -644,10 +644,8 @@
" # away from the atomic positions, which we already saw in the overlap\n", " # away from the atomic positions, which we already saw in the overlap\n",
" # above. In fact, 99.7% of all probability mass is under the integral\n", " # above. In fact, 99.7% of all probability mass is under the integral\n",
" # for x radius of 3*sigma from the centers x_i.\n", " # for x radius of 3*sigma from the centers x_i.\n",
" # TODO: Make integration bounds relative to n and a, and maybe sigma.\n", " h = 1e-6\n",
" infty = 5e1\n", " x = np.arange(positions[0] - 10*sigma, positions[-1] - 10*sigma, h)\n",
" h = 1e-5\n",
" x = np.arange(-infty, infty, h)\n",
" \n", " \n",
" def V(x):\n", " def V(x):\n",
" ret = np.zeros(x.shape)\n", " ret = np.zeros(x.shape)\n",
@ -668,7 +666,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": 21,
"metadata": { "metadata": {
"deletable": false, "deletable": false,
"nbgrader": { "nbgrader": {
@ -689,72 +687,72 @@
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"For i = 0 ...\n", "For i = 0 ...\n",
"\tt_{i,i+1} = -0.13849171527765194\n", "\tt_{i,i+1} = -0.1384916969413158\n",
"\tt_{i,i+2} = -3.0880816778755327e-06\n", "\tt_{i,i+2} = -3.0880817716278278e-06\n",
"\tt_{i,i+3} = -1.8833562169250255e-15\n", "\tt_{i,i+3} = -1.883355982770042e-15\n",
"\n", "\n",
"For i = 1 ...\n", "For i = 1 ...\n",
"\tt_{i,i-1} = -0.13849171527765194\n", "\tt_{i,i-1} = -0.1384916969413158\n",
"\tt_{i,i+1} = -0.14871538196685558\n", "\tt_{i,i+1} = -0.1487153634772844\n",
"\tt_{i,i+2} = -3.1307050912510583e-06\n", "\tt_{i,i+2} = -3.130698794594546e-06\n",
"\tt_{i,i+3} = -1.9456306931892115e-15\n", "\tt_{i,i+3} = -1.9456302197759757e-15\n",
"\n", "\n",
"For i = 2 ...\n", "For i = 2 ...\n",
"\tt_{i,i-1} = -0.14871538196685555\n", "\tt_{i,i-1} = -0.1487153634772844\n",
"\tt_{i,i+1} = -0.1536327589565012\n", "\tt_{i,i+1} = -0.1536327215743931\n",
"\tt_{i,i-2} = -3.0880816778755327e-06\n", "\tt_{i,i-2} = -3.0880817716278278e-06\n",
"\tt_{i,i+2} = -3.152251398227753e-06\n", "\tt_{i,i+2} = -3.1522451552639614e-06\n",
"\tt_{i,i+3} = -1.976347912754562e-15\n", "\tt_{i,i+3} = -1.976347680690269e-15\n",
"\n", "\n",
"For i = 3 ...\n", "For i = 3 ...\n",
"\tt_{i,i-1} = -0.1536327589565012\n", "\tt_{i,i-1} = -0.1536327215743931\n",
"\tt_{i,i+1} = -0.15605828154196247\n", "\tt_{i,i+1} = -0.15605826321748156\n",
"\tt_{i,i-2} = -3.1307050912510583e-06\n", "\tt_{i,i-2} = -3.130698794594546e-06\n",
"\tt_{i,i+2} = -3.1616580016478533e-06\n", "\tt_{i,i+2} = -3.1616580970991677e-06\n",
"\tt_{i,i-3} = -1.8833562169250255e-15\n", "\tt_{i,i-3} = -1.883355982770042e-15\n",
"\tt_{i,i+3} = -1.98575211950378e-15\n", "\tt_{i,i+3} = -1.985751885523562e-15\n",
"\n", "\n",
"For i = 4 ...\n", "For i = 4 ...\n",
"\tt_{i,i-1} = -0.15605828154196244\n", "\tt_{i,i-1} = -0.15605826321748156\n",
"\tt_{i,i+1} = -0.15680086554505168\n", "\tt_{i,i+1} = -0.15680084706928052\n",
"\tt_{i,i-2} = -3.152251398227753e-06\n", "\tt_{i,i-2} = -3.1522451552639614e-06\n",
"\tt_{i,i+2} = -3.161664327360904e-06\n", "\tt_{i,i+2} = -3.1616580336392234e-06\n",
"\tt_{i,i-3} = -1.9456306931892115e-15\n", "\tt_{i,i-3} = -1.945630219775976e-15\n",
"\tt_{i,i+3} = -1.976348151505985e-15\n", "\tt_{i,i+3} = -1.976347665788238e-15\n",
"\n", "\n",
"For i = 5 ...\n", "For i = 5 ...\n",
"\tt_{i,i-1} = -0.15680086554505168\n", "\tt_{i,i-1} = -0.15680084706928052\n",
"\tt_{i,i+1} = -0.156058300394482\n", "\tt_{i,i+1} = -0.1560582620407699\n",
"\tt_{i,i-2} = -3.1616580016478533e-06\n", "\tt_{i,i-2} = -3.1616580970991677e-06\n",
"\tt_{i,i+2} = -3.152251395817713e-06\n", "\tt_{i,i+2} = -3.1503884135302292e-06\n",
"\tt_{i,i-3} = -1.9763479127545625e-15\n", "\tt_{i,i-3} = -1.976347680690269e-15\n",
"\tt_{i,i+3} = -1.945630454073864e-15\n", "\tt_{i,i+3} = -9.758917589446118e-16\n",
"\n", "\n",
"For i = 6 ...\n", "For i = 6 ...\n",
"\tt_{i,i-1} = -0.15605830039448199\n", "\tt_{i,i-1} = -0.1560582620407699\n",
"\tt_{i,i+1} = -0.153632740075246\n", "\tt_{i,i+1} = -0.07705930210415016\n",
"\tt_{i,i-2} = -3.161664327360904e-06\n", "\tt_{i,i-2} = -3.1616580336392234e-06\n",
"\tt_{i,i+2} = -3.1306987607180875e-06\n", "\tt_{i,i+2} = -1.8618361745866042e-09\n",
"\tt_{i,i-3} = -1.9857521195037804e-15\n", "\tt_{i,i-3} = -1.985751885523562e-15\n",
"\tt_{i,i+3} = -1.8833562165610968e-15\n", "\tt_{i,i+3} = -1.2520416620914092e-23\n",
"\n", "\n",
"For i = 7 ...\n", "For i = 7 ...\n",
"\tt_{i,i-1} = -0.153632740075246\n", "\tt_{i,i-1} = -0.07705930210415014\n",
"\tt_{i,i+1} = -0.14871538193811829\n", "\tt_{i,i+1} = -9.886491591078138e-10\n",
"\tt_{i,i-2} = -3.152251395817713e-06\n", "\tt_{i,i-2} = -3.1503884135302292e-06\n",
"\tt_{i,i+2} = -3.088087998768686e-06\n", "\tt_{i,i+2} = -8.457627155901465e-24\n",
"\tt_{i,i-3} = -1.976348151505985e-15\n", "\tt_{i,i-3} = -1.976347665788238e-15\n",
"\n", "\n",
"For i = 8 ...\n", "For i = 8 ...\n",
"\tt_{i,i-1} = -0.14871538193811829\n", "\tt_{i,i-1} = -9.886491591078138e-10\n",
"\tt_{i,i+1} = -0.1384917341014353\n", "\tt_{i,i+1} = -7.172547894745363e-31\n",
"\tt_{i,i-2} = -3.1306987607180875e-06\n", "\tt_{i,i-2} = -1.861836174586604e-09\n",
"\tt_{i,i-3} = -1.945630454073864e-15\n", "\tt_{i,i-3} = -9.758917589446118e-16\n",
"\n", "\n",
"For i = 9 ...\n", "For i = 9 ...\n",
"\tt_{i,i-1} = -0.1384917341014353\n", "\tt_{i,i-1} = -7.1725478947453635e-31\n",
"\tt_{i,i-2} = -3.088087998768686e-06\n", "\tt_{i,i-2} = -8.457627155901465e-24\n",
"\tt_{i,i-3} = -1.8833562165610968e-15\n", "\tt_{i,i-3} = -1.2520416620914093e-23\n",
"\n" "\n"
] ]
} }
@ -797,7 +795,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 54, "execution_count": 14,
"metadata": { "metadata": {
"deletable": false, "deletable": false,
"nbgrader": { "nbgrader": {
@ -836,7 +834,6 @@
" Q, R = np.linalg.qr(T)\n", " Q, R = np.linalg.qr(T)\n",
" T = np.matmul(R,Q)\n", " T = np.matmul(R,Q)\n",
" e = np.sum(np.abs(np.diag(T, k=1)))\n", " e = np.sum(np.abs(np.diag(T, k=1)))\n",
" print(k)\n",
" return np.diag(T)" " return np.diag(T)"
] ]
}, },
@ -863,7 +860,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 75, "execution_count": 15,
"metadata": { "metadata": {
"deletable": false, "deletable": false,
"nbgrader": { "nbgrader": {
@ -878,18 +875,7 @@
"task": false "task": false
} }
}, },
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000\n",
"1000\n",
"[-3.35311057 0.14162732 3. 4.21148325]\n",
"10000\n"
]
}
],
"source": [ "source": [
"def test_QREig():\n", "def test_QREig():\n",
" # Test case one\n", " # Test case one\n",
@ -902,7 +888,6 @@
" # Eigenvalues are roots of λ^4 - 11*λ^3 + 25*λ^2 + 31*λ - 46.\n", " # Eigenvalues are roots of λ^4 - 11*λ^3 + 25*λ^2 + 31*λ - 46.\n",
" eigenvalues_of_T = np.array([-1.45350244, 1., 4.65531023, 6.79819221])\n", " eigenvalues_of_T = np.array([-1.45350244, 1., 4.65531023, 6.79819221])\n",
" assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n", " assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n",
" #print(QREig(T))\n",
" \n", " \n",
" # Test case two\n", " # Test case two\n",
" T = np.array([\n", " T = np.array([\n",
@ -911,10 +896,7 @@
" [0,2,0,4],\n", " [0,2,0,4],\n",
" [0,0,0,3]\n", " [0,0,0,3]\n",
" ])\n", " ])\n",
" #eigenvalues_of_T = np.array([-3.35311, .141627, 3. , 4.21148])\n", " eigenvalues_of_T = np.sort(np.linalg.eig(T)[0])\n",
" eigenvalues_of_T = np.sort(eig(T)[0])\n",
" #print(QREig(T+np.eye(len(T)), k_max=1000000)-1)\n",
" print(np.sort(QREig(T, k_max=1000)))\n",
" assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n", " assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n",
"\n", "\n",
"test_QREig()" "test_QREig()"
@ -945,7 +927,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 77, "execution_count": null,
"metadata": { "metadata": {
"deletable": false, "deletable": false,
"nbgrader": { "nbgrader": {