From 755163aba08285a7ce959d7ca54d657258936466 Mon Sep 17 00:00:00 2001 From: Sam Waseda <o.waseda@mpie.de> Date: Thu, 19 May 2022 14:21:22 +0200 Subject: [PATCH 1/9] add sams_file --- sams_file.py | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sams_file.py diff --git a/sams_file.py b/sams_file.py new file mode 100644 index 0000000..040f159 --- /dev/null +++ b/sams_file.py @@ -0,0 +1,2 @@ +def say_hello(): + return 'hello' -- GitLab From 68fbd4649e52af0759371bc8f3301800b5e32853 Mon Sep 17 00:00:00 2001 From: Sam Waseda <o.waseda@mpie.de> Date: Thu, 19 May 2022 14:28:10 +0200 Subject: [PATCH 2/9] update docker URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c416d00..9ef18f5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # collaborative_pyiron_in_binder -You can [use this repository as it is](https://notebooks.mpcdf.mpg.de/binder/v2/git/https%3A%2F%2Fgitlab.mpcdf.mpg.de%2Fvistock%2Fcollaborative_pyiron_in_binder/HEAD) or fork it, for example specifying the environment. +You can [use this repository as it is](https://notebooks.mpcdf.mpg.de/binder/v2/git/https%3A%2F%2Fgitlab.mpcdf.mpg.de%2Fsamsstud%2Fnobel-prize-project.git/HEAD) or fork it, for example specifying the environment. ## environment specifications The following packages are specified in the [environment.yml](https://gitlab.mpcdf.mpg.de/vistock/pyiron_in_binder/-/blob/main/environment.yml): -- GitLab From 5eabf91e981424e73a17ea8f1d044c081d0015f2 Mon Sep 17 00:00:00 2001 From: Osamu Waseda <o.waseda@mpie.de> Date: Thu, 19 May 2022 13:59:37 +0000 Subject: [PATCH 3/9] Upload New File --- master_equation.ipynb | 246 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 master_equation.ipynb diff --git a/master_equation.ipynb b/master_equation.ipynb new file mode 100644 index 0000000..a744a5d --- /dev/null +++ b/master_equation.ipynb @@ -0,0 +1,246 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import matplotlib.pylab as plt\n", + "from tqdm.auto import tqdm\n", + "from pint import UnitRegistry\n", + "%config InlineBackend.figure_format = 'retina'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\begin{align}\n", + "K_{ij} =& \\kappa e^{-\\beta E_{ij}}\\\\\n", + "\\frac{\\partial \\phi_i}{\\partial t} =& \\sum_j (K_{ij}\\phi_j - K_{ji}\\phi_i)\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$ \\sum_nK_{ni}\\delta_{ij}- K_{ij} = A_{ij}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\begin{align}\n", + "\\frac{\\partial \\phi_i}{\\partial t} =& \\sum_jA_{ij}\\phi_j + J_i e^{-\\rho t}\\\\\n", + "M^{-1}\\frac{\\partial\\phi}{\\partial t}+ \\Lambda M^{-1}\\phi =& M^{-1}J e^{-\\rho t}\\\\\n", + "\\frac{\\partial\\psi_i}{\\partial t}+ \\Lambda_i \\psi_i =& \\Xi_i e^{-\\rho t}\\\\\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\begin{align}\n", + "\\psi_i(t) = \\psi_i^0e^{-\\Lambda_i t}+\\frac{\\Xi_i}{\\Lambda_i - \\rho}(e^{-\\rho t}-e^{-\\Lambda_i t})\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\\begin{align}\n", + "\\phi_i(t) =& M_{ji} \\psi^0_je^{-\\Lambda_j t}\\\\\n", + "=& M_{ji} M_{jk}\\phi^0_ke^{-\\Lambda_j t}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "def get_K(N, M, T, E_fcc, E_bcc, kappa, x_interface):\n", + " indices = np.arange(N * M)\n", + " indices_mat = indices.reshape((N, M))\n", + " ureg = UnitRegistry()\n", + " kBT = (T * ureg.kelvin * ureg.boltzmann_constant).to('eV').magnitude\n", + " K = np.zeros(2*[len(indices)])\n", + " logkappa = np.log(kappa)\n", + " ind_interface = np.rint(x_interface * M).astype(int)\n", + " E = np.ones((N, M)) * E_fcc\n", + " E[:, :ind_interface] = E_bcc\n", + " for shift in [-1, 1]:\n", + " j = indices_mat.flatten()\n", + " i = np.roll(indices_mat, shift, axis=0).flatten()\n", + " K[i, j] = np.exp(-E.flatten() / kBT + logkappa)\n", + " j = indices_mat[:, 1:-1].flatten()\n", + " i = indices_mat[:, :-2].flatten()\n", + " K[i, j] = np.exp(-E[:, 1:-1].flatten() / kBT + logkappa)\n", + " i = indices_mat[:, 2:].flatten()\n", + " K[i, j] = np.exp(-E[:, 1:-1].flatten() / kBT + logkappa)\n", + " return K" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "T = 300\n", + "multi = 1\n", + "N = 20\n", + "MM = multi * N\n", + "E_fcc = 0.42\n", + "E_bcc = 0.05\n", + "# E_bcc = E_fcc\n", + "kappa = 10**(13)\n", + "x_interface = 0.5\n", + "# for T in [300, 400]:\n", + "K = get_K(N, MM, T, E_fcc, E_bcc, kappa, x_interface)\n", + "A = K.sum(axis=0) * np.eye(len(K)) - K\n", + "omega, M = np.linalg.eig(A)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [], + "source": [ + "# phi = 0.0001 * np.ones((N, MM))\n", + "phi = np.zeros((N, MM))\n", + "phi[0, 5] = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": {}, + "outputs": [], + "source": [ + "t = 1.0e-0\n", + "J = np.zeros_like(phi)\n", + "J[:, 1] = 0.1\n", + "rho = 0.0001\n", + "def get_phi_final(t, phi=phi, J=J, rho=rho, M=M, omega=omega):\n", + " phi_final = np.einsum(\n", + " 'ij,jk,k,j->i', M, np.linalg.inv(M), phi.flatten(), np.exp(-omega * t), optimize=True\n", + " ).reshape(phi.shape).real\n", + " Xi = np.einsum('jk,k->j', np.linalg.inv(M), J.flatten())\n", + " Xi /= omega - rho\n", + " Xi *= np.exp(-rho * t) - np.exp(-omega * t)\n", + " phi_final += np.einsum('ij,j->i', M, Xi).real.reshape(phi.shape)\n", + " return phi_final" + ] + }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.colorbar.Colorbar at 0x7fbd891cf950>" + ] + }, + "execution_count": 216, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 2 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 258, + "width": 288 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(get_phi_final(10000)[:, 1:-1]);\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 204, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 399 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "t = np.logspace(-14, 0.3, 100)\n", + "phi_release = [get_phi_final(tt)[:,-1].mean() for tt in t]\n", + "plt.xscale('log')\n", + "plt.plot(t, phi_release);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab From 00213efdbc7669f7f5886c66c525d3b41e73564a Mon Sep 17 00:00:00 2001 From: Sam Waseda <o.waseda@mpie.de> Date: Thu, 19 May 2022 16:01:03 +0200 Subject: [PATCH 4/9] remove sams_file --- sams_file.py | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 sams_file.py diff --git a/sams_file.py b/sams_file.py deleted file mode 100644 index 040f159..0000000 --- a/sams_file.py +++ /dev/null @@ -1,2 +0,0 @@ -def say_hello(): - return 'hello' -- GitLab From 443bb66f131ecb65069e5013d92c0a093cffbd31 Mon Sep 17 00:00:00 2001 From: Ali Tehranchi <tehranchi@mpie.de> Date: Thu, 30 Jun 2022 15:17:02 +0000 Subject: [PATCH 5/9] Upload New File --- Defective_matrix_eigen_vector_hackathon.ipynb | 1036 +++++++++++++++++ 1 file changed, 1036 insertions(+) create mode 100644 Defective_matrix_eigen_vector_hackathon.ipynb diff --git a/Defective_matrix_eigen_vector_hackathon.ipynb b/Defective_matrix_eigen_vector_hackathon.ipynb new file mode 100644 index 0000000..e88dce9 --- /dev/null +++ b/Defective_matrix_eigen_vector_hackathon.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import matplotlib.pylab as plt\n", + "from tqdm.auto import tqdm\n", + "from pint import UnitRegistry\n", + "%config InlineBackend.figure_format = 'retina'\n", + "from sklearn.cluster import AgglomerativeClustering" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.linalg import null_space\n", + "\n", + "def jordan(a):\n", + " e = a[:,0] # eigenvalues\n", + " m = a[:,1].astype('int') # multiplicities\n", + " d = np.repeat(e, m) # main diagonal\n", + " ones = np.ones(d.size - 1)\n", + " ones[np.cumsum(m)[:-1] -1] = 0\n", + " j = np.diag(d) + np.diag(ones, k=1)\n", + " return j\n", + "\n", + "def shrinkList(eigenvalues, dist_division=1e8):\n", + " distance_threshold = eigenvalues.ptp().real / dist_division\n", + " eigenvalues = np.column_stack((eigenvalues.real, eigenvalues.imag))\n", + " agg = AgglomerativeClustering(n_clusters=None, linkage='single', distance_threshold=distance_threshold)\n", + " labels = agg.fit_predict(eigenvalues)\n", + " indices, counts = np.unique(labels, return_counts=True, return_index=True)[1:]\n", + " counts = counts[indices.argsort()]\n", + " indices = np.sort(indices)\n", + " tup_lst = [[eigenvalues[ind][0] + 1j * eigenvalues[ind][1], c] for ind, c in zip(indices, counts)]\n", + " return tup_lst\n", + "\n", + "def generalized_eig(A, eigen_val, multi):\n", + " coef = A - eigen_val * np.eye(np.shape(A)[0])\n", + " ns = null_space(np.linalg.matrix_power(coef, multi))\n", + " M = np.zeros((np.shape(A)[0], multi))\n", + " # add check to make sure that (A - lambda)^(m-1)ns is non-zero\n", + " M[:, multi-1] = ns[:, 0].T\n", + " for i in range(1, multi):\n", + " eig = M[:, multi-i]\n", + " eig2 = np.matmul(coef, eig)\n", + " M[:, multi-i-1] = eig2\n", + " return M\n", + "\n", + "def defective_eigenvec(A):\n", + " omega, M = np.linalg.eig(A)\n", + " shrink_eig = shrinkList(omega)\n", + " shrink_eig=shrink_eig[:,shrink_eig[1,:].argsort()]\n", + " eig_vec = np.zeros((np.shape(A)[0], 1))\n", + " for eig in shrink_eig:\n", + " temp = generalized_eig(A, *eig)\n", + " eig_vec = np.concatenate((temp,eig_vec), axis=1)\n", + " eig_vec_trim = eig_vec[:, 0:-1]\n", + " return eig_vec_trim, jordan(np.array(shrink_eig)),shrink_eig\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_10969/148282566.py:3: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " multi = eig[0, 1].astype(int)\n" + ] + } + ], + "source": [ + "eig = np.array(shrinkList(D))\n", + "eigen_val = eig[0, 0].real\n", + "multi = eig[0, 1].astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "eigen_val = 0\n", + "multi = 98" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'A' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/1973702042.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcoef\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mA\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0meigen_val\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meye\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnull_space\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatrix_power\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoef\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmulti\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mM\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'A' is not defined" + ] + } + ], + "source": [ + "coef = A - eigen_val * np.eye(np.shape(A)[0])\n", + "ns = null_space(np.linalg.matrix_power(coef, multi))\n", + "M[:, 0] = ns[:, 0].T\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'ns' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/4061136703.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'ns' is not defined" + ] + } + ], + "source": [ + "ns.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "eigenvalues = D" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "distance_threshold = eigenvalues.ptp().real / 1e8\n", + "eigenvalues = np.column_stack((eigenvalues.real, eigenvalues.imag))\n", + "agg = AgglomerativeClustering(n_clusters=None, linkage='single', distance_threshold=distance_threshold)\n", + "labels = agg.fit_predict(eigenvalues)\n", + "indices, counts = np.unique(labels, return_counts=True, return_index=True)[1:]\n", + "tup_lst = [[eigenvalues[ind][0] + 1j * eigenvalues[ind][1], c] for ind, c in zip(indices, counts)]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1, 1, 98])" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "counts" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 2])" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "labels" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([0, 1, 2]), array([2, 1, 0]), array([98, 1, 1]))" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.unique(labels, return_counts=True, return_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[(-3.812573933160261e-15+6.493389254293014e-16j), 98],\n", + " [(140.71247279470285+0j), 1],\n", + " [(-140.71247279470285+0j), 1]]" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tup_lst" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3.00792769e+95, 3.82404896e+95, 2.46338999e+95, 3.69221124e+95,\n", + " 3.86506328e+95, 1.95089923e+95, 1.36122871e+95, 2.49283256e+95,\n", + " 2.01996430e+95, 1.92100181e+95, 2.96786399e+95, 1.88267141e+95,\n", + " 2.83477797e+95, 2.79450748e+95, 5.26841438e+95, 2.25237622e+95,\n", + " 5.16205737e+95, 3.91515384e+95, 1.84664669e+95, 1.96556390e+95,\n", + " 1.97570714e+95, 3.09848399e+95, 1.68172686e+95, 3.48711103e+95,\n", + " 2.50662123e+95, 2.63790650e+95, 3.20697923e+95, 2.12110799e+95,\n", + " 4.61531686e+95, 6.49940929e+95, 2.02844192e+95, 1.63064053e+95,\n", + " 1.77450402e+95, 3.18843909e+95, 1.04376905e+95, 2.32020388e+95,\n", + " 4.76078594e+95, 1.32634089e+95, 7.34486750e+95, 2.96588489e+95,\n", + " 1.34645619e+95, 1.67671854e+95, 1.47061692e+95, 3.88714254e+95,\n", + " 1.54285279e+95, 1.72346465e+95, 1.88372793e+95, 1.95543243e+95,\n", + " 3.89994638e+95, 1.64333614e+95, 1.35100930e+95, 1.11352506e+95,\n", + " 1.17983355e+95, 3.48133292e+95, 2.10716164e+95, 1.91941020e+95,\n", + " 2.38105408e+95, 2.53794659e+95, 1.09900250e+95, 2.13216919e+95,\n", + " 2.11327160e+95, 2.21692505e+95, 1.48221609e+95, 1.29532028e+95,\n", + " 1.40799583e+95, 1.78623202e+95, 9.96590969e+94, 2.58361915e+95,\n", + " 1.62088874e+95, 4.26124384e+95, 2.56953000e+95, 1.78174820e+95,\n", + " 1.41726985e+95, 2.20107548e+95, 2.19829713e+95, 3.38289782e+95,\n", + " 1.86765094e+95, 1.30022223e+95, 2.48661318e+95, 1.34895609e+95,\n", + " 2.51953235e+95, 2.09160376e+95, 1.05317088e+95, 1.42943668e+95,\n", + " 1.84126608e+95, 1.85366514e+95, 1.48154414e+95, 1.08334140e+95,\n", + " 2.05361917e+95, 2.29503224e+95, 1.08319428e+95, 2.09829130e+95,\n", + " 9.51325344e+94, 1.28653288e+95, 1.57230164e+95, 9.32915232e+94,\n", + " 1.12664059e+95, 1.20528115e+95])" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(np.einsum('ij,jn->ni', np.linalg.matrix_power(coef / 10, multi - 1), ns), axis=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0f8ff490>" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 247 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(ns)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1.00000000e+00 -1.00000000e+00 1.00000000e+00 -9.39618477e-01]\n", + " [ 0.00000000e+00 1.11022302e-15 -1.11022302e-15 2.68462422e-01]\n", + " [ 0.00000000e+00 0.00000000e+00 6.16297582e-31 -2.01346817e-01]\n", + " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.71156055e-02]]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 1.00000000e+00, 9.00719925e+14, -1.97032484e+15,\n", + " -9.00719925e+15],\n", + " [ 0.00000000e+00, 9.00719925e+14, 1.62259277e+30,\n", + " 4.86777830e+30],\n", + " [ 0.00000000e+00, 0.00000000e+00, 1.62259277e+30,\n", + " 4.86777830e+30],\n", + " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 1.48996644e+01]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "AA=[[5,1,-2,4],[0,5,2,2],[0,0,5,3],[0,0,0,4.]]\n", + "omega, M = np.linalg.eig(AA)\n", + "print(M)\n", + "np.linalg.inv(M)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.linalg import eig" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import Matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "m = Matrix(AA)\n", + "\n", + "M, D = m.jordan_form()\n", + "\n", + "M = np.array(M).astype(float)\n", + "D = np.array(D).astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "M, J = m.jordan_form()\n", + "M = np.array(M).astype(float)\n", + "J = np.array(J).astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5., 1., -2., 4.],\n", + " [ 0., 5., 2., 2.],\n", + " [ 0., 0., 5., 3.],\n", + " [ 0., 0., 0., 4.]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array(AA)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, -2, 4],\n", + " [ 0, 5, 2, 2],\n", + " [ 0, 0, 5, 3],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "list indices must be integers or slices, not tuple", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/2091953593.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mM\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mJ\u001b[0m \u001b[0;34m,\u001b[0m\u001b[0mshr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdefective_eigenvec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mAA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/tmp/ipykernel_10969/4009491504.py\u001b[0m in \u001b[0;36mdefective_eigenvec\u001b[0;34m(A)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0momega\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mshrink_eig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mshrinkList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0momega\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mshrink_eig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshrink_eig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mshrink_eig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margsort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0meig_vec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0meig\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mshrink_eig\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: list indices must be integers or slices, not tuple" + ] + } + ], + "source": [ + "M, J ,shr = defective_eigenvec(AA)\n", + "print(M)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_10969/3381428445.py:1: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 5, 1, 0, 0],\n", + " [ 0, 4, 0, -1],\n", + " [ 0, 0, 4, -1],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[5.+0.j 4.+0.j]\n", + " [3.+0.j 1.+0.j]]\n", + "[[4.+0.j 5.+0.j]\n", + " [1.+0.j 3.+0.j]]\n" + ] + } + ], + "source": [ + "array=np.array(shr).T\n", + "print(array)\n", + "narray=array[:,array[1,:].argsort()]\n", + "print(narray)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[5.+0.j 3.+0.j]\n", + " [4.+0.j 1.+0.j]]\n" + ] + } + ], + "source": [ + "\n", + "print(array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definition of Jordan matrix $J$ as given in `sympy.Matrix`\n", + "$$A = M J M^{-1}$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 0.0\n" + ] + } + ], + "source": [ + "def get_det(A, func, decimals=12):\n", + " eigenvectors = func(A)[1]\n", + " return np.round(np.absolute(np.linalg.det(eigenvectors)), decimals=decimals)\n", + "\n", + "n = 100\n", + "x = np.meshgrid(* 2 * [np.linspace(0, 2 * np.pi, n)])\n", + "A = np.sin(x[0]) + np.sin(x[1])\n", + "A += A.T # This step is redundant; just to convince everyone that it's symmetric\n", + "print(get_det(A, np.linalg.eigh), get_det(A, np.linalg.eig))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, -2, 4],\n", + " [ 0, 5, 2, 2],\n", + " [ 0, 0, 5, 3],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, D, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "D, M = np.linalg.eig(A / 10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x7f4e23dbb750>" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 261, + "width": 383 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(D.imag, D.real)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.colorbar.Colorbar at 0x7f4e114744d0>" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 2 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 313 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(J.real)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5.63965383e+001-4.33210347e-015j,\n", + " 4.50767646e-012+5.15949200e-030j,\n", + " 1.37114011e-010-5.47699766e-027j, ...,\n", + " 5.52206800e+194+4.23749038e+177j,\n", + " -9.43515547e+001+3.30256858e-016j,\n", + " 9.06175047e+001+2.60339672e-015j],\n", + " [-1.66485700e+015+7.13098173e-001j,\n", + " 8.99541245e+001+5.52006322e-015j,\n", + " 3.43069394e+003+1.07158146e-012j, ...,\n", + " 2.23456715e+208+4.36845608e+191j,\n", + " -3.47607781e+015-2.30157271e-001j,\n", + " 4.28581858e+015-2.09763668e-001j],\n", + " [-1.11807483e+028-2.04952734e+010j,\n", + " -2.25060244e+015+1.24677265e-003j,\n", + " -6.71111066e+016+1.60383710e-002j, ...,\n", + " -3.46821829e+221+3.58811999e+203j,\n", + " 5.61900563e+028-4.95111223e+010j,\n", + " -6.24676508e+028+8.02302615e+010j],\n", + " ...,\n", + " [-7.08306083e-177-4.62219790e-194j,\n", + " -4.79617379e-190-5.38790294e-207j,\n", + " -1.67301111e-188-1.63479987e-205j, ...,\n", + " -5.37487162e+016-7.79318832e-001j,\n", + " 9.73010917e-177+1.28308082e-193j,\n", + " -7.83123453e-177-1.36661354e-193j],\n", + " [-4.89294401e+016-3.09991619e-001j,\n", + " -2.45906209e+003-3.75578678e-014j,\n", + " -8.86308668e+004-1.13105109e-012j, ...,\n", + " -2.35097404e+209-5.50233161e+192j,\n", + " 4.50548674e+016+9.02166731e-001j,\n", + " -2.97380048e+016-9.71665443e-001j],\n", + " [-7.16552141e+015-3.55589024e-002j,\n", + " -1.27855853e+003-2.49914691e-015j,\n", + " -3.95168451e+004-8.56933463e-014j, ...,\n", + " -1.86950898e+209-2.80692793e+191j,\n", + " 3.08282215e+016+5.05429839e-002j,\n", + " -3.26961554e+016-4.13871317e-002j]])" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', np.linalg.inv(M), J, M)" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-7.07106781e-002, 7.07106781e-002, 0.00000000e+000, ...,\n", + " -2.11998634e+187, -8.59723804e+188, -4.19757296e+191],\n", + " [-6.43363344e-002, 7.70850219e-002, 1.29220935e-002, ...,\n", + " -2.17506417e+187, -1.12863949e+189, -4.30662707e+191],\n", + " [-5.79876578e-002, 8.34336984e-002, -6.82846278e-002, ...,\n", + " -2.22992023e+187, -1.39647235e+189, -4.41524205e+191],\n", + " ...,\n", + " [-8.34336984e-002, 5.79876578e-002, -1.87734411e-002, ...,\n", + " -2.01005246e+187, -3.22975258e+188, -3.97990387e+191],\n", + " [-7.70850219e-002, 6.43363344e-002, -1.12431051e-002, ...,\n", + " -2.06490851e+187, -5.90808117e+188, -4.08851885e+191],\n", + " [-7.07106781e-002, 7.07106781e-002, -3.18905921e-002, ...,\n", + " -2.11998634e+187, -8.59723804e+188, -4.19757296e+191]])" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.colorbar.Colorbar at 0x7f4e0df91f10>" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 2 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 310 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(M)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.00000000e+00, 1.26847839e-03, 2.53184907e-03, ...,\n", + " -2.53184907e-03, -1.26847839e-03, -4.89858720e-18],\n", + " [ 1.26847839e-03, 2.53695679e-03, 3.80032746e-03, ...,\n", + " -1.26337068e-03, -2.77555756e-19, 1.26847839e-03],\n", + " [ 2.53184907e-03, 3.80032746e-03, 5.06369814e-03, ...,\n", + " 4.44089210e-18, 1.26337068e-03, 2.53184907e-03],\n", + " ...,\n", + " [-2.53184907e-03, -1.26337068e-03, 4.44089210e-18, ...,\n", + " -5.06369814e-03, -3.80032746e-03, -2.53184907e-03],\n", + " [-1.26847839e-03, -2.77555756e-19, 1.26337068e-03, ...,\n", + " -3.80032746e-03, -2.53695679e-03, -1.26847839e-03],\n", + " [-4.89858720e-18, 1.26847839e-03, 2.53184907e-03, ...,\n", + " -2.53184907e-03, -1.26847839e-03, -9.79717439e-18]])" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A / 100" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-3.74352472e+14, -3.55849771e+14, -3.37421574e+14, ...,\n", + " -4.11283369e+14, -3.92855172e+14, -3.74352472e+14],\n", + " [ 1.01272178e+15, 9.62667119e+14, 9.12814005e+14, ...,\n", + " 1.11262956e+15, 1.06277645e+15, 1.01272178e+15],\n", + " [-1.45771758e+14, -1.38566861e+14, -1.31390975e+14, ...,\n", + " -1.60152542e+14, -1.52976656e+14, -1.45771758e+14],\n", + " ...,\n", + " [ 7.15259536e+14, 6.79907204e+14, 6.44697223e+14, ...,\n", + " 7.85821850e+14, 7.50611869e+14, 7.15259536e+14],\n", + " [-1.17798961e+15, -1.11976644e+15, -1.06177771e+15, ...,\n", + " -1.29420152e+15, -1.23621279e+15, -1.17798961e+15],\n", + " [ 5.95762341e+14, 5.66316262e+14, 5.36988753e+14, ...,\n", + " 6.54535928e+14, 6.25208419e+14, 5.95762341e+14]])" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ji,jk,lk->il', np.linalg.inv(M), J, M).real" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:1: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " \"\"\"Entry point for launching an IPython kernel.\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[-1, 0, 0, ..., 0, 0, 0],\n", + " [ 0, 1, 0, ..., 0, 0, 0],\n", + " [ 0, 0, 0, ..., 0, 0, 0],\n", + " ...,\n", + " [ 0, 0, 0, ..., 0, 1, 0],\n", + " [ 0, 0, 0, ..., 0, 0, 1],\n", + " [ 0, 0, 0, ..., 0, 0, 0]])" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J.astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.07071068 -0.07071068 0.17856246 ... 0.00070454 -0.00180815\n", + " 0.00139499]\n", + " [-0.06433633 -0.07708502 -0.17681376 ... 0.0005887 -0.00171878\n", + " 0.00116563]\n", + " [-0.05798766 -0.0834337 -0.02230244 ... 0.00047333 -0.00162977\n", + " 0.0009372 ]\n", + " ...\n", + " [-0.0834337 -0.05798766 0.01097759 ... 0.00093575 -0.00198653\n", + " 0.00185279]\n", + " [-0.07708502 -0.06433633 0.07618018 ... 0.00082038 -0.00189752\n", + " 0.00162435]\n", + " [-0.07071068 -0.07071068 0.06501264 ... 0.00070454 -0.00180815\n", + " 0.00139499]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:28: ComplexWarning: Casting complex values to real discards the imaginary part\n", + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:32: ComplexWarning: Casting complex values to real discards the imaginary part\n", + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:5: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " \"\"\"\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[-5.16678444e+14, -7.15509958e+14, -2.20562527e+15, ...,\n", + " 2.22768865e+15, -8.00440378e+14, 1.27912728e+15],\n", + " [ 2.48256186e+15, 1.31096411e+16, -5.86371522e+15, ...,\n", + " 3.42226880e+14, -1.29934837e+16, 5.42427352e+15],\n", + " [-2.29022110e-01, -7.60207852e+00, 2.64846375e+00, ...,\n", + " 3.73267679e-01, 8.72755719e+00, -2.74691109e+00],\n", + " ...,\n", + " [-5.05308167e+16, -3.54974809e+16, -2.26157698e+17, ...,\n", + " -3.20790846e+17, 2.88041095e+16, -2.99378594e+17],\n", + " [-2.22981179e+17, 8.64609685e+16, 1.05252059e+17, ...,\n", + " -4.15688382e+16, -2.39645842e+16, -2.64191347e+17],\n", + " [-1.04563533e+17, 2.82871826e+17, -4.07167340e+16, ...,\n", + " 1.99785148e+17, -3.29034172e+17, 1.66407382e+17]])" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M, J = defective_eigenvec(A / 100)\n", + "print(M)\n", + "np.linalg.inv(M)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab From da1ccbca14821abf65eac7555148ca92f4d6a39c Mon Sep 17 00:00:00 2001 From: Ali Tehranchi <tehranchi@mpie.de> Date: Thu, 30 Jun 2022 15:17:54 +0000 Subject: [PATCH 6/9] Upload New File --- Defective_matrix_eigen_vector_hackathon.ipynb | 1036 +++++++++++++++++ 1 file changed, 1036 insertions(+) create mode 100644 Defective_matrix_eigen_vector_hackathon.ipynb diff --git a/Defective_matrix_eigen_vector_hackathon.ipynb b/Defective_matrix_eigen_vector_hackathon.ipynb new file mode 100644 index 0000000..e88dce9 --- /dev/null +++ b/Defective_matrix_eigen_vector_hackathon.ipynb @@ -0,0 +1,1036 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import matplotlib.pylab as plt\n", + "from tqdm.auto import tqdm\n", + "from pint import UnitRegistry\n", + "%config InlineBackend.figure_format = 'retina'\n", + "from sklearn.cluster import AgglomerativeClustering" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.linalg import null_space\n", + "\n", + "def jordan(a):\n", + " e = a[:,0] # eigenvalues\n", + " m = a[:,1].astype('int') # multiplicities\n", + " d = np.repeat(e, m) # main diagonal\n", + " ones = np.ones(d.size - 1)\n", + " ones[np.cumsum(m)[:-1] -1] = 0\n", + " j = np.diag(d) + np.diag(ones, k=1)\n", + " return j\n", + "\n", + "def shrinkList(eigenvalues, dist_division=1e8):\n", + " distance_threshold = eigenvalues.ptp().real / dist_division\n", + " eigenvalues = np.column_stack((eigenvalues.real, eigenvalues.imag))\n", + " agg = AgglomerativeClustering(n_clusters=None, linkage='single', distance_threshold=distance_threshold)\n", + " labels = agg.fit_predict(eigenvalues)\n", + " indices, counts = np.unique(labels, return_counts=True, return_index=True)[1:]\n", + " counts = counts[indices.argsort()]\n", + " indices = np.sort(indices)\n", + " tup_lst = [[eigenvalues[ind][0] + 1j * eigenvalues[ind][1], c] for ind, c in zip(indices, counts)]\n", + " return tup_lst\n", + "\n", + "def generalized_eig(A, eigen_val, multi):\n", + " coef = A - eigen_val * np.eye(np.shape(A)[0])\n", + " ns = null_space(np.linalg.matrix_power(coef, multi))\n", + " M = np.zeros((np.shape(A)[0], multi))\n", + " # add check to make sure that (A - lambda)^(m-1)ns is non-zero\n", + " M[:, multi-1] = ns[:, 0].T\n", + " for i in range(1, multi):\n", + " eig = M[:, multi-i]\n", + " eig2 = np.matmul(coef, eig)\n", + " M[:, multi-i-1] = eig2\n", + " return M\n", + "\n", + "def defective_eigenvec(A):\n", + " omega, M = np.linalg.eig(A)\n", + " shrink_eig = shrinkList(omega)\n", + " shrink_eig=shrink_eig[:,shrink_eig[1,:].argsort()]\n", + " eig_vec = np.zeros((np.shape(A)[0], 1))\n", + " for eig in shrink_eig:\n", + " temp = generalized_eig(A, *eig)\n", + " eig_vec = np.concatenate((temp,eig_vec), axis=1)\n", + " eig_vec_trim = eig_vec[:, 0:-1]\n", + " return eig_vec_trim, jordan(np.array(shrink_eig)),shrink_eig\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_10969/148282566.py:3: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " multi = eig[0, 1].astype(int)\n" + ] + } + ], + "source": [ + "eig = np.array(shrinkList(D))\n", + "eigen_val = eig[0, 0].real\n", + "multi = eig[0, 1].astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "eigen_val = 0\n", + "multi = 98" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'A' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/1973702042.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcoef\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mA\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0meigen_val\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meye\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mns\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnull_space\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmatrix_power\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoef\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmulti\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mM\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mns\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'A' is not defined" + ] + } + ], + "source": [ + "coef = A - eigen_val * np.eye(np.shape(A)[0])\n", + "ns = null_space(np.linalg.matrix_power(coef, multi))\n", + "M[:, 0] = ns[:, 0].T\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'ns' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/4061136703.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'ns' is not defined" + ] + } + ], + "source": [ + "ns.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "eigenvalues = D" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "distance_threshold = eigenvalues.ptp().real / 1e8\n", + "eigenvalues = np.column_stack((eigenvalues.real, eigenvalues.imag))\n", + "agg = AgglomerativeClustering(n_clusters=None, linkage='single', distance_threshold=distance_threshold)\n", + "labels = agg.fit_predict(eigenvalues)\n", + "indices, counts = np.unique(labels, return_counts=True, return_index=True)[1:]\n", + "tup_lst = [[eigenvalues[ind][0] + 1j * eigenvalues[ind][1], c] for ind, c in zip(indices, counts)]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1, 1, 98])" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "counts" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 1, 2])" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "labels" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([0, 1, 2]), array([2, 1, 0]), array([98, 1, 1]))" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.unique(labels, return_counts=True, return_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[(-3.812573933160261e-15+6.493389254293014e-16j), 98],\n", + " [(140.71247279470285+0j), 1],\n", + " [(-140.71247279470285+0j), 1]]" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tup_lst" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3.00792769e+95, 3.82404896e+95, 2.46338999e+95, 3.69221124e+95,\n", + " 3.86506328e+95, 1.95089923e+95, 1.36122871e+95, 2.49283256e+95,\n", + " 2.01996430e+95, 1.92100181e+95, 2.96786399e+95, 1.88267141e+95,\n", + " 2.83477797e+95, 2.79450748e+95, 5.26841438e+95, 2.25237622e+95,\n", + " 5.16205737e+95, 3.91515384e+95, 1.84664669e+95, 1.96556390e+95,\n", + " 1.97570714e+95, 3.09848399e+95, 1.68172686e+95, 3.48711103e+95,\n", + " 2.50662123e+95, 2.63790650e+95, 3.20697923e+95, 2.12110799e+95,\n", + " 4.61531686e+95, 6.49940929e+95, 2.02844192e+95, 1.63064053e+95,\n", + " 1.77450402e+95, 3.18843909e+95, 1.04376905e+95, 2.32020388e+95,\n", + " 4.76078594e+95, 1.32634089e+95, 7.34486750e+95, 2.96588489e+95,\n", + " 1.34645619e+95, 1.67671854e+95, 1.47061692e+95, 3.88714254e+95,\n", + " 1.54285279e+95, 1.72346465e+95, 1.88372793e+95, 1.95543243e+95,\n", + " 3.89994638e+95, 1.64333614e+95, 1.35100930e+95, 1.11352506e+95,\n", + " 1.17983355e+95, 3.48133292e+95, 2.10716164e+95, 1.91941020e+95,\n", + " 2.38105408e+95, 2.53794659e+95, 1.09900250e+95, 2.13216919e+95,\n", + " 2.11327160e+95, 2.21692505e+95, 1.48221609e+95, 1.29532028e+95,\n", + " 1.40799583e+95, 1.78623202e+95, 9.96590969e+94, 2.58361915e+95,\n", + " 1.62088874e+95, 4.26124384e+95, 2.56953000e+95, 1.78174820e+95,\n", + " 1.41726985e+95, 2.20107548e+95, 2.19829713e+95, 3.38289782e+95,\n", + " 1.86765094e+95, 1.30022223e+95, 2.48661318e+95, 1.34895609e+95,\n", + " 2.51953235e+95, 2.09160376e+95, 1.05317088e+95, 1.42943668e+95,\n", + " 1.84126608e+95, 1.85366514e+95, 1.48154414e+95, 1.08334140e+95,\n", + " 2.05361917e+95, 2.29503224e+95, 1.08319428e+95, 2.09829130e+95,\n", + " 9.51325344e+94, 1.28653288e+95, 1.57230164e+95, 9.32915232e+94,\n", + " 1.12664059e+95, 1.20528115e+95])" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(np.einsum('ij,jn->ni', np.linalg.matrix_power(coef / 10, multi - 1), ns), axis=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0f8ff490>" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 247 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(ns)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1.00000000e+00 -1.00000000e+00 1.00000000e+00 -9.39618477e-01]\n", + " [ 0.00000000e+00 1.11022302e-15 -1.11022302e-15 2.68462422e-01]\n", + " [ 0.00000000e+00 0.00000000e+00 6.16297582e-31 -2.01346817e-01]\n", + " [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.71156055e-02]]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 1.00000000e+00, 9.00719925e+14, -1.97032484e+15,\n", + " -9.00719925e+15],\n", + " [ 0.00000000e+00, 9.00719925e+14, 1.62259277e+30,\n", + " 4.86777830e+30],\n", + " [ 0.00000000e+00, 0.00000000e+00, 1.62259277e+30,\n", + " 4.86777830e+30],\n", + " [ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,\n", + " 1.48996644e+01]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "AA=[[5,1,-2,4],[0,5,2,2],[0,0,5,3],[0,0,0,4.]]\n", + "omega, M = np.linalg.eig(AA)\n", + "print(M)\n", + "np.linalg.inv(M)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.linalg import eig" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import Matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "m = Matrix(AA)\n", + "\n", + "M, D = m.jordan_form()\n", + "\n", + "M = np.array(M).astype(float)\n", + "D = np.array(D).astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "M, J = m.jordan_form()\n", + "M = np.array(M).astype(float)\n", + "J = np.array(J).astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5., 1., -2., 4.],\n", + " [ 0., 5., 2., 2.],\n", + " [ 0., 0., 5., 3.],\n", + " [ 0., 0., 0., 4.]])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array(AA)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, -2, 4],\n", + " [ 0, 5, 2, 2],\n", + " [ 0, 0, 5, 3],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "list indices must be integers or slices, not tuple", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_10969/2091953593.py\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mM\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mJ\u001b[0m \u001b[0;34m,\u001b[0m\u001b[0mshr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdefective_eigenvec\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mAA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mM\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/tmp/ipykernel_10969/4009491504.py\u001b[0m in \u001b[0;36mdefective_eigenvec\u001b[0;34m(A)\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0momega\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mM\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meig\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0mshrink_eig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mshrinkList\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0momega\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 38\u001b[0;31m \u001b[0mshrink_eig\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshrink_eig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mshrink_eig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0margsort\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 39\u001b[0m \u001b[0meig_vec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mA\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0meig\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mshrink_eig\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: list indices must be integers or slices, not tuple" + ] + } + ], + "source": [ + "M, J ,shr = defective_eigenvec(AA)\n", + "print(M)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_10969/3381428445.py:1: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 5, 1, 0, 0],\n", + " [ 0, 4, 0, -1],\n", + " [ 0, 0, 4, -1],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[5.+0.j 4.+0.j]\n", + " [3.+0.j 1.+0.j]]\n", + "[[4.+0.j 5.+0.j]\n", + " [1.+0.j 3.+0.j]]\n" + ] + } + ], + "source": [ + "array=np.array(shr).T\n", + "print(array)\n", + "narray=array[:,array[1,:].argsort()]\n", + "print(narray)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[5.+0.j 3.+0.j]\n", + " [4.+0.j 1.+0.j]]\n" + ] + } + ], + "source": [ + "\n", + "print(array)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Definition of Jordan matrix $J$ as given in `sympy.Matrix`\n", + "$$A = M J M^{-1}$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 0.0\n" + ] + } + ], + "source": [ + "def get_det(A, func, decimals=12):\n", + " eigenvectors = func(A)[1]\n", + " return np.round(np.absolute(np.linalg.det(eigenvectors)), decimals=decimals)\n", + "\n", + "n = 100\n", + "x = np.meshgrid(* 2 * [np.linspace(0, 2 * np.pi, n)])\n", + "A = np.sin(x[0]) + np.sin(x[1])\n", + "A += A.T # This step is redundant; just to convince everyone that it's symmetric\n", + "print(get_det(A, np.linalg.eigh), get_det(A, np.linalg.eig))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, -2, 4],\n", + " [ 0, 5, 2, 2],\n", + " [ 0, 0, 5, 3],\n", + " [ 0, 0, 0, 4]])" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', M, D, np.linalg.inv(M)).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "D, M = np.linalg.eig(A / 10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.collections.PathCollection at 0x7f4e23dbb750>" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 261, + "width": 383 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(D.imag, D.real)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.colorbar.Colorbar at 0x7f4e114744d0>" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 2 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 313 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(J.real)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5.63965383e+001-4.33210347e-015j,\n", + " 4.50767646e-012+5.15949200e-030j,\n", + " 1.37114011e-010-5.47699766e-027j, ...,\n", + " 5.52206800e+194+4.23749038e+177j,\n", + " -9.43515547e+001+3.30256858e-016j,\n", + " 9.06175047e+001+2.60339672e-015j],\n", + " [-1.66485700e+015+7.13098173e-001j,\n", + " 8.99541245e+001+5.52006322e-015j,\n", + " 3.43069394e+003+1.07158146e-012j, ...,\n", + " 2.23456715e+208+4.36845608e+191j,\n", + " -3.47607781e+015-2.30157271e-001j,\n", + " 4.28581858e+015-2.09763668e-001j],\n", + " [-1.11807483e+028-2.04952734e+010j,\n", + " -2.25060244e+015+1.24677265e-003j,\n", + " -6.71111066e+016+1.60383710e-002j, ...,\n", + " -3.46821829e+221+3.58811999e+203j,\n", + " 5.61900563e+028-4.95111223e+010j,\n", + " -6.24676508e+028+8.02302615e+010j],\n", + " ...,\n", + " [-7.08306083e-177-4.62219790e-194j,\n", + " -4.79617379e-190-5.38790294e-207j,\n", + " -1.67301111e-188-1.63479987e-205j, ...,\n", + " -5.37487162e+016-7.79318832e-001j,\n", + " 9.73010917e-177+1.28308082e-193j,\n", + " -7.83123453e-177-1.36661354e-193j],\n", + " [-4.89294401e+016-3.09991619e-001j,\n", + " -2.45906209e+003-3.75578678e-014j,\n", + " -8.86308668e+004-1.13105109e-012j, ...,\n", + " -2.35097404e+209-5.50233161e+192j,\n", + " 4.50548674e+016+9.02166731e-001j,\n", + " -2.97380048e+016-9.71665443e-001j],\n", + " [-7.16552141e+015-3.55589024e-002j,\n", + " -1.27855853e+003-2.49914691e-015j,\n", + " -3.95168451e+004-8.56933463e-014j, ...,\n", + " -1.86950898e+209-2.80692793e+191j,\n", + " 3.08282215e+016+5.05429839e-002j,\n", + " -3.26961554e+016-4.13871317e-002j]])" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ij,jk,kl->il', np.linalg.inv(M), J, M)" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-7.07106781e-002, 7.07106781e-002, 0.00000000e+000, ...,\n", + " -2.11998634e+187, -8.59723804e+188, -4.19757296e+191],\n", + " [-6.43363344e-002, 7.70850219e-002, 1.29220935e-002, ...,\n", + " -2.17506417e+187, -1.12863949e+189, -4.30662707e+191],\n", + " [-5.79876578e-002, 8.34336984e-002, -6.82846278e-002, ...,\n", + " -2.22992023e+187, -1.39647235e+189, -4.41524205e+191],\n", + " ...,\n", + " [-8.34336984e-002, 5.79876578e-002, -1.87734411e-002, ...,\n", + " -2.01005246e+187, -3.22975258e+188, -3.97990387e+191],\n", + " [-7.70850219e-002, 6.43363344e-002, -1.12431051e-002, ...,\n", + " -2.06490851e+187, -5.90808117e+188, -4.08851885e+191],\n", + " [-7.07106781e-002, 7.07106781e-002, -3.18905921e-002, ...,\n", + " -2.11998634e+187, -8.59723804e+188, -4.19757296e+191]])" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M" + ] + }, + { + "cell_type": "code", + "execution_count": 176, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.colorbar.Colorbar at 0x7f4e0df91f10>" + ] + }, + "execution_count": 176, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmwAAAH2CAYAAADNgNCdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAABYlAAAWJQFJUiTwAAA1UElEQVR4nO3de5hldXng++/bRUML0o0XUKMcBIRuR3NRCGpjoIGEII5cpJnDTIIJjzITwwwSzFFHQJGYJ5oZA+JRPAeDxGjSxPYRTyJBEgFRUHhAjRrul45yD7QC0veq9/yxVtl779q7qnbttXuvWvX9PM96fr3W+u21f70o7bfe3y0yE0mSJNXXolE3QJIkSdMzYJMkSao5AzZJkqSaM2CTJEmqOQM2SZKkmjNgkyRJqjkDNkmSpJozYJMkSao5AzZJkqSaM2CTJEmqOQM2SZKkmjNgkyRJqjkDNkmSpJozYJMkSaq5kQZsEfGyiLgsIh6OiM0RsS4iLoqI542yXZIkSXUSmTmaL47YH7gJ2Av4CnAncAhwBHAXcGhmPjmSxkmSJNXIKDNsn6II1s7MzBMy832ZeSRwIbAc+NMRtk2SJKk2RpJhi4j9gPuAdcD+mTnRcm934BEggL0y89kd3kBJkqQa2WlE33tkWV7TGqwBZOYzEXEjcDTweuDr/T48Ih4AllIEhJIkzUcvB57OzH1H1YCI+AKwYkiPvzMzf2dIz26cUQVsy8vy7h7376EI2A5kDgEbsDQWL37+4r1e9PzpKu29xxNt5z95dtrqkiQNV2z/49aH/p3csnV0bSmseM6SeO0rD9i50ofecc8WNm4azRj6+WpUAduysnyqx/3J63tM95CIuK3HrSWL93oRLzvzj6ZtxIWrP9t2/q6b//O09SVJqkq3EUmxaPvFh97/KbY88PC6Hdei7lYcsJibr3lZpc885Oif8L0fbqn0mU1X13XYJn/HMPyWJEkL3qgybJMZtGU97i/tqNdVZh7U7XqZeXvt3JomSZJajbcPN9cIjCpgu6ssD+xx/4Cy7DXGbVZybPufF22bev+CC05rv/Dbmwb5OkmSpKEYVcB2XVkeHRGLuizrcSiwEfjOKBonSZIKCUxUPELJ8U79G8kYtsy8D7iGYsryGR23PwTsBnzONdgkSZJGl2ED+EOKrakujoijgDuA11FsTXU3cM4I2yZJkgBIJqh6DJs5tn6NLGDLzPsi4mDgAuAY4FiKHQ4uBj6UmetH1TZJklRIYLziXZEM1/o3ygwbmfkT4LQZK85FJDm2/UciNseUKo8f1r4g4diUGpIkSaM30oBNkiTVX9WTDtS/ui6cK0mSpJIZNkmS1FMC4y7rMXLNDtha8ocxPnUM2+8cfHPb+Zp/PXjYLZIkCYCY+s8SZMvFGkU1domOnl2ikiRJNdfsDJskSRpIkkNY1sOMXb/MsEmSJNVcczNsQfs6bF0Waf7bH7WPWes6nkCSpAWu6n0O1L/mBmySJGlgzhKtB7tEJUmSas4MmyRJmta4KbGRM8MmSZJUc43NsCUdkw7Gp9b55b0fbjv/0YO/NORWSZI0vyTVTzowYdc/M2ySJEk119gMmyRJqsY4rns1agZskiSpp0yYqLgPs+KNExaE5gZsQfvm71064P/l9n3azseWbh1umyRJkuaguQGbJEmqQAyhS9Qu1n456UCSJM1LEfGyiLgsIh6OiM0RsS4iLoqI583y8y+IiHdExJcj4t6I2BgRT0XEtyLi7RFRmzjJDJskSeqp2Jqq2oxYFUPYImJ/4CZgL+ArwJ3AIcC7gGMi4tDMfHKGx5wMXAI8AlwH/Bh4EfBW4DPAmyLi5MzRj7prdsC2aPrN3/f4Yftf/5lDHcMmSVKniaxlF+anKIK1MzPzE5MXI+IvgD8C/hT4gxmecTdwHPDVzPxFpBAR7wduAU6iCN6+VG3T+1ebVJ8kSdJsRMR+wNHAOuCTHbc/CDwLnBoRu033nMy8NjP/vjVYK68/Cny6PF1VRZsHZcAmSZJ6muwSrfKooH/xyLK8pkuw9QxwI7Ar8PoBvmOy223bAM+oTLO7RCVJUl2tiIjbut3IzINm+Ozysry7x/17KDJwBwJf77dhEbET8Lby9Op+Pz8MBmySJGkawXjlHXIDj4lbVpZP9bg/eX2POT7/I8Crgasy82tzfEalmhuwBTNOOnj2/xj5pA9JkmotqX7SQfmv752zyKTN1WSD+/6HPiLOBN5NMev01CobNQjHsEmSpPlmMoO2rMf9pR31ZiUizgA+DtwOHJGZ6+fWvOo1N8MmSZIqUcPN3+8qywN73D+gLHuNcZsiIs4CLgR+BByVmY/PuXVDYIZNkiTNN9eV5dGduxFExO7AocBG4DuzeVhEvJciWPs+RWatVsEaND3D1vqfsMsYtom9N+2wpkiSNB8lMJ7V5ncGHUGemfdFxDUUM0HPAD7RcvtDwG7A/5OZzwJExGJgf2BrZt7X+qyIOA+4ALgNOLpO3aCtmh2wSZKkAQUT9ZslCvCHFFtTXRwRRwF3AK8DjqDoCj2npe5Ly/v/Brz8F62I+D2KYG0c+CZwZsSUtq3LzMuraPAgDNgkSdK8U2bZDqYIuI4BjqXYE/Ri4EOzzJTtW5ZjwFk96nwDuHygxlbAgE2SJPVU183fATLzJ8Bps6i3ji5pvcw8Hzi/ouYMVWMDtogkxrYPXFs0PrXOPi96su383x57wbCbJUmS1LfGBmySJGlwdZx0sBC5rIckSVLNmWGTJEnTCCYqXzi3dgvx1p4BmyRJ6qmYdGCX6Kg1OmCLls3fuy2cu9/uTjqQJEn11+iATZIkDSirn3Rgiq1/TjqQJEmqOTNskiSppxzC1lTppIO+NTpgi5afr+gyhu17l/5K+4Uj3AxekqRO42mANWp2iUqSJNVcozNskiRpMC7rUQ9m2CRJkmrODJskSZpGMFH1sh5OOuhbcwO2AGJ70rXbpIMn37C17XxsyE2SJGm+sUu0HuwSlSRJqrnmZtgkSVIlXNZj9MywSZIk1VyjM2yLWsawdesw3+O7O7edP7Ny45BbJEnS/OJOB/Vghk2SJKnmGp1hkyRJgxuvfFkP9cuATZIk9ZTARMVdmC7r0b/GBmxBEota12Gb+uNx0Gk/aDu/7t4Dh94uSZKkfjU2YJMkSRXIqL5L1GVC+mantCRJUs2ZYZMkST25NVU9GLBJkqRpTdiFOXKNDtiidfP3LuH883d+dge2RpKk6aWpJ/XQ6IBNkiQNJokhdImaseuXkw4kSZJqzgybJEma1oQ7HYxccwO2gEVtC+dOrfLstl12YIMkSZp/ilmi7nQwaobMkiRJNdfcDJskSapADKFL1EkH/TLDJkmSVHONzrC1rsPWrcP8m58/qP3CIRuH2yBJkuYZx7DVgxk2SZKkmmt0hk2SJA3OZT1Gz4BNkiT1lBmMVxywpXuT9m3g/wIR8YKIeEdEfDki7o2IjRHxVER8KyLeHhFdvyMiVkbEVRGxPiI2RMQPIuKsiBgbtE2SJElNUkWG7WTgEuAR4Drgx8CLgLcCnwHeFBEnZ27f0jYijge+BGwCrgDWA28BLgQOLZ85kACiNYDvMsLx6V/d0nZupChJ0lQTLsMxclUEbHcDxwFfzcxf7CcQEe8HbgFOogjevlReXwpcCowDqzLz1vL6ecC1wOqIOCUz11TQNkmSpHlv4C7RzLw2M/++NVgrrz8KfLo8XdVyazWwJ7BmMlgr628Czi1P3zlouyRJ0uASGM9FlR4u69G/YU862FqW21quHVmWV3epfwOwAVgZEbtk5uZhNk6SJM0kmKh8koBdrP0aWsAWETsBbytPW4Oz5WV5d+dnMnNbRDwAvArYD7hjsDa0bP7eJZx/3i2L286f/o3xQb5OkiRpKIaZYfsI8Grgqsz8Wsv1ZWX5VI/PTV7fY6YviIjbetxaMZsGSpKk6RU7HVS8rEelT1sYhrISXkScCbwbuBM4td+Pl6X/PSVJkhhChi0izgA+DtwOHJWZ6zuqTGbQltHd0o56PWXmQd2ul5m3187cWkmSNJPqx7CpX5UGbBFxFsVaaj+iCNYe71LtLuBg4ECgrUuzHPe2L8UkhfsHa0zOuPn7B979123nf3zLwMu/SZLUKEkwUXmXqAFgvyr7LxAR76UI1r4PHNEjWINirTWAY7rcOwzYFbjJGaKSJEmFSgK2ctHbj1BkzI7KzCemqb4WeAI4JSIObnnGEuDD5eklVbRLkiQNbjyj0kP9G7hLNCJ+D7iAYueCbwJnRkz5j7EuMy8HyMynI+J0isDt+ohYQ7E11XEUS36spdiuSpIkSVQzhm3fshwDzupR5xvA5ZMnmXllRBwOnEOxddUS4F7gbODi1n1HJUnS6GRWP+nAf+X7N3DAlpnnA+fP4XM3AscO+v2D+N6GfUb59ZIkSbMy7K2pJEnSPDeRQ1m2VX0wYJMkST0lwXjFy3C4rEf/DJklSdK8FBEvi4jLIuLhiNgcEesi4qKIeF4fz1gdEZ+IiG9GxNMRkRHx+WG2ey4WTIat2+bvn7t5Zdv52G7bdlBrJEmaP+q400FE7A/cBOwFfIViO8xDgHcBx0TEoZn55CwedS7wq8DPgQep6X7kZtgkSdJ89CmKYO3MzDwhM9+XmUdSLOK/HPjTWT7njyh2X1oKvHMoLa2AAZskSZrWRC6q9BhUROwHHA2sAz7ZcfuDwLPAqRGx20zPyszrMvOeui8pZsAmSZJ6SmCCqPSoIDI6siyvycyJtvZmPgPcSLHV5esH/6p6aPQYtpl63P/s8LVt5+feesLQ2iJJkiqzvCzv7nH/HooM3IHA13dIi4as0QGbJEka1DD2/wyAFRFxW7e7mXnQDA9YVpZP9bg/eX2PvptWU3aJSpKkppmMMGs9Lq0fZtgkSVJPxV6i1eZ3yuH9d84ik9bLZAZtWY/7SzvqzXsGbJIkaVo1XIftrrI8sMf9A8qy1xi3eWdBB2yfXd6x+fsXRtMOSZLUl+vK8uiIWNQ6UzQidgcOBTYC3xlF44bBMWySJKmnOi7rkZn3AdcALwfO6Lj9IWA34HOZ+SxARCyOiBXl7gjz0oLOsEmSpHnrDym2pro4Io4C7gBeBxxB0RV6Tkvdl5b3/40iyPuFiDgBOKE8fXFZviEiLi///ERm/nHlre+TAZskSZpGDGEM2+DPy8z7IuJg4ALgGOBY4BHgYuBDmbl+lo/6NeD3Oq7tVx5QBHkGbKP0xH99Q8eVTSNphyRJ6l9m/gQ4bRb11tEjSszM84Hzq2zXMCzogE2SJM2s6mU91D8DNkmS1FNS/bIejVnNdgcyZJYkSaq5RmfYWiP4br8c3Hb+JW3nr7huxm5wSZIWnIkKJgloMGbYJEmSaq7RGTZJkjSYzOqX9cj6bXVVewZskiRpWjXcS3TBsUtUkiSp5hZ0hu1Xb/nPo26CJEm1Z4Zt9MywSZIk1dyCzrBJkqTpuXBuPRiwSZKkabkO2+g1N2DLaJ823OVn7elHd287H9t965AbJUmS1L/mBmySJGlgyRDWYTNj1zcnHUiSJNWcGTZJktRbDmFZD2cd9K3RAVvrGLZuP2uLdnPMmiRJqr9GB2ySJGlwLpw7egZskiSpJ9dhqwcnHUiSJNWcGTZJkjSttEt05BobsCWQM+Vcn9yl/XzPzcNqjiRJ0pw1NmCTJElViCFsTWXGrl8GbJIkqScnHdSDkw4kSZJqrtEZtrZBkl1C0ze/8ba286vuevWQWyRJ0jyTQ5h0YIqtb2bYJEmSaq7RGTZJkjQ4dzoYPQM2SZLUU7FMlpMORs0uUUmSpJprdIat9TeCbr8cfPWbB7Wdx14unCtJUrsYQpeoXaz9MsMmSZJUc43OsEmSpMHNuNWjhs4MmyRJUs01N8OWHb8RdOkuP+vof2w7//j3jxxumyRJmkbUcGhXQuV7iZqw619zAzZJkjQ4dzqoBbtEJUmSas4MmyRJmpY7HYxeYwO2BCYmWtZh65JL/MfHX7XjGiRJkjRHjQ3YJElSNVzWY/QM2CRJUk/uJVoPTjqQJEmqOTNskiRpGlH9sh7uJdq3BgdsQU5sTyDmoqk/HHfc89K287Hdtg29VZIkSf1qcMAmSZIGlkNY1sNBbH0zYJMkSdNylujoOelAkiSp5hqdYWv7haBLNvfl+z7edv6Tx58/1PZIkjTfuKxHPZhhkyRJqrlGZ9gkSdLgql/WQ/0yYJMkSdOyC3P0mhuwJeQMm78/fPMvtV/Yd9OQGyVJktS/5gZskiSpEnaJjp6TDiRJkmrODJskSeotqX4Qm4Pi+jaUDFtEnBoRWR7v6FFnZURcFRHrI2JDRPwgIs6KiLFhtEmSJGm+qjxgi4i9gU8AP5+mzvHADcBhwJeBTwI7AxcCa6pqS07E9mMRU46dNkTbIUmSOgWZ1R5dV7OfS8siXhYRl0XEwxGxOSLWRcRFEfG8UTxnmCoN2CIigM8CTwKf7lFnKXApMA6sysy3Z+b/Bfwa8G1gdUScUmW7JEnS3BQ7HVR8VNCuiNgfuA04DbiFIulzP/Au4NsR8YId+ZxhqzrDdiZwJMVf+tkedVYDewJrMvPWyYuZuQk4tzx9Z8XtkiRJzfIpYC/gzMw8ITPfl5lHUgRcy4E/3cHPGarKAraIeCXwEeDjmXnDNFWPLMuru9y7AdgArIyIXapqmyRJmrvqu0QHExH7AUcD6yiGVbX6IEXS6NSI2G1HPGdHqCRgi4idgL8Gfgy8f4bqy8vy7s4bmbkNeIBi9up+g7QpE3I8th9dxrDtdcRDbYckSZoXJpM/12TmROuNzHwGuBHYFXj9DnrO0FW1rMcHgNcAb8zMjTPUXVaWT/W4P3l9j5m+NCJu63FrxUyflSRJs1S/hXN7Jn9K91Bkzg4Evr4DnjN0AwdsEXEIRVbtY5n57cGb9IupI67SIknSqJUTBap+JrCiV+IlMw+a4QlVJX8qSyIN20ABW0tX6N3AebP82ORfflmP+0s76vXU6z9o+QPw2lm2R5IkNUtVyZ/aJJEGzbA9lyJNCLCpWNVjiksj4lKKyQhnAXcBB5efa4usywBwX2AbxZTaAQS0bv7eZTnen/9Nx+bvv+nm75IkTTGccOXOWWTSeqkq+VNZEmnYBg3YNgN/2ePeaynGtX2LIkib7C69Fvgd4Bjgbzs+cxjF4L4bMnPzgG2TJEnNdFdZHtjj/gFl2WtsWtXPGbqBArZygkGvrafOpwjY/iozP9Nyay3wUeCUiPjE5FpsEbEE+HBZ55JB2iVJkqpTxVIcFbuuLI+OiEWtMzwjYnfgUGAj8J0d9JyhG8peotPJzKeB04Ex4PqI+ExE/DnwfeANFAHdFTu6XZIkqYes+Bi0OZn3AdcALwfO6Lj9IWA34HOZ+SxARCyOiBXlrgZzfs4oVbWsR18y88qIOBw4BzgJWALcC5wNXJxZ+XwUSZLULH8I3ARcHBFHAXcArwOOoOjCPKel7kvL+/9GEZzN9TkjM7SALTPPB86f5v6NwLHD+n6S9kkHXXKJJ/7RtW3nl/1w5dCaI0nSfFXDLlEy876IOBi4gGJc/LHAI8DFwIcyc/2OfM6wjSTDJkmSNKjM/AnF/uUz1VvH9iU65vycUTJgkyRJvVU07mzKM9WXHT7pQJIkSf1pdoZtfPoxbFdcdlT7hV+faRtUSZIWmmCa3sQBnql+NDtgkyRJg7MLc+TsEpUkSao5M2ySJGl6ZthGrtkBW8sPWLcxbBtf17Fw8YQJR0mSVD/NDtgkSdLgarhw7kJjwCZJknpKoOoNI+1h7Z99gJIkSTVnhk2SJPXmTge10NiALRKideHcsS517t21/cJ+m4bcKkmSpP41NmCTJEkVcdLByBmwSZKknoKi16rqZ6o/TjqQJEmquWZn2CZa/twlNN323PZfGYz4JUnqwkkCI2eGTZIkqeaanWGTJEmDc9LByJlhkyRJqrnmZtg61mGbGJvaAR/b/I1BklQjrdMx6/JPlAvn1kJzAzZJklQNA6yRs0tUkiSp5sywSZKk6ZlhGzkzbJIkSTXX6AxbjLecdAlN/8MhD7Sd3/7gS4bbIEmSStklaxV1mWjQyWU9Rq7RAZskSRpc1XuJqn92iUqSJNWcGTZJktSb67DVQnMDtgxiYnufe45NrXLHQy/egQ2SJEmaG7tEJUmSaq65GTZJklQJJx2Mnhk2SZKkmmt0hi0mtv85u4Sm257eue18bPetQ26RJGnB6kxTzZu1zWIIbZ0vf/f6MMMmSZJUc43OsEmSpAo4hm3kzLBJkiTVnBk2SZI0PTNsI9fYgC2yffP3iZ2m/rQd/doftp1//Z4Vw26WJEnzjst6jJ5dopIkSTXX2AybJEmqgHuJ1oIZNkmSpJprdoatdeHcLpu/P2fMhXIlSZqRGbGRa3bAJkmSBuakg9GzS1SSJKnmzLBJkqTpzZt9T5vLDJskSVLNNTfDlrBofPtvBDk2MaXKHT978Y5skSRJ85Nj2EauuQGbJEkaWGT1kw6cxNA/u0QlSZJqzgybJEmanhmxkWt2wNY6bK1LLvHeh/dsOw/zjZIkqYaaHbBJkqSBOeZs9MwpSZIk1ZwZNkmSND0zbCPX3IAtIcZbTsem/rTt9NCStvOJvTcNu1WSJM0/BmwjZ5eoJElSzTU3wyZJkgY3hIVzzdj1zwybJElakCJiZURcFRHrI2JDRPwgIs6KiLE+nrE4It4VEZ+NiO9HxJaIyIh4R5VtNcMmSZIWnIg4HvgSsAm4AlgPvAW4EDgUOHmWj9oNuKj882PAo8DeVbYVGh6wRevCuTH1/gUnrmk7P/fWE4baHkmS5qWGdWFGxFLgUmAcWJWZt5bXzwOuBVZHxCmZuWaax0zaABwLfD8zH4mI84EPVt1mu0QlSdJCsxrYE1gzGawBZOYm4Nzy9J2zeVBmbsnMf8zMR6pv5naNzrBJkqTBNXCngyPL8uou926gyJqtjIhdMnPzjmtWbwZskiRpFFZExG3dbmTmQUP+7uVleXeX794WEQ8ArwL2A+4YcltmpbEBW2THGLYuC+f+z+vaxxOO7b51yK2SJDVStxRUdhk8PV81L8O2rCyf6nF/8voew2/K7DQ2YJMkSRUZTsB25yCZtIhYB+zTx0e+kJm/O9vHl2VtQlUDNkmSNB/dR7Ekx2w93PLnyQzasm4VgaUd9UbOgE2SJPVW050OMvOoAT5+F3AwcCDQNo4uInYC9gW2AfcP8B2VavSyHjGx/WBRTjkW/3Ss7ZAkaZSi5dBQXVuWx3S5dxiwK3BTXWaIQsMDNkmSVIGs+Bi9tcATwCkRcfDkxYhYAny4PL2k9QMRsSwiVkTES3ZcM7ezS1SSJC0omfl0RJxOEbhdHxFrKLamOo5iyY+1FNtVtToR+CzwV8Dvt96IiPcBK8rTXyvL0yLijeWfv5WZnxmkzQZskiSpp6D6MWx16PLNzCsj4nDgHOAkYAlwL3A2cHFm9vO3PgY4vOPayvKYVJ+ALSJ+AziLooHPp4hWfwhclJlXddRdSbH9w+vZ/pIuAz6RmeNVtkuSJA2gHt2YlcvMGyn2AZ1N3cuBy3vcW1VZo3qoLGCLiHOBP6HoE/4H4BHghcBrgFXAVS11jwe+RDEd9wqKwO4twIXAoUD7irZzkRCtYd+iqT9t23afaDt3QJ8kSaqjSgK2iDiZIlj7Z+CtmflMx/3FLX9eClwKjAOrJjddjYjzKGZtrI6IUzJzTRVtkyRJA2pohm0+GTipFBGLgI9SbJT6XzqDNYDMbN3zaTWwJ7BmMlgr62yi6CIFeOeg7ZIkSWqKKjJsKykWmFsL/DQi3gy8mqK785bM/HZH/SPL8uouz7qBIvBbGRG71Gn9E0mSFqSaLpy70FQRsP16WT4GfBf45dabEXEDsDoz/728tLws7+58UGZui4gHgFcB+wF3DNKw1s3fo8vm78/b56dt5089vdsgXydJUjMZYI1cFQHbXmX5B8ADwG8CN1NsyPox4LeBL1JMPIDt+3b12p9r8voeM31xRNzW49aKHtclSZLmnSomRk7u6RQUmbSvZ+bPM/NfKRaZexA4PCLeMMvnTS7PYjwvSVIdNG+ng3mnigzbZL/i/Zn5L603MnNjRHwNeDtwCPBttmfQltHd0rLslYFrff5B3a6XmbfXzvR5SZKk+aCKDNtdZfmzHvcnA7rndNQ/sLNiROxEMYFhG3D/oA1r3fw9FuWUY9v4WNshSZKmiqz2UP+qCNhuoAiwDoiInbvcf3VZrivLa8vymC51DwN2BW5yhqgkSTVhl+jIDRywZeYTFLsVLAM+0HovIn6LYtLBU2xfxmMtxW4Ip0TEwS11lwAfLk8vGbRdkiRJTVHV1lRnA68DzomIw4BbKGaJnkixo8HpmfkzgMx8OiJOpwjcro+INRRbUx1HseTHWooAUJIkjZrrsNVCJdtnZubjFAHbhcDewJkUC+R+FfiNzPxiR/0rKXa1vwE4CfgfwFaKwO+UzPQ/pSRJUqmyzd8zcz1FwHX2LOvfCBxb1fd3iuxYOLfL5u+/vNcjbeffeWDfYTVHkqT5yzTKyFWSYZMkSdLwVJZhkyRJDWWGbeQM2CRJ0rRi5ioasmYHbC2/EXT7YfvOja9sv/BLm4baHEmSpLlodsAmSZIGZ5foyDnpQJIkqebMsEmSpJ6C6hfOdUxc/xodsMXE9p+wWDQx5f5LbhxvO3/45KE3SZKk+WUY+3/axdo3u0QlSZJqrtEZNkmSVAEzYiNnhk2SJKnmzLBJkqRpVT3pQP1rbsDWsfn7oi6bv69/27PtFzbuPORGSZI0DxmwjZxdopIkSTXX3AybJEmqhF2io2eGTZIkqeaanWFr3fy9y7LKz12yue18k2PYJElq58K5tWCGTZIkqeaanWGTJEkDcwzb6BmwSZKk6RmwjVyjA7ZoG8M29adt67g9wpIkqf4aHbBJkqQKmGEbOVNMkiRJNWeGTZIkTctJB6NnwCZJknpzHbZaaG7AlkDL5u/dJh3stvPWtvOnhtwkSZKkuWhuwCZJkgYWQGS1KbEumw9pBk46kCRJqjkzbJIkaXqOORu5BROwddv8fZedtu34hkiSNM84S3T07BKVJEmquQWTYZMkSXNkhm3kzLBJkiTVXKMzbDNt/j6RTiyWJGlaOYQxbGbs+tbogE2SJFXAAGvk7BKVJEmqOTNskiRpWi7rMXpm2CRJkmqu2Rm2GSYdPPbPL2u/8Msbh9wgSZLmITNsI2eGTZIkqeaanWGTJEkDcwzb6BmwSZKk3jKLo+pnqi8Lukt0fJf2Q5KkqkzGOcOId1SNiFgZEVdFxPqI2BARP4iIsyJirI9nHBAR742IayPiJxGxJSIei4ivRMQRVbXVDJskSeopqL5LtA77DEXE8cCXgE3AFcB64C3AhcChwMmzfNSfAP8ncDtwVfmc5cBxwHER8a7MvHjQ9hqwSZKkBSUilgKXAuPAqsy8tbx+HnAtsDoiTsnMNbN43NXARzPzex3fcTjwT8D/iogvZuYjg7R5QXeJSpKkWciKj9FbDewJrJkM1gAycxNwbnn6ztk8KDMv7wzWyuvfAK4HdgZWDtpgM2ySJGlaMTHqFlTuyLK8usu9G4ANwMqI2CUzNw/wPVvLctsAzwAaHLB19rl36y/funxD+4WsQ6+6JEkasuVleXfnjczcFhEPAK8C9gPumMsXRMQ+wFEUwd8Nc2znLzQ2YJMkSRUYRjdm8bwVEXFb19uZB1X8jZ2WleVTPe5PXt9jLg+PiF2ALwC7AO/JzJ/O5TmtHMMmSZLmnYhYFxHZx/H5fh5fln2HquWSIH9NMdP0CuB/9/uMbsywSZKkaQ1pp4M7B8yk3UexJMdsPdzy58kM2rJuFYGlHfVmpQzWPk+xJMjfAb+bWc0qfAs6YBvf1P7XH9tlfEQtkSSpxmq48m9mHjXAx+8CDgYOBNq6ZSNiJ2BfiokC98/2geXn/oYiWPsb4G2ZWVlgYZeoJElaaK4ty2O63DsM2BW4abYzRCNiZ2AtRbD2OeDUKoM1MGCTJEkziKz2qIG1wBPAKRFx8OTFiFgCfLg8vaT1AxGxLCJWRMRLOq7vAnwZOB74S+C0zKx8IZQF3SUqSZIWnsx8OiJOpwjcro+INRRbSh1HseTHWooJA61OBD4L/BXw+y3XPw0cSxEAPgR8IGLKMmHXZ+b1g7R5QQdsr9jnsbbzBx594YhaIklSjdUjK1apzLyy3D7qHOAkYAlwL3A2cHEfkwX2LcsXAh+Ypt71c2wqsMADNkmStHBl5o0U2bHZ1L0cuLzL9VWVNqoHAzZJktTbMMadNTBjN2wGbJIkaXo1XNZjoXGWqCRJUs0tmAxbt98N7n+kfZLB1EkdkiQtbEH1XaL+c9s/M2ySJEk1t2AybJIkaY4cwjZyBmySJGlaNdmdYEFrbMCWQM7QST7x88Vt52O7bx1egyRJC4rjolWlxgZskiSpAglMVJxiM2PXNycdSJIk1ZwZNkmSND0zYiO3oAO2xT8bazufcAybJElTOOlg9OwSlSRJqrkFnWGTJEmz4F6iI2eGTZIkqeYqC9gi4s0RcU1EPBgRGyPi/oj4YkS8oUf9lRFxVUSsj4gNEfGDiDgrIsa61ZckSSOQxRi2Kg8nMfSvki7RiPgo8B7gSeBK4AngFcDxwEkR8bbM/HxL/eOBLwGbgCuA9cBbgAuBQ4GTq2hX6+6y2WUV3V859J628+//eO9KvlaSJKlKAwdsEfFi4I+Bx4BfyczHW+4dAVwLXAB8vry2FLgUGAdWZeat5fXzyrqrI+KUzFwzaNskSVIFzIiNXBVdovuUz7m5NVgDyMzrgGeAPVsury7P10wGa2XdTcC55ek7K2iXJEkaWBJZ7WEE2L8qArZ7gC3AIRHxwtYbEXEYsDvwzy2XjyzLq7s86wZgA7AyInapoG2SJEnz3sBdopm5PiLeC/wFcHtEXEkxlm1/4Djgn4D/1vKR5WV5d5dnbYuIB4BXAfsBdwzUthnGsD34zB6DPF6SpIVhYtQNUCWTDjLzoohYB1wGnN5y617g8o6u0mVl+VSPx01e32Om742I23rcWjHTZyVJkuaLSpb1iIj3AGuByykya7sBBwH3A1+IiD/v53FlaQe3JEkjVizFUfU4tlH/reafKmaJrgI+Cnw5M89uufXdiDiRouvz3RHx6cy8n+0ZtGV0t7Qse2XgfiEzD+rRptuA187cekmSNCMDrJGrIsP2H8vyus4bmbkBuKX8nteUl+8qywM760fETsC+wDaK7NzcRfuROfU48HmPtx2SJEl1VEXANjmbc88e9yevbynLa8vymC51DwN2BW7KzM0VtE2SJA2qW9ZjkEN9qyJg+2ZZ/teIeGnrjYh4E8XOBZuAm8rLayl2QjglIg5uqbsE+HB5ekkF7ZIkSWqEKmaJrqVYZ+03gTsi4svAo8ArKbpLA3hfZj4JkJlPR8Tp5eeuj4g1FFtTHUex5Mdaiu2qJElSDThJYPSqWIdtIiKOBc4ATgFOpOjWXA9cBVycmdd0fObKiDgcOAc4CVhCsQTI2WV9fzQkSaoL/1keuarWYdsKXFQes/3MjcCxVXx/TzMsnLttYmyoXy9JklSFSgI2SZLUUAlR9U4HJuz6VsnCuZIkSRoeM2ySJGl6jmEbuUYHbNmSP5yYmDqG7btf79hydP9NQ26RJElS/xodsEmSpAqYYBs5AzZJkjSNYsP2qp+p/jjpQJIkqeYanWHLGdZh27L3lrZzV2WTJKlDUv2kAxNsfTPDJkmSVHONzrBJkqQKVL1wrvpmwCZJkqZV/aQD9csuUUmSpJprboYtIBdtn2iQXRbOjZ93/PWfv2VKHUmSFjwzbCNnhk2SJKnmmpthkyRJg3NZj1owYJMkSdNzlujINTtgaxm2NtFl4dzFe21sOx/f5tK5kiSpfpodsEmSpIHEEPYSDftE++akA0mSpJozwyZJkqbnsh4j19iALYFszR92GcO27aFd287jRZuH2yhJkqQ5aGzAJkmSKuCyHrVgwCZJkqZnl+jIOelAkiSp5sywSZKk6blw7sg1N2CL9kkH2eWH7TmPtScYN71oyG2SJEmag+YGbJIkqRJVL5yr/jmGTZIk9ZY5nKMGImJlRFwVEesjYkNE/CAizoqIWe9VGRF7R8SnIuLmiHg0IjZHxMMR8c2IOC0iFlfRVgM2SZK04ETE8cANwGHAl4FPAjsDFwJr+njU/sDvAE8BVwIfA/4e2Ae4DLgmIgbu0Wx2l2jbGLapC+fS5ZIkSeowUY+MWFUiYilwKTAOrMrMW8vr5wHXAqsj4pTMnE3gdhPwvMz20fJlZu0aYBXwVuDvBmmzGTZJkrTQrAb2BNZMBmsAmbkJOLc8fedsHpSZWzqDtfL6VoqMG8ABA7WWpmfYJEnS4Goy5qxCR5bl1V3u3QBsAFZGxC6ZOad9K8txcMeWpz+YyzNaGbBJkqTpDSdgWxERt3X/ujxoGF/YYnlZ3t3lu7dFxAPAq4D9gDtm88CIeCHw3ykGXO0J/BbwCuBvgH8YtMHNDdgCJlrmeOT41N7f3z75O23nX7nzV4fdKkmSNHrLyvKpHvcnr+/RxzNfCHyw5TyB/w28P3PwiLe5AZskSRrc8DZ/v3OQTFpErKOYiTlbX8jM353t48ty1n/xzLyzaFaMAS8FTgQuAN4YEW/OzPV9tHUKAzZJkjQf3Qds6qP+wy1/nsygLetWEVjaUW/WMnMc+DHw8Yh4DPhbisDtv/f7rFYGbJIkaRo5hGU9Bn9eZh41wMfvAg4GDgTaxtGVa6btC2wD7h/gOwD+sSxXDfgcl/WQJEkLzrVleUyXe4cBuwI3zXWGaIuXluW2AZ/T8AxbazjaZfP3r973qh3WFEmS5q2py4zNd2uBjwKnRMQnWhbOXQJ8uKxzSesHImIZ8BLgqcx8pOX664AfZuaGjvrPBT5enn510AY3O2CTJEmDa9g6bJn5dEScThG4XR8Ra4D1wHEUS36sBa7o+NiJwGeBvwJ+v+X6/wRWRcQ3KMaubQD2Bt5EMcv0JuDPBm2zAZskSVpwMvPKiDgcOAc4CVgC3AucDVzcx1IclwLPAr9OMVZtV+CnFGPj/g64LDPtEpUkSUOUVD/poCYJu8y8ke27EcxU93Lg8i7Xv0oFXZ4zaW7AFpBtY9im7vS+63XPbTt/+o39zA6WJKmUU/+NmdNjKnmKmqi5AZskSapADmEMm6FpvwzYJEnS9Bo26WA+ch02SZKkmjPDJkmSpmeGbeQaG7AlM086eMHqB9vOn370hcNtlCRJ0hw0NmCTJEkVSGCi4p0OTNj1zYBNkiRNw1mideCkA0mSpJprdIYtZ9j8/fFnnjv1oiRJauekg5EzwyZJklRzjc6wSZKkATV4L9H5xAybJElSzTU3wxaQYy2n41PXYZuoaLNeSZKaLLPiZT3Ut+YGbJIkqQJZfZeofaJ9s0tUkiSp5sywSZKk6bmsx8iZYZMkSaq5RmfYWhfO7TbpYOPGnXdgayRJmofcS7QWGh2wSZKkCtglOnJ2iUqSJNWcGTZJktRTkmTFXaJpn2jfmhuwBeRYyw9El5+1sbH2i+PbxqZWkiRJGrHmBmySJGlwSfVj2Eyw9c2ATZIkTa/ynQ7ULycdSJIk1VxjM2w5i83fl7/48bbz2x98ybCbJUnSPJNQ+ebvZuz6ZYZNkiSp5hqbYZMkSRVIyKrHsJlg65sZNkmSpJozwyZJkqZX+Rg29avRAVu2zDOI8an3N29r9F9fklQnOXXy23xReZeo+maXqCRJUs2ZYpIkSdNwWY86iKx6u4kaiIgnY/Hi5y/e60XT1ttl1y1t55u3Gr9Kkkaopdd060P/Tm7Zuj4zXzCy5kTctoix1+7G7pU+91meYYLx72bmQZU+uMGaGqE8nVu3suWhB5eU53d2q7Sl20XN1oqy7PpuNRDf7fD4bofHd1u9lwNPj7gNd04wzjP8bCjPHsZDm6qRGbZJEXEbgBF89Xy3w+O7HR7f7fD4bqXhctKBJElSzRmwSZIk1ZwBmyRJUs0ZsEmSJNWcAZskSVLNNXqWqCRJUhOYYZMkSao5AzZJkqSaM2CTJEmqOQM2SZKkmjNgkyRJqjkDNkmSpJozYJMkSaq5RgZsEfGyiLgsIh6OiM0RsS4iLoqI5426bXUXES+IiHdExJcj4t6I2BgRT0XEtyLi7RHR9WcmIlZGxFURsT4iNkTEDyLirIgY29F/h/kkIk6NiCyPd/So47vtQ0T8RkR8KSIeKf/3/0hEXBMRx3ap67udpYh4c/keHyz/f+H+iPhiRLyhR33frVShxi2cGxH7AzcBewFfAe4EDgGOAO4CDs3MJ0fXwnqLiD8ALgEeAa4Dfgy8CHgrsAz4EnBytvzgRMTx5fVNwBXAeuAtwHJgbWaevCP/DvNFROwN/BAYA54LnJ6Zn+mo47vtQ0ScC/wJ8ATwDxQ/xy8EXgNcl5nvaanru52liPgo8B7gSeBKivf7CuA4YCfgbZn5+Zb6vlupapnZqAP4GpDA/+i4/hfl9U+Puo11PoAjKf6PdVHH9RdTBG8JnNRyfSnwOLAZOLjl+hKKwDmBU0b996rbAQTwz8B9wP8q39M7Our4bvt7pyeX7+SfgN273F/su53Te30xMA48CuzVce+I8l3d77v18Bju0agu0YjYDzgaWAd8suP2B4FngVMjYrcd3LR5IzOvzcy/z8yJjuuPAp8uT1e13FoN7AmsycxbW+pvAs4tT985vBbPW2dSBMenUfxcduO7naWyq/6jwAbgv2TmM511MnNry6nvdvb2oRg+c3NmPt56IzOvA56heJeTfLfSEDQqYKP4BxDgmi4BxzPAjcCuwOt3dMMaYvIfvG0t1ybf+dVd6t9A8Q/oyojYZZgNm08i4pXAR4CPZ+YN01T13c7eSmBf4Crgp+V4q/dGxLt6jLHy3c7ePcAW4JCIeGHrjYg4DNidIls8yXcrDUHTArblZXl3j/v3lOWBO6AtjRIROwFvK09b/4+45zvPzG3AAxRjXPYbagPnifI9/jVF9/L7Z6juu529Xy/Lx4DvUoxf+whwEXBTRHwjIlqzQL7bWcrM9cB7Kcay3h4R/29E/FlE/B1wDUUX9H9r+YjvVhqCnUbdgIotK8unetyfvL7H8JvSOB8BXg1clZlfa7nuO+/PBygGwL8xMzfOUNd3O3t7leUfUAQEvwncTNGd9zHgt4Evsr0733fbh8y8KCLWAZcBp7fcuhe4vKOr1HcrDUHTMmwzibJs1tTYIYuIM4F3U8y4PbXfj5flgn/nEXEIRVbtY5n57SoeWZYL/t1SzLSF4p2szsyvZ+bPM/NfgROBB4HDey1B0YXvtkVEvAdYC1wO7A/sBhwE3A98ISL+vJ/HlaXvVupD0wK2yd/clvW4v7SjnmYQEWcAHwduB44ou0da+c5noaUr9G7gvFl+zHc7ez8ty/sz819ab5SZzMms8CFl6budpYhYRTGh4//LzLMz8/7M3JCZ36UIhh8C3l1O+gLfrTQUTQvY7irLXmPUDijLXmPc1CIizgL+b+BHFMHao12q9XznZZCyL8UkhfuH1Mz54rkU7+iVwKaWxXKTYgYzwKXltYvKc9/t7E2+q5/1uD8Z0D2no77vdmb/sSyv67yRmRuAWyj+LXlNedl3Kw1B0wK2yf9DObpzRf6I2B04FNgIfGdHN2y+iYj3AhcC36cI1h7vUfXasjymy73DKGbl3pSZmytv5PyyGfjLHsf3yjrfKs8nu0t9t7N3A0UQcEBE7Nzl/qvLcl1Z+m5nb3I255497k9e31KWvltpGEa9EFzVBy6cW8U7PK98V7cCz5+h7lLg33GRzEHe9/n0XjjXdzv79/j58p18uOP6bwETFNm3PXy3fb/X/1S+j0eBl3bce1P5bjcCL/DdengM71gIW1PdAbyOYkXuu4GV6dZUPUXE71EMLB4HPkH3cSbrMvPyls+cQDEgeROwhmIbmuMot6EB/lM27QetQhFxPkW3aLetqU7AdzsrEbEXxVqLrwC+SdFVtw/FOKukWFD3iy31T8B3O6Oyt+JrFDNvnwG+TBG8vZKiuzSAszLz4y2fOQHfrVSpxgVs8Is9Gi+gSMm/gGI/wSuBD+XUQfNq0RI8TOcbmbmq43OHAucAb6D4TfpeiiUALs7M8epb2hzTBWzlfd/tLEXE8ylW0z8ReClFgPEt4M8yc8pQCN/t7ETEYuAM4BTgP1B0a66nCIovzsxrunzGdytVqJEBmyRJUpM0bdKBJElS4xiwSZIk1ZwBmyRJUs0ZsEmSJNWcAZskSVLNGbBJkiTVnAGbJElSzRmwSZIk1ZwBmyRJUs0ZsEmSJNWcAZskSVLNGbBJkiTVnAGbJElSzRmwSZIk1ZwBmyRJUs0ZsEmSJNWcAZskSVLN/f/n+RcgKFUS5AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<Figure size 432x288 with 2 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 251, + "width": 310 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(M)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.00000000e+00, 1.26847839e-03, 2.53184907e-03, ...,\n", + " -2.53184907e-03, -1.26847839e-03, -4.89858720e-18],\n", + " [ 1.26847839e-03, 2.53695679e-03, 3.80032746e-03, ...,\n", + " -1.26337068e-03, -2.77555756e-19, 1.26847839e-03],\n", + " [ 2.53184907e-03, 3.80032746e-03, 5.06369814e-03, ...,\n", + " 4.44089210e-18, 1.26337068e-03, 2.53184907e-03],\n", + " ...,\n", + " [-2.53184907e-03, -1.26337068e-03, 4.44089210e-18, ...,\n", + " -5.06369814e-03, -3.80032746e-03, -2.53184907e-03],\n", + " [-1.26847839e-03, -2.77555756e-19, 1.26337068e-03, ...,\n", + " -3.80032746e-03, -2.53695679e-03, -1.26847839e-03],\n", + " [-4.89858720e-18, 1.26847839e-03, 2.53184907e-03, ...,\n", + " -2.53184907e-03, -1.26847839e-03, -9.79717439e-18]])" + ] + }, + "execution_count": 178, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A / 100" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-3.74352472e+14, -3.55849771e+14, -3.37421574e+14, ...,\n", + " -4.11283369e+14, -3.92855172e+14, -3.74352472e+14],\n", + " [ 1.01272178e+15, 9.62667119e+14, 9.12814005e+14, ...,\n", + " 1.11262956e+15, 1.06277645e+15, 1.01272178e+15],\n", + " [-1.45771758e+14, -1.38566861e+14, -1.31390975e+14, ...,\n", + " -1.60152542e+14, -1.52976656e+14, -1.45771758e+14],\n", + " ...,\n", + " [ 7.15259536e+14, 6.79907204e+14, 6.44697223e+14, ...,\n", + " 7.85821850e+14, 7.50611869e+14, 7.15259536e+14],\n", + " [-1.17798961e+15, -1.11976644e+15, -1.06177771e+15, ...,\n", + " -1.29420152e+15, -1.23621279e+15, -1.17798961e+15],\n", + " [ 5.95762341e+14, 5.66316262e+14, 5.36988753e+14, ...,\n", + " 6.54535928e+14, 6.25208419e+14, 5.95762341e+14]])" + ] + }, + "execution_count": 181, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.einsum('ji,jk,lk->il', np.linalg.inv(M), J, M).real" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:1: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " \"\"\"Entry point for launching an IPython kernel.\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[-1, 0, 0, ..., 0, 0, 0],\n", + " [ 0, 1, 0, ..., 0, 0, 0],\n", + " [ 0, 0, 0, ..., 0, 0, 0],\n", + " ...,\n", + " [ 0, 0, 0, ..., 0, 1, 0],\n", + " [ 0, 0, 0, ..., 0, 0, 1],\n", + " [ 0, 0, 0, ..., 0, 0, 0]])" + ] + }, + "execution_count": 183, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "J.astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.07071068 -0.07071068 0.17856246 ... 0.00070454 -0.00180815\n", + " 0.00139499]\n", + " [-0.06433633 -0.07708502 -0.17681376 ... 0.0005887 -0.00171878\n", + " 0.00116563]\n", + " [-0.05798766 -0.0834337 -0.02230244 ... 0.00047333 -0.00162977\n", + " 0.0009372 ]\n", + " ...\n", + " [-0.0834337 -0.05798766 0.01097759 ... 0.00093575 -0.00198653\n", + " 0.00185279]\n", + " [-0.07708502 -0.06433633 0.07618018 ... 0.00082038 -0.00189752\n", + " 0.00162435]\n", + " [-0.07071068 -0.07071068 0.06501264 ... 0.00070454 -0.00180815\n", + " 0.00139499]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:28: ComplexWarning: Casting complex values to real discards the imaginary part\n", + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:32: ComplexWarning: Casting complex values to real discards the imaginary part\n", + "/srv/conda/envs/notebook/lib/python3.7/site-packages/ipykernel_launcher.py:5: ComplexWarning: Casting complex values to real discards the imaginary part\n", + " \"\"\"\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[-5.16678444e+14, -7.15509958e+14, -2.20562527e+15, ...,\n", + " 2.22768865e+15, -8.00440378e+14, 1.27912728e+15],\n", + " [ 2.48256186e+15, 1.31096411e+16, -5.86371522e+15, ...,\n", + " 3.42226880e+14, -1.29934837e+16, 5.42427352e+15],\n", + " [-2.29022110e-01, -7.60207852e+00, 2.64846375e+00, ...,\n", + " 3.73267679e-01, 8.72755719e+00, -2.74691109e+00],\n", + " ...,\n", + " [-5.05308167e+16, -3.54974809e+16, -2.26157698e+17, ...,\n", + " -3.20790846e+17, 2.88041095e+16, -2.99378594e+17],\n", + " [-2.22981179e+17, 8.64609685e+16, 1.05252059e+17, ...,\n", + " -4.15688382e+16, -2.39645842e+16, -2.64191347e+17],\n", + " [-1.04563533e+17, 2.82871826e+17, -4.07167340e+16, ...,\n", + " 1.99785148e+17, -3.29034172e+17, 1.66407382e+17]])" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "M, J = defective_eigenvec(A / 100)\n", + "print(M)\n", + "np.linalg.inv(M)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab From 65073d807341ce734d5ac7b188eead9f9db30f8d Mon Sep 17 00:00:00 2001 From: Osamu Waseda <o.waseda@mpie.de> Date: Wed, 6 Jul 2022 06:16:12 +0000 Subject: [PATCH 7/9] Upload New File --- Defective_matrix_eigen_vector.ipynb | 342 ++++++++++++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 Defective_matrix_eigen_vector.ipynb diff --git a/Defective_matrix_eigen_vector.ipynb b/Defective_matrix_eigen_vector.ipynb new file mode 100644 index 0000000..2abb5c7 --- /dev/null +++ b/Defective_matrix_eigen_vector.ipynb @@ -0,0 +1,342 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 225, + "id": "6a2895e6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import matplotlib.pylab as plt\n", + "from tqdm.auto import tqdm\n", + "from sklearn.cluster import AgglomerativeClustering\n", + "from pint import UnitRegistry\n", + "%config InlineBackend.figure_format = 'retina'" + ] + }, + { + "cell_type": "code", + "execution_count": 339, + "id": "72978ada", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.linalg import null_space\n", + "\n", + "def jordan(eigenvalues, degeneracies):\n", + " main_diagonal = np.repeat(eigenvalues, degeneracies) # main diagonal\n", + " ones = np.ones(main_diagonal.size - 1)\n", + " ones[np.cumsum(degeneracies)[:-1] - 1] = 0\n", + " return np.diag(main_diagonal) + np.diag(ones, k=1)\n", + "\n", + "def cluster_eigenvalues(eigenvalues, dist_division=1e8):\n", + " distance_threshold = eigenvalues.ptp().real / dist_division\n", + " eigenvalues = np.column_stack((eigenvalues.real, eigenvalues.imag))\n", + " agg = AgglomerativeClustering(n_clusters=None, linkage='single', distance_threshold=distance_threshold)\n", + " labels = agg.fit_predict(eigenvalues)\n", + " indices, counts = np.unique(labels, return_counts=True, return_index=True)[1:]\n", + " ave_eigenvalues = np.zeros((len(counts), 2))\n", + " np.add.at(ave_eigenvalues, labels, eigenvalues)\n", + " ave_eigenvalues /= counts[:, None]\n", + " ave_eigenvalues = np.sum(ave_eigenvalues * [1, 1j], axis=-1)\n", + "# ave_eigenvalues = ave_eigenvalues[indices.argsort()]\n", + "# counts = counts[indices.argsort()]\n", + " return np.real_if_close(ave_eigenvalues), counts\n", + "\n", + "def generalized_eig(A, eigen_val, multi):\n", + " coef = A - eigen_val * np.eye(len(A))\n", + " ns = null_space(np.linalg.matrix_power(coef, multi))\n", + " vec_lst = [ns[:, 0]]\n", + " for _ in range(multi - 1):\n", + " vec_lst.append(np.matmul(coef, vec_lst[-1]))\n", + " return np.asarray(vec_lst)[::-1]\n", + "\n", + "def jordan_decomposition(A):\n", + " omega, _ = np.linalg.eig(A)\n", + " unique_eigenvalues, degeneracies = cluster_eigenvalues(omega)\n", + " eigenvectors = []\n", + " for eigenvalue, count in zip(unique_eigenvalues, degeneracies):\n", + " eigenvectors.extend(generalized_eig(A, eigenvalue, count).flatten())\n", + " eigenvectors = np.reshape(eigenvectors, np.shape(A))\n", + " return jordan(unique_eigenvalues, degeneracies), eigenvectors" + ] + }, + { + "cell_type": "code", + "execution_count": 372, + "id": "cfc0ce08-1710-47c4-88e2-ae2dd3cb4f9f", + "metadata": {}, + "outputs": [], + "source": [ + "n = 20\n", + "x = np.meshgrid(* 2 * [np.linspace(0, 2 * np.pi, n)])\n", + "A = np.sin(x[0]) + np.sin(x[1])\n", + "A += A.T # This step is redundant; just to convince everyone that it's symmetric\n" + ] + }, + { + "cell_type": "code", + "execution_count": 333, + "id": "d1961ea4-ce68-4410-8651-bbdd2ab89dbd", + "metadata": {}, + "outputs": [], + "source": [ + "J, M = jordan_decomposition(A)\n", + "M = M.T" + ] + }, + { + "cell_type": "code", + "execution_count": 393, + "id": "7212db8e-29c6-4db7-a7b6-2b6ce0e6a720", + "metadata": {}, + "outputs": [], + "source": [ + "shift = 17\n", + "v = null_space(np.linalg.matrix_power(A, n - 2 - shift)).T\n", + "w = null_space(np.linalg.matrix_power(A, n - 3 - shift)).T\n", + "v = v - np.einsum('ni,mi,nj->mj', w, v, w)" + ] + }, + { + "cell_type": "code", + "execution_count": 402, + "id": "83126bc4-a3c5-4095-990f-f6e1f2cae106", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3.59365044e-15, 1.15918555e-14, 4.69858381e-15, 2.16033546e-15,\n", + " 1.56099622e-15, 3.31275328e-15, 5.45090527e-15, 2.78366296e-15,\n", + " 3.21393282e-15, 1.26995117e-15, 2.57441549e-15, 3.67591835e-15,\n", + " 2.28830467e-15, 2.40842071e-15, 6.16975508e-16, 2.25673947e-15,\n", + " 1.47073598e-15, 2.38926225e-15])" + ] + }, + "execution_count": 402, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(np.einsum('ij,nj->ni', A, v), axis=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 397, + "id": "c9031cd5-7b30-4ed3-8b2c-6294694c802d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0000000000000007" + ] + }, + "execution_count": 397, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(v, axis=-1).max()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58e4346f-d908-43d2-a440-415f4469d1d5", + "metadata": {}, + "outputs": [], + "source": [ + "coef = A - eigen_val * np.eye(len(A))\n", + "ns = null_space(np.linalg.matrix_power(coef, multi))\n", + "vec_lst = [ns[:, 0]]\n", + "for _ in range(multi - 1):\n", + " vec_lst.append(np.matmul(coef, vec_lst[-1]))\n", + "return np.asarray(vec_lst)[::-1]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 337, + "id": "53232e16-9696-4c98-84f6-7745503b2215", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0dbfe2d0>" + ] + }, + "execution_count": 337, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgoAAAHwCAYAAADHIEe3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAABYlAAAWJQFJUiTwAAAn40lEQVR4nO3dfbBcd33f8fd39z5JsmVbxtghaTB2wGqdAMEkxnZrwExckkyI3dgJ00INExJIkyGQ0JYpD5HzMFOmTCBAAkkgKLHbOilpyXRiKB2QscEknbgFD63DQ2zZOICNpVjWg6X79O0fe26Qr+9P2r3399Ne6b5fM3eO7jlnP/vTPtz97NlzzkZmIkmStJLeuAcgSZLWL4uCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKpoY9wDWu4i4D9gK7B7zUCRJWq3zgccy8xmjXtCicHxbY3Jy2+S5T91WPXmi/jd39vuL1TMBJvsLTXL70Wa80SBzMVukwnz2m+TOLbTZYLg4Xz+3N9/mto35JrFEm6cDvcUG3+Z7kn1BcDbazp39+o+xxTZPXbLBa8PcQw+Tc3OruqxF4fh2T5771G1Pe9Mbqwfn2bPVM88660D1TIBzT2uTu236UJPcyV79v+T756arZwI88vhpTXIf2nd6k9zDezZVz5za0+Yv7vSeNgVk+u/avPpOHayf25tr1BTa3LTMbWoTPLu1fu7hbW3GeuQp9d9Aff2d72L2wb/dvZrLuo+CJEkqsihIkqQii4IkSSoaa1GIiO+KiD+IiK9HxJGI2B0R746Is8aRI0mSnmhsOzNGxIXAncBTgT8D/hr4QeAXgZdGxBWZuedE5UiSpCcb5xaF32Hw4v76zLwmM9+cmVcB7wIuAn7jBOdIkqRlxlIUIuIC4GoGJzH67WWLfwU4CLwyIraciBxJkrSycW1RuKqbfiIzn3DAaGbuBz4LbAZecIJyJEnSCsZVFC7qpl8uLP9KN33WCcohIu5a6QfYfrzLSpJ0qhpXUTijm+4rLF+af+YJypEkSStYr6dwXjov5lrPPTp0TmZesmLAYKvC89Y4DkmSTkrj2qKw9E7/jMLyrcvWa50jSZJWMK6i8KVuWtp34JndtLTvQe0cSZK0gnEVhV3d9OqIeMIYIuJ04ArgceAvTlCOJElawViKQmb+DfAJ4Hzg55ctvhHYAvxRZh4EiIjJiNjenYVx1TmSJGk049yZ8V8xOPXyeyLiJcA9wKXAixl8VPCWo9b9zm75/QxKwWpzJEnSCMZ2Cudua8DzgZ0MXth/GbgQeA9w2bDfz1ArR5IkPdlYD4/MzK8Brx5ivd18+1DHVedIkqTRjPVrpiVJ0vpmUZAkSUXr9cyM68tEkmfPVo99ytn7q2decGabXTKevnlvk9xzJx9rktuLxeOvNKIDCzPVMwG+PnNmk9zp/nyT3K/FWk+Y+mSPs7l6JkBGv03uRPGT0DWZ31w/tz9b//4CyEZvM+c3tblt506vn3lkW/2/M0CT1xsmVv84cIuCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqSiiXEP4GTQ7y9y1lkHqudecOae6pn/8LRvVs8EuGjmG01yz5l4rEnuZCxUz9y/OFM9E+CsiXOa5E40uA0AFonqmQ8stHnPMptt7jN6/SaxC1P1b9vefP1MgGwTy0Kju2xu62L1zDxrrnom0OT15uH+6v//blGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRRYFSZJUZFGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRRYFSZJUZFGQJElFFgVJklRkUZAkSUVjKQoRcXZEvCYi/ltEfDUiHo+IfRHxmYj46YgYelwRsTsisvDzzZb/D0mSTnUTY7re64H3A98AdgEPAOcC/wz4IPDDEXF9ZuaQefuAd68w/8DahypJ0sY1rqLwZeBlwJ9n5uLSzIj4d8D/An6CQWn40yHzHs3MHbUHKUnSRjeWjx4y81OZ+d+PLgnd/G8CH+h+fdEJH5gkSXqCcW1ROJa5bjo/wmWmI+IVwHcDB4G7gdszc6H24CRJ2kjWVVGIiAngX3a/fnyEi54H3LRs3n0R8erM/PSQ131XYdH2EcYhSdIpZV0VBeDfA98L3JqZ/2PIy3wYuAP4v8B+4ALgF4CfBT4WEZdl5hfWMqjJ/gLnnlZ/v8inb95bPfOimW9UzwR45tRDTXLP7c82ye03yNyfBxukwkzMHX+lVZjLFrcC7J+fqZ55YHaqeibAt+bb3Abzi9EkN4c/4GtovVG2zY4gG31wvTAz7D7so1k8vf4Nsfn0w9UzgSavN/f2F3h8lZddN0UhIl4P/DLw18Arh71cZt64bNYXgddFxIEubwdw7RA5lxTGdRfwvGHHI0nSqWRdnHApIn4e+C3g/wEvzswab7WXdoq8skKWJEkb0tiLQkS8AXgfgy0BL+6OfKjh4W66pVKeJEkbzliLQkT8W+BdwOcZlISHj32JkVzWTe+tmClJ0oYytqIQEW9jsPPiXcBLMvORY6w7GRHbI+LCZfMvjohtK6z/dAZbKQBurjhsSZI2lLHszBgRNwC/CiwwOGLh9RFP2ot4d2bu7P79ncA9wP3A+Uetcz3w5ojYBdzH4KiHC4EfBWaAW4F3NvlPSJK0AYzrqIdndNM+8IbCOp8Gdh4nZxdwEfD9DD5q2AI8CnyGwXkVbhrh+yIkSdIyYykK3fcy7Bhh/d3AkzY5dCdTGuqESpIkaXRjP+pBkiStXxYFSZJUZFGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRRYFSZJUZFGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJReP6mumTSj8W2TZ9qHruuZOPVc88Z6J+JsC5/dkmuef0p5vkTtCvnrk5j1TPBDicB5vknjOxv0nutsn649061ea23Tc91yT38Zn6jy+AhYX6mTn3pC/erZPb6G3m4sxik9zeTP0bd8tMm7+LLV5v+rH629UtCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpaGLcAzgZBDDZW6ie24vF6pmTUX+cAP0mqTDRKLkf9TtwP6N6JsAk9R8HAJMx3yR3old/vP0GmQC9XjbJpc1Doclbt2z1drDVbdAoNxo8Fpo9bhu8NqzlZnWLgiRJKrIoSJKkIouCJEkqGltRiIjdEZGFn2+OmPVdEfEHEfH1iDjSZb87Is5qNX5JkjaCce/MuA949wrzDwwbEBEXAncCTwX+DPhr4AeBXwReGhFXZOaetQ9VkqSNZ9xF4dHM3LHGjN9hUBJen5nvXZoZEb8JvBH4DeB1a7wOSZI2pJN6H4WIuAC4GtgN/Payxb8CHAReGRFbTvDQJEk6JYx7i8J0RLwC+G4GL+p3A7dn5rAnA7iqm34iM59w4Glm7o+IzzIoEi8APllpzJIkbRjjLgrnATctm3dfRLw6Mz89xOUv6qZfLiz/CoOi8CyOUxQi4q7Cou1DjEOSpFPSOD96+DDwEgZlYQvwfcDvAucDH4uI5wyRcUY33VdYvjT/zFWPUpKkDWxsWxQy88Zls74IvC4iDgC/DOwArl3j1SydtfK45+7MzEtWDBhsaXjeGschSdJJaT3uzPiBbnrlEOsubTE4o7B867L1JEnSCNZjUXi4mw5zpMKXuumzCsuf2U1L+zBIkqRjWI9F4bJueu8Q6+7qpldHPPHrAiPidOAK4HHgL+oNT5KkjWMsRSEiLo6IbSvMfzrwvu7Xm4+aPxkR27uzMP69zPwb4BMMdoD8+WVxNzLYKvFHmXmw4vAlSdowxrUz4/XAmyNiF3AfsB+4EPhRYAa4FXjnUet/J3APcD+DUnC0f8XgFM7viYiXdOtdCryYwUcOb2n2v5Ak6RQ3rqKwi8E5EL6fwUcNW4BHgc8wOK/CTZl53CMVYLBVISKeD/wq8FLgR4BvAO8BbszMvdVHL0nSBjGWotCdTGmYEyotrb+bbx/quNLyrwGvXvvIJEnS0dbjzoySJGmdsChIkqSicX/Xw0lhMYP9c9PVcw8szFTP3L9YPxNgf6MDRzbnkSa5/Sx+UrVq+xfnq2cC7M/6jy2A/QubmuQenK8/3sfnJ6tnAszN9ZvkMlf/8QUQDXJ7s23Gmo3eZsZEm/EuztUf8OHZNo/bQ/NT1TMX1/A30S0KkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKloYtwDOBnMZ59HHj+teu7XZ86snnnWxDnVMwFmYq5J7uE82CR3ksXqmftzunomwO65pzTJfWD27Ca5X398a/XMvQc3V88EmD041SS3d6jfJHfiYFTP7M3VzwSgUez8Qpv3r/O9+i93B6fa/E14ZFP915v5XP1j1i0KkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKloLEUhIl4VEXmcn4Uhs3YfI+Obrf8vkiSdyibGdL2fB24sLPsnwFXAx0bI2we8e4X5B0YalSRJeoKxFIXM/DyDsvAkEfG57p+/N0Lko5m5Y22jkiRJy62rfRQi4nuBFwB/C/z5mIcjSdKGN66PHkpe200/lJlD7aPQmY6IVwDfDRwE7gZuHzFDkiQts26KQkRsAl4BLAIfHPHi5wE3LZt3X0S8OjM/PeT131VYtH3EsUiSdMpYN0UB+EngTODPM/NrI1zuw8AdwP8F9gMXAL8A/CzwsYi4LDO/sJaBzS30eGjf6WuJWNF0f7565sRwB4uMbC77TXLPmdjfJHcy6t+2+xc2Vc8EeGD27Ca5Xznw1Ca5D+4/s3rm/n1tbtvevjZ/4qYebfOp7cTB+pm9ufqZg+BGsUeiSW40+Bs215uungnw0ET915u5hdXfYeupKPxsN/3dUS6UmcuPnvgi8LqIOAD8MrADuHaInEtWmt9taXjeKGOSJOlUsS52ZoyIfwRcDjwI3Fop9gPd9MpKeZIkbTjroiiw+p0Yj+XhbrqlUp4kSRvO2ItCRMwAr2SwE+OHKkZf1k3vrZgpSdKGMvaiAFwPnAXcWtqJMSImI2J7RFy4bP7FEbFthfWfDryv+/Xm2gOWJGmjWA87My7txHisMzF+J3APcD9w/lHzrwfeHBG7gPsYHPVwIfCjwAyD/R3eWXm8kiRtGGMtChHxD4F/zOp3YtwFXAR8P4OPGrYAjwKfYXBehZsyM6sMVpKkDWisRSEz7wGOe9BsZu5eab3uZEpDnVBJkiSNbj3soyBJktYpi4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqSisX575Mlicb7H4T2bqud+Lep/A/bi8b+Mc1X2z880yd02ebBJ7kRvsXrmwfnp6pkAX398a5PcB/ef2SR3z97TqmfG3qnqmQDTe9q8F5p+tEkskwfq/03ozdXPBMhem781C23+1NCbqz/eWOxXzwQ4TP3Xm8X51T8X3KIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKloYtwDOBn05oOpPf3quY+zuXrmAwttut+B2akmuVunjjTJ7fcWq2c+Pj9ZPRNg78H6jwOA/fs2NcmNvfUfCzPfavO4ndmTTXKnH22TO7V/oXpmb7b+cwEg+9Ekd2FTm8dC/0j9v+G9hTa3ATQY6/zqx+oWBUmSVGRRkCRJRRYFSZJUZFGQJElFVYpCRFwXEe+NiDsi4rGIyIi4+TiXuTwibo2IvRFxKCLujog3RMTIe3HUzJIkSd9W66iHtwLPAQ4ADwLbj7VyRPw48KfAYeCPgb3AjwHvAq4Arh/2imtmSZKkJ6r10cMbgWcBW4GfO9aKEbEV+H1gAXhRZv50Zv5r4LnA54DrIuLlw1xpzSxJkvRkVYpCZu7KzK9k5jAHF18HnAPckpl/dVTGYQZbJuA4ZaNRliRJWmYcOzNe1U0/vsKy24FDwOURMX2CsyRJ0jLjODPjRd30y8sXZOZ8RNwHXAxcANxzorIi4q7ComPubyFJ0qlsHFsUzuim+wrLl+afeYKzJEnSMuvxux6WTkhd42TqQ2dl5iUrBgy2NDyvwlgkSTrpjGOLwtK7/DMKy7cuW+9EZUmSpGXGURS+1E2ftXxBREwAzwDmgXtPcJYkSVpmHEXhU930pSssuxLYDNyZmcN8/3DNLEmStMw4isJHgEeAl0fE85dmRsQM8Ovdr+8/+gIRcUZEbI+I71hrliRJGl6VnRkj4hrgmu7X87rpZRGxs/v3I5n5JoDMfCwifobBi/xtEXELg9Muv4zB4Y4fYXAq5qNdC3wY+EPgVUszV5klSZKGVOuoh+cCNyybd0H3A3A/8KalBZn50Yh4IfAW4CeAGeCrwC8B7xnyDI/VsyRJ0hNVKQqZuQPYMeJlPgv8yJDr7gR21siSJEnDG8c+CpIk6SRhUZAkSUXr8cyM607Mw/SeOP6KI8roV8+czZnqmQDfmq8/VoB903NNcnu9+rumzM21uQ1mD041ye3ta/P0nt5T//3FzJ42uxJtemSxSe7M3jaP24nH6h/JHUcWqmcC0K//NxFgYXOj58ORBrnZ5jmWUf+2jfnVX9YtCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpaGLcAzgZxAJM/11Wz82JqJ5Jr18/E5hfbDBW4PGZNuOlxXDn2twGvUNtboOpR9u8D5h+tEVm/ecXwMzeuSa5k9861CS3t+9A9cycna2eCRC9No+v2LKpTe7CafVDezP1M4HFifovzbGw+su6RUGSJBVZFCRJUpFFQZIkFVkUJElSkUVBkiQVWRQkSVKRRUGSJBVZFCRJUpFFQZIkFVkUJElSkUVBkiQVWRQkSVKRRUGSJBVZFCRJUpFFQZIkFVUpChFxXUS8NyLuiIjHIiIj4ubCus+MiH8bEZ+KiK9FxGxEPBQRfxYRLx7xes/vrqv0c0uN/58kSRvVRKWctwLPAQ4ADwLbj7HurwE/Bfw/4FZgL3AR8DLgZRHxi5n5nhGv/wvAR1eY/8URcyRJ0lFqFYU3MigIXwVeCOw6xrofB96Rmf/n6JkR8ULgfwL/ISL+S2Z+Y4Tr/3xm7hhtyJIk6XiqfPSQmbsy8yuZmUOsu3N5Sejmfxq4DZgCLq8xLkmStDa1tijUMtdN50e83NMi4rXA2cAe4HOZefcoARFxV2HRsT5GkSTplLZuikJEPB14CXAIuH3Ei/9Q93N03m3ADZn5QJUBSpK0Aa2LohAR08B/BKaBf5OZfzfkRQ8x2Dnyo8C93bxnAzuAFwOfjIjnZubB4wVl5iWFsd3VW8znTR087qcqI5vfHNUzF6bqZwJktDmSdmGhSWyTA39jrs1tO3GwVW6TWCYP1H8uTO1v80CYeOxIk9zevgNNcnPfY9UzF4+0uQ0i2jxuY77NY6Hf71fPnNzU5iV0akv9sfYWV/+8Hft5FCKiD9wEXAH8MfDOYS+bmQ9n5tsz839n5qPdz+3A1cBfAt8DvKbFuCVJ2gjGWhS6knAzcD3wJ8Arhtkh8ngycx74YPfrlWvNkyRpoxpbUYiICeA/Ay8H/hPwz7sX+Fq+1U23VMyUJGlDGcs+ChExxWALwo8DfwS8OjMXK1/NC7rpvcdcS5IkFZ3wLQrdjov/jUFJ+BBDlISIOCMitkfEdyybf2lXOpavfxWDk0DB4KMNSZK0ClW2KETENcA13a/nddPLImJn9+9HMvNN3b8/APwI8Ajwt8DbV9h79rbMvO2o368FPgz8IfCqo+a/A7i4OxTywW7es4Grun+/LTPvXMV/SZIkUe+jh+cCNyybd0H3A3A/sFQUntFNnwK8/RiZtw1xvTcxKBE/APwwMAk8xOBjjfdl5h1DZEiSpIIqRaH7noUdQ677olXk7wR2rjD/Qww+vpAkSQ2M/TwKkiRp/bIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpKJa3x55akvozWX12P5s/cze/JO+srtSbpNYcq7NeLNBBe7NNrptG90GvbkmsU2eC73ZxeqZAHFkoUluzs42yV08cqR6ZjbIBMho87jtT001yY3Z+k+IaPS47bfIXcPT1i0KkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKnIoiBJkoosCpIkqciiIEmSiiwKkiSpyKIgSZKKLAqSJKloYtwDOGlE/chsUNOywTihzVhb5p4s9xfQZKxAs7cB2as/4Ow3uhEa5UavzY0b0eC2bZAJEP1+k1waPL4Ast/gPmv297bVH4XVcYuCJEkqsihIkqQii4IkSSqyKEiSpKIqRSEirouI90bEHRHxWERkRNxcWPf8bnnp55ZVXP/lEXFrROyNiEMRcXdEvCEiGu1tI0nSxlDrqIe3As8BDgAPAtuHuMwXgI+uMP+Lo1xxRPw48KfAYeCPgb3AjwHvAq4Arh8lT5IkfVutovBGBgXhq8ALgV1DXObzmbljLVcaEVuB3wcWgBdl5l91898GfAq4LiJenpkjb6WQJEmVPnrIzF2Z+ZXMzBp5I7gOOAe4ZakkdOM5zGArB8DPneAxSZJ0yhjnCZeeFhGvBc4G9gCfy8y7R8y4qpt+fIVltwOHgMsjYjozj6x+qJIkbUzjLAo/1P38vYi4DbghMx8YMuOibvrl5Qsycz4i7gMuBi4A7jlWUETcVVg0zP4WkiSdksZxeOQh4NeAS4Czup+l/RpeBHwyIrYMmXVGN91XWL40/8zVDFSSpI3uhG9RyMyHgbcvm317RFwNfAa4FHgN8FsVrm7phNnH3XciMy9ZMWCwpeF5FcYiSdJJZ92ccCkz54EPdr9eOeTFlrYYnFFYvnXZepIkaQTrpih0vtVNh/3o4Uvd9FnLF0TEBPAMYB64d+1DkyRp41lvReEF3XTYF/ZPddOXrrDsSmAzcKdHPEiStDonvChExKURMbXC/KsYnLgJ4OZly86IiO0R8R3LLvYR4BHg5RHx/KPWnwF+vfv1/dUGL0nSBlNlZ8aIuAa4pvv1vG56WUTs7P79SGa+qfv3O4CLu0MhH+zmPZtvnxPhbZl557KruBb4MPCHwKuWZmbmYxHxMwwKw23d90TsBV7G4NDJjzA4rbMkSVqFWkc9PBe4Ydm8C7ofgPuBpaJwE4MX/h8AfhiYBB4C/gR4X2beMcoVZ+ZHI+KFwFuAnwBmGJxK+peA94zhbJGSJJ0yqhSF7jsbdgy57oeAD42YvxPYeYzlnwV+ZJRMSZJ0fOttZ0ZJkrSOWBQkSVLROL/r4aSRPZjbFMdfcUTzDTIXZqpHdrltdvVYnFlskkv9m5aYaBAKzC+06eu9I23G2+IxtrCpzW2wsPlJB1hVEVs2tcmdX6ie2Z9qcxvQa/P4itNOa5K7uHm6eub85jYvoS1eb3INTzG3KEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkoolxD+BkkP1gdmtUz507vXokc1sX64cCi6fPN8ntzSw0yY1eVs9cnGvTq+d7bZ6Gkf0mub25+s+F/pFGYz0y1SQ3Fk5rktvv178dYnaueiZA9ts8HxY3TzfJndu2uXrm7JltnrstXm+yv/pMtyhIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqqUhQi4rqIeG9E3BERj0VERsTNhXV3dsuP9fPJIa/3/OPk3FLj/ydJ0kZV68u03wo8BzgAPAhsP8a6HwV2F5a9ErgA+NiI1/+FLne5L46YI0mSjlKrKLyRQUH4KvBCYFdpxcz8KCu8qEfEmcC/AWaBnSNe/+czc8eIl5EkScdRpShk5t8Xg4hYbcwrgU3ALZn5SI1xSZKktam1RaGGn+mmv7eKyz4tIl4LnA3sAT6XmXdXG5kkSRvUuigKEXEZ8H3Al4/eOjGCH+p+js68DbghMx8Ycgx3FRYda38LSZJOaeuiKAA/201/f8TLHQJ+jcE+D/d2854N7ABeDHwyIp6bmQfXMrjFPhzetuqPVIqObFusnplnzVXPBNh8+uEmuVtmZpvk9nv1b9vDs5PVMwEOTk03yZ3rtcmNxX71zN5C/ecXANnoT1xvpkns5Kb6443Z+s+FQXCb2PnNbe6z2TPr5z5+dpszDLR4vVnL03bsRSEizgB+klXsxJiZDwNvXzb79oi4GvgMcCnwGuC3hsi6pDC+u4DnjTIuSZJOFevhhEuvADYD/7XWToyZOQ98sPv1yhqZkiRtROuhKCztxPi7lXO/1U23VM6VJGnDGGtRiIhLGZyo6cuZeVvl+Bd003uPuZYkSSoa9xaFpZ0Yj3lIZEScERHbI+I7ls2/NCKmVlj/KgYngQJY8VTSkiTp+KrszBgR1wDXdL+e100vi4id3b8fycw3LbvMVuCnGOzE+IfHuYprgQ93673qqPnvAC7uDoV8sJv3bOCq7t9vy8w7h/+fSJKko9U66uG5wA3L5l3Q/QDcD7xp2fJ/wWD/gbWcifEmBiXiB4AfBiaBh4A/Ad6XmXesMleSJFHvFM47GJy7YJTLvB94/5Dr7mSFQycz80PAh0a5XkmSNLxx76MgSZLWMYuCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkolpfM31Ky4nkyFMW6+eePVs986yzDlTPBDj3tDa526YPNcntRf3769D8VPVMgEc2ndYk96GJ05vkHmZTg9R+g0zIiCa5ixNt/nRObal/O/Rn6z8XALLX5rad29Qmd3Zr/dzD29qM9cjZDV5vJnLVl3WLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkosjMcY9hXYuIPTE5uW3y3KfWD5+of9v3+4vVMwEm+wtNcvvRZrzRIHMxW6TCfPab5M4ttHkfsDhfP7c33+a2jfkmsUSbpwO9xQZ/j0+yP/HZ6O1r9us/xhbbPHXJBq8Ncw89TM7N7c3Ms0e9rEXhOCLiPmArsHuI1bd3079uNiDV5P118vE+O/l4n60P5wOPZeYzRr2gRaGiiLgLIDMvGfdYdHzeXycf77OTj/fZyc99FCRJUpFFQZIkFVkUJElSkUVBkiQVWRQkSVKRRz1IkqQityhIkqQii4IkSSqyKEiSpCKLgiRJKrIoSJKkIouCJEkqsihIkqQii0IFEfFdEfEHEfH1iDgSEbsj4t0Rcda4x6Yn6+6fLPx8c9zj26gi4rqIeG9E3BERj3X3x83HuczlEXFrROyNiEMRcXdEvCEi+idq3BvVKPdXRJx/jOdcRsQtJ3r8Gt7EuAdwsouIC4E7gacCf8bgO9d/EPhF4KURcUVm7hnjELWyfcC7V5h/4ASPQ9/2VuA5DO6DB4Htx1o5In4c+FPgMPDHwF7gx4B3AVcA17ccrEa7vzpfAD66wvwv1huWarMorN3vMCgJr8/M9y7NjIjfBN4I/AbwujGNTWWPZuaOcQ9CT/BGBi84XwVeCOwqrRgRW4HfBxaAF2XmX3Xz3wZ8CrguIl6emb5TbWfo++son/d5d/Lxo4c1iIgLgKuB3cBvL1v8K8BB4JURseUED0066WTmrsz8Sg53XvnrgHOAW5ZKQpdxmME7XYCfazBMdUa8v3QSc4vC2lzVTT+RmYtHL8jM/RHxWQZF4gXAJ0/04HRM0xHxCuC7GRS6u4HbM3NhvMPSkJaeex9fYdntwCHg8oiYzswjJ25YOo6nRcRrgbOBPcDnMvPuMY9Jx2FRWJuLuumXC8u/wqAoPAuLwnpzHnDTsnn3RcSrM/PT4xiQRlJ87mXmfETcB1wMXADccyIHpmP6oe7n70XEbcANmfnAWEak4/Kjh7U5o5vuKyxfmn9m+6FoBB8GXsKgLGwBvg/4XeB84GMR8ZzxDU1D8rl3cjkE/BpwCXBW97O0X8OLgE/6Ee36ZVFoK7qpn+GtI5l5Y2Z+KjMfysxDmfnFzHwd8JvAJmDHeEeoCnzurSOZ+XBmvj0z/3dmPtr93M5gi+tfAt8DvGa8o1SJRWFtlt61nFFYvnXZelrfPtBNrxzrKDQMn3ungMycBz7Y/erzbp2yKKzNl7rpswrLn9lNS/swaH15uJu6CXT9Kz73ImICeAYwD9x7IgelVflWN/V5t05ZFNZm6bjhqyPiCbdlRJzO4KQvjwN/caIHplW5rJv64rL+faqbvnSFZVcCm4E7PeLhpPCCburzbp2yKKxBZv4N8AkGO8H9/LLFNzJoyH+UmQdP8NBUEBEXR8S2FeY/HXhf9+sxTxusdeEjwCPAyyPi+UszI2IG+PXu1/ePY2B6soi4NCKmVph/FYMTN4HPu3UrPFfG2qxwCud7gEuBFzP4yOFyT+G8fkTEDuDNDLYG3QfsBy4EfhSYAW4Frs3M2XGNcaOKiGuAa7pfzwP+KYN3mXd08x7JzDctW/8jDE7hfAuDUzi/jMGhkx8BftKTAbUzyv3VHQJ5MXAbg7M5Ajybb58P422ZuVTwtM5YFCqIiH8A/CqDzaBnA99gcD7zGzNz7xiHpmUi4oUMTqn9/Xz78MhHgc8zOK/CTb64jEdX4n7lGKvcn5nnL7vMFcBbGHxsNMPgdMJ/ALzHk2e1Ncr9FRE/DVwLfC/wFGASeAj4HPC+zLyjFKLxsyhIkqQi91GQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRRYFSZJUZFGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRRYFSZJUZFGQJElFFgVJklRkUZAkSUUWBUmSVGRRkCRJRf8f6leG22TCDO4AAAAASUVORK5CYII=\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 248, + "width": 261 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(A)" + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "id": "666b4800-e670-41b7-8ec1-745112066812", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0dc46cd0>" + ] + }, + "execution_count": 336, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 248, + "width": 261 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(np.einsum('ij,jk,kl->il', M, J, np.linalg.inv(M)))" + ] + }, + { + "cell_type": "code", + "execution_count": 334, + "id": "180af918-07cd-4134-8c47-329035f45ff4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0dcf5ed0>" + ] + }, + "execution_count": 334, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 248, + "width": 261 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(M)" + ] + }, + { + "cell_type": "code", + "execution_count": 330, + "id": "805871f5-ea88-40ce-9809-a28f207c572c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.image.AxesImage at 0x7f4e0df08950>" + ] + }, + "execution_count": 330, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "image/png": { + "height": 248, + "width": 261 + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(J)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a45353c3-cc86-4efa-875c-8e175fe73d2e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} -- GitLab From 303079ef913ed41d053fbb796d15a6c8238a86f1 Mon Sep 17 00:00:00 2001 From: Osamu Waseda <o.waseda@mpie.de> Date: Thu, 22 Sep 2022 14:47:51 +0000 Subject: [PATCH 8/9] Upload New File --- 2022-status-update.md | 135 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 2022-status-update.md diff --git a/2022-status-update.md b/2022-status-update.md new file mode 100644 index 0000000..ae7ea09 --- /dev/null +++ b/2022-status-update.md @@ -0,0 +1,135 @@ +# Diffusion of H in Ni grain boundaries + +## What we did / achieved + +- **One** Sigma 5 grain boundary in Ni +- MD simulations with various numbers of H (small GB box) + - Diffusivity of H (single H) + - Segregation of H in GB -> jump from GB + - Correlation of GB & H motion? + - Still substantial amount of data to evaluate (for multiple H no evaluation yet) + - H was very mobile even for low T (~500/600 K) +- Static calculations of pairwise H-H interactions + - Nearest neighbor H-H interactions were relatively small +- kMC for 1 H + - Detection of interstitial sites -> some sites look like 2 sites + - Creation of graph structure for kMC + - Calculation of migration energies via ART +- Comparison between MD and kMC + - Diffusivity in and out of the plane + - Distance between GB was not the same -> MD faster perpendicular to GB + - Diffusivity in the plane was surprisingly similar + - Maybe non-Arrhenius behaviour? +- Dislocation + - Linear elasticity gives energy barriers in most of the sites (~1nm from core) + - H-H interactions are more complicated than pairwise interactions + - Collective interactions to be investigated +- Grain boundary + - Metadynamics for the full free energy surface + - Parameter studies for metadynamics + - Diffusion equation using free energy surface + - Solving master equations + - Temperature dependence cannot be included (maybe we don't need it?) + - Eigenvectors to the defective matrix were not linearly independent (this could be a problem of numpy) +- Non-arrhenius behaviour of H diffusion + - Metadynamics to study free energy surface for temperature-dependent energy barrier +- Theoretical calculation + - Ali's Kissinger equation + - Deconvolution of TDS, which doesn't work with standard Gaussian distribution (which experimentalists do) + +## Short-term to do list + +- Solve master equations numerically + - Do TDS with GB (regardless of whether we have all barriers) + - Aditya: Calculate energy barriers + - Comparison with MD + - Parametrization of collective H-H interactions -> dislocations +- Metadynamics + - Ali: Parameter studies of metadynamics + - Free energy of H around vacancies, GB -> continuum diffusion equation + - For Silvia: Density of states of GB +- MD + - Free surface MD -> study vacancy formation energy as a function of H + - Combine the results with metadynamics & static calculations + - Observe vacancy-H motions using high T MD + - Make a list of all observations + - Study with static calculations + + + +## Long-term perspectives + +- [ ] Extension to more realistic grain boundary density (strain dependence?) +- [ ] H-B interactions at grain boundaries in Fe +- [ ] Grain boundary motion due to H + - Are GB islands stabilized by H? + - Extension of Sherri's work (?) + - Tilmann: problem too complex + +## Project timetable / milestones + +- (2021/03/21): TDS with kMC + - Continuum solution? + - Eunan's previous calculation +- (2021/03/26): + - Metadynamics of H segregation +- (2021/04/16): + - TDS with kMC H for GB + - Analysis of MD data for multiple H -> No change (?) in diffusivity +- (2021/04/23): + - TDS spectrum for various T +- (2021/05/07): + - Diffusion with high H -> better statistics to see H-H effects ? + - TDS with vacancies +- (2021/05/14): + - TDS with vacancies +- (2021/05/21): + - Evaluation of vacancy results +- (2021/05/28): + - First TDS spectrum!!! for vacancy (Sam's ineptitude) + - (Show Gaussian fitting can give rise to physically incorrect interpretations) +- (2021/06/04): + - More correct TDS spectrum!!! (Ali's correct calculation) +- (2021/06/11): + - Even more correct TDS spectrum!!! (Include heating rate inside kMC) +- (2021/06/18): + - Creation of a straight edge dislocation in Ni (now we can easily have screw) + decomposition into partials!!! + - Yuriy's TDS spectrum for single crystalline Ni with and without strain +- (2021/06/25) + - Calculate diffusion barriers in & around dislocations + stacking fault +- (2021/07/01) + - FCC - HCP interface +- (2021/07/08) + - Investigation of partial dislocation core structure -> H stay in octahedral sites + - H binding energies follow strain field -> comparison with linear elasticity theory +- (2021/07/15) + - Linear elasticity -> Valid (i.e. error < 1 meV in octahedral sites) in range > 1.8 nm + - Dataset creation of H-H interactions +- (2021/07/22) + - H-H interactions for octahedral sites (Box possibly too small) + - 1st & 2nd shell: attractive; 3rd and more: repulsive. 2nd order terms: little contribution +- (2021/07/29) + - H-H interactions depend on local H concentration (frustration) + - H-H-H interactions (finding triangles!) +- (2021/08/12) + - Creation of general graph structure for H diffusion (superposed kMC lattice structure) +- (2021/08/19) + - Comparison between analytical & kMC diffusion + - How to count the "number of possible paths", counting saddle points or destinations? +- (2021/08/26) + - kMC with H-H interactions (how to discussion) +- (2021/09/16) + - H-H interactions for tetra-octa + - Consider H-H interactions around dislocations (parametrization of H-H with strain field?) cf. work of Gerard + - Change attempt frequency to escape time (to use more realistic heating rate) + - Change system size + - Change vacancy concentration -> How to translate theory to experiment? + - Comparison of Gaussian and "analytical" solution + - Extend bulk area + - Define chemical potential properly + - kMC with multiple H -> Comparison with MD + +## Organizational + +- Every Thursday at 2pm for 2h +- Think of presenting at H sessions -- GitLab From 824660734a0854fa8579c94e9d9be01837a5d217 Mon Sep 17 00:00:00 2001 From: Osamu Waseda <o.waseda@mpie.de> Date: Thu, 29 Sep 2022 12:49:09 +0000 Subject: [PATCH 9/9] Update 2022-status-update.md --- 2022-status-update.md | 77 ++----------------------------------------- 1 file changed, 3 insertions(+), 74 deletions(-) diff --git a/2022-status-update.md b/2022-status-update.md index ae7ea09..f8eb755 100644 --- a/2022-status-update.md +++ b/2022-status-update.md @@ -59,77 +59,6 @@ ## Long-term perspectives -- [ ] Extension to more realistic grain boundary density (strain dependence?) -- [ ] H-B interactions at grain boundaries in Fe -- [ ] Grain boundary motion due to H - - Are GB islands stabilized by H? - - Extension of Sherri's work (?) - - Tilmann: problem too complex - -## Project timetable / milestones - -- (2021/03/21): TDS with kMC - - Continuum solution? - - Eunan's previous calculation -- (2021/03/26): - - Metadynamics of H segregation -- (2021/04/16): - - TDS with kMC H for GB - - Analysis of MD data for multiple H -> No change (?) in diffusivity -- (2021/04/23): - - TDS spectrum for various T -- (2021/05/07): - - Diffusion with high H -> better statistics to see H-H effects ? - - TDS with vacancies -- (2021/05/14): - - TDS with vacancies -- (2021/05/21): - - Evaluation of vacancy results -- (2021/05/28): - - First TDS spectrum!!! for vacancy (Sam's ineptitude) - - (Show Gaussian fitting can give rise to physically incorrect interpretations) -- (2021/06/04): - - More correct TDS spectrum!!! (Ali's correct calculation) -- (2021/06/11): - - Even more correct TDS spectrum!!! (Include heating rate inside kMC) -- (2021/06/18): - - Creation of a straight edge dislocation in Ni (now we can easily have screw) + decomposition into partials!!! - - Yuriy's TDS spectrum for single crystalline Ni with and without strain -- (2021/06/25) - - Calculate diffusion barriers in & around dislocations + stacking fault -- (2021/07/01) - - FCC - HCP interface -- (2021/07/08) - - Investigation of partial dislocation core structure -> H stay in octahedral sites - - H binding energies follow strain field -> comparison with linear elasticity theory -- (2021/07/15) - - Linear elasticity -> Valid (i.e. error < 1 meV in octahedral sites) in range > 1.8 nm - - Dataset creation of H-H interactions -- (2021/07/22) - - H-H interactions for octahedral sites (Box possibly too small) - - 1st & 2nd shell: attractive; 3rd and more: repulsive. 2nd order terms: little contribution -- (2021/07/29) - - H-H interactions depend on local H concentration (frustration) - - H-H-H interactions (finding triangles!) -- (2021/08/12) - - Creation of general graph structure for H diffusion (superposed kMC lattice structure) -- (2021/08/19) - - Comparison between analytical & kMC diffusion - - How to count the "number of possible paths", counting saddle points or destinations? -- (2021/08/26) - - kMC with H-H interactions (how to discussion) -- (2021/09/16) - - H-H interactions for tetra-octa - - Consider H-H interactions around dislocations (parametrization of H-H with strain field?) cf. work of Gerard - - Change attempt frequency to escape time (to use more realistic heating rate) - - Change system size - - Change vacancy concentration -> How to translate theory to experiment? - - Comparison of Gaussian and "analytical" solution - - Extend bulk area - - Define chemical potential properly - - kMC with multiple H -> Comparison with MD - -## Organizational - -- Every Thursday at 2pm for 2h -- Think of presenting at H sessions +- Comparison of master equation, MD, continuum model and theoretical model + - Gaussian fitting does not work + - Sensitivity analysis (defect type & defect density) -- GitLab