From 3c865659a96c534474481b4bd19e5a3bf9d01f3b Mon Sep 17 00:00:00 2001 From: Kees van Kempen Date: Sun, 3 Apr 2022 17:05:11 +0200 Subject: [PATCH] Final: Make integration bounds for hopping relative to system, clean up QREig test --- ...l - Tight-binding propagation method.ipynb | 132 ++++++++---------- 1 file changed, 57 insertions(+), 75 deletions(-) diff --git a/Final/Final - Tight-binding propagation method.ipynb b/Final/Final - Tight-binding propagation method.ipynb index 1082744..e0f4c61 100644 --- a/Final/Final - Tight-binding propagation method.ipynb +++ b/Final/Final - Tight-binding propagation method.ipynb @@ -606,7 +606,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "metadata": { "deletable": false, "nbgrader": { @@ -644,10 +644,8 @@ " # 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", " # 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", - " infty = 5e1\n", - " h = 1e-5\n", - " x = np.arange(-infty, infty, h)\n", + " h = 1e-6\n", + " x = np.arange(positions[0] - 10*sigma, positions[-1] - 10*sigma, h)\n", " \n", " def V(x):\n", " ret = np.zeros(x.shape)\n", @@ -668,7 +666,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 21, "metadata": { "deletable": false, "nbgrader": { @@ -689,72 +687,72 @@ "output_type": "stream", "text": [ "For i = 0 ...\n", - "\tt_{i,i+1} = -0.13849171527765194\n", - "\tt_{i,i+2} = -3.0880816778755327e-06\n", - "\tt_{i,i+3} = -1.8833562169250255e-15\n", + "\tt_{i,i+1} = -0.1384916969413158\n", + "\tt_{i,i+2} = -3.0880817716278278e-06\n", + "\tt_{i,i+3} = -1.883355982770042e-15\n", "\n", "For i = 1 ...\n", - "\tt_{i,i-1} = -0.13849171527765194\n", - "\tt_{i,i+1} = -0.14871538196685558\n", - "\tt_{i,i+2} = -3.1307050912510583e-06\n", - "\tt_{i,i+3} = -1.9456306931892115e-15\n", + "\tt_{i,i-1} = -0.1384916969413158\n", + "\tt_{i,i+1} = -0.1487153634772844\n", + "\tt_{i,i+2} = -3.130698794594546e-06\n", + "\tt_{i,i+3} = -1.9456302197759757e-15\n", "\n", "For i = 2 ...\n", - "\tt_{i,i-1} = -0.14871538196685555\n", - "\tt_{i,i+1} = -0.1536327589565012\n", - "\tt_{i,i-2} = -3.0880816778755327e-06\n", - "\tt_{i,i+2} = -3.152251398227753e-06\n", - "\tt_{i,i+3} = -1.976347912754562e-15\n", + "\tt_{i,i-1} = -0.1487153634772844\n", + "\tt_{i,i+1} = -0.1536327215743931\n", + "\tt_{i,i-2} = -3.0880817716278278e-06\n", + "\tt_{i,i+2} = -3.1522451552639614e-06\n", + "\tt_{i,i+3} = -1.976347680690269e-15\n", "\n", "For i = 3 ...\n", - "\tt_{i,i-1} = -0.1536327589565012\n", - "\tt_{i,i+1} = -0.15605828154196247\n", - "\tt_{i,i-2} = -3.1307050912510583e-06\n", - "\tt_{i,i+2} = -3.1616580016478533e-06\n", - "\tt_{i,i-3} = -1.8833562169250255e-15\n", - "\tt_{i,i+3} = -1.98575211950378e-15\n", + "\tt_{i,i-1} = -0.1536327215743931\n", + "\tt_{i,i+1} = -0.15605826321748156\n", + "\tt_{i,i-2} = -3.130698794594546e-06\n", + "\tt_{i,i+2} = -3.1616580970991677e-06\n", + "\tt_{i,i-3} = -1.883355982770042e-15\n", + "\tt_{i,i+3} = -1.985751885523562e-15\n", "\n", "For i = 4 ...\n", - "\tt_{i,i-1} = -0.15605828154196244\n", - "\tt_{i,i+1} = -0.15680086554505168\n", - "\tt_{i,i-2} = -3.152251398227753e-06\n", - "\tt_{i,i+2} = -3.161664327360904e-06\n", - "\tt_{i,i-3} = -1.9456306931892115e-15\n", - "\tt_{i,i+3} = -1.976348151505985e-15\n", + "\tt_{i,i-1} = -0.15605826321748156\n", + "\tt_{i,i+1} = -0.15680084706928052\n", + "\tt_{i,i-2} = -3.1522451552639614e-06\n", + "\tt_{i,i+2} = -3.1616580336392234e-06\n", + "\tt_{i,i-3} = -1.945630219775976e-15\n", + "\tt_{i,i+3} = -1.976347665788238e-15\n", "\n", "For i = 5 ...\n", - "\tt_{i,i-1} = -0.15680086554505168\n", - "\tt_{i,i+1} = -0.156058300394482\n", - "\tt_{i,i-2} = -3.1616580016478533e-06\n", - "\tt_{i,i+2} = -3.152251395817713e-06\n", - "\tt_{i,i-3} = -1.9763479127545625e-15\n", - "\tt_{i,i+3} = -1.945630454073864e-15\n", + "\tt_{i,i-1} = -0.15680084706928052\n", + "\tt_{i,i+1} = -0.1560582620407699\n", + "\tt_{i,i-2} = -3.1616580970991677e-06\n", + "\tt_{i,i+2} = -3.1503884135302292e-06\n", + "\tt_{i,i-3} = -1.976347680690269e-15\n", + "\tt_{i,i+3} = -9.758917589446118e-16\n", "\n", "For i = 6 ...\n", - "\tt_{i,i-1} = -0.15605830039448199\n", - "\tt_{i,i+1} = -0.153632740075246\n", - "\tt_{i,i-2} = -3.161664327360904e-06\n", - "\tt_{i,i+2} = -3.1306987607180875e-06\n", - "\tt_{i,i-3} = -1.9857521195037804e-15\n", - "\tt_{i,i+3} = -1.8833562165610968e-15\n", + "\tt_{i,i-1} = -0.1560582620407699\n", + "\tt_{i,i+1} = -0.07705930210415016\n", + "\tt_{i,i-2} = -3.1616580336392234e-06\n", + "\tt_{i,i+2} = -1.8618361745866042e-09\n", + "\tt_{i,i-3} = -1.985751885523562e-15\n", + "\tt_{i,i+3} = -1.2520416620914092e-23\n", "\n", "For i = 7 ...\n", - "\tt_{i,i-1} = -0.153632740075246\n", - "\tt_{i,i+1} = -0.14871538193811829\n", - "\tt_{i,i-2} = -3.152251395817713e-06\n", - "\tt_{i,i+2} = -3.088087998768686e-06\n", - "\tt_{i,i-3} = -1.976348151505985e-15\n", + "\tt_{i,i-1} = -0.07705930210415014\n", + "\tt_{i,i+1} = -9.886491591078138e-10\n", + "\tt_{i,i-2} = -3.1503884135302292e-06\n", + "\tt_{i,i+2} = -8.457627155901465e-24\n", + "\tt_{i,i-3} = -1.976347665788238e-15\n", "\n", "For i = 8 ...\n", - "\tt_{i,i-1} = -0.14871538193811829\n", - "\tt_{i,i+1} = -0.1384917341014353\n", - "\tt_{i,i-2} = -3.1306987607180875e-06\n", - "\tt_{i,i-3} = -1.945630454073864e-15\n", + "\tt_{i,i-1} = -9.886491591078138e-10\n", + "\tt_{i,i+1} = -7.172547894745363e-31\n", + "\tt_{i,i-2} = -1.861836174586604e-09\n", + "\tt_{i,i-3} = -9.758917589446118e-16\n", "\n", "For i = 9 ...\n", - "\tt_{i,i-1} = -0.1384917341014353\n", - "\tt_{i,i-2} = -3.088087998768686e-06\n", - "\tt_{i,i-3} = -1.8833562165610968e-15\n", + "\tt_{i,i-1} = -7.1725478947453635e-31\n", + "\tt_{i,i-2} = -8.457627155901465e-24\n", + "\tt_{i,i-3} = -1.2520416620914093e-23\n", "\n" ] } @@ -797,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 14, "metadata": { "deletable": false, "nbgrader": { @@ -836,7 +834,6 @@ " Q, R = np.linalg.qr(T)\n", " T = np.matmul(R,Q)\n", " e = np.sum(np.abs(np.diag(T, k=1)))\n", - " print(k)\n", " return np.diag(T)" ] }, @@ -863,7 +860,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 15, "metadata": { "deletable": false, "nbgrader": { @@ -878,18 +875,7 @@ "task": false } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10000\n", - "1000\n", - "[-3.35311057 0.14162732 3. 4.21148325]\n", - "10000\n" - ] - } - ], + "outputs": [], "source": [ "def test_QREig():\n", " # Test case one\n", @@ -902,7 +888,6 @@ " # 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", " assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n", - " #print(QREig(T))\n", " \n", " # Test case two\n", " T = np.array([\n", @@ -911,10 +896,7 @@ " [0,2,0,4],\n", " [0,0,0,3]\n", " ])\n", - " #eigenvalues_of_T = np.array([-3.35311, .141627, 3. , 4.21148])\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", + " eigenvalues_of_T = np.sort(np.linalg.eig(T)[0])\n", " assert np.allclose(np.sort(QREig(T)), eigenvalues_of_T)\n", "\n", "test_QREig()" @@ -945,7 +927,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "metadata": { "deletable": false, "nbgrader": {