{"id":519,"date":"2014-08-09T14:06:07","date_gmt":"2014-08-09T13:06:07","guid":{"rendered":"http:\/\/numbercrunch.de\/blog\/?p=519"},"modified":"2023-01-18T22:32:08","modified_gmt":"2023-01-18T21:32:08","slug":"the-lanczos-algorithm","status":"publish","type":"post","link":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/","title":{"rendered":"The Lanczos algorithm"},"content":{"rendered":"<p style=\"text-align: justify;\">Finding the eigenvalues and eigenvectors of large hermitian matrices is a key problem of (numerical) quantum mechanics. Often, however, the matrices of interest are much too large to employ exact methods. A popular and powerful approximation method is based on the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Lanczos_algorithm\">Lanczos algorithm<\/a>. The Lanczos algorithm determines an orthonormal basis of the Kyrlov sub-space $\\mathcal{K}_k(\\Psi, \\hat H)$. The Kyrlov sub-space $\\mathcal{K}_k(\\Psi, \\hat H)$ is the linear space that is spanned by the vectors $\\Psi$, $\\hat H\\Psi$, ${\\hat H}^2\\Psi$, &#8230;, ${\\hat H}^{k-1}\\Psi$ with $k\\le \\dim\\hat H$. Furthermore, the Lanczos algorithm constructs a real symmetric tridiagonal matrix $\\hat H&#8217;$ with $\\dim\\hat H&#8217;=k$ that is an approximation of $\\hat H$ in the sense that the eigenvalues of $\\hat H&#8217;$ are close to some eigenvalues of $\\hat H$. The eigenvectors of $\\hat H$ can be approximated via the eigenvectors of $\\hat H&#8217;$. Thus, the Lanczos algorithm reduces the problem of matrix diagonalization of large hermitian matrices to the diagonalization of a (usually) much smaller real symmetric tridiagonal matrix, which is a much simpler task.<\/p>\n<p style=\"text-align: justify;\">The Lanczos algorithm has been applied to many problems of nonrelativistic quantum mechanics, in particular bound state calculations and time propagation. In a recent work (<a href=\"http:\/\/arxiv.org\/abs\/1407.7370\">arXiv:1407.7370<\/a>) we evaluated the Lanczos algorithm\u00a0 for solving the time-independent as well as the time-dependent relativistic Dirac equation with arbitrary electromagnetic fields. We demonstrate that the Lanczos algorithm can yield very precise eigenenergies and allows very precise time propagation of relativistic wave packets. The Dirac Hamiltonian&#8217;s property of not being bounded does not hinder the applicability of the Lanczos algorithm. As the Lanczos algorithm requires only matrix-vector and inner products, which both can be efficiently parallelized, it is an ideal method for large-scale calculations. The excellent parallelization capabilities are demonstrated by a parallel implementation of the Dirac Lanczos propagator utilizing the Message Passing Interface standard.<\/p>\n<p style=\"text-align: justify;\">The following python code shows how to solve the time-dependent free one-dimensional Dirac equation via the Lanczos algorithm. The Hamiltonian<br \/>\n\\begin{equation}<br \/>\n\\hat H = c \\begin{pmatrix}<br \/>\n0 &amp; 1 \\\\ 1 &amp; 0<br \/>\n\\end{pmatrix} \\left(-\\mathrm{i}\\frac{\\partial}{\\partial x} \\right) + \\begin{pmatrix}<br \/>\n1 &amp; 0 \\\\ 0 &amp; -1<br \/>\n\\end{pmatrix}m_0c^2<br \/>\n\\end{equation}is approximated via second order finite differences. A detailed description of the Lanczos algorithm and its application to the Dirac equation is given in <a href=\"http:\/\/arxiv.org\/abs\/1407.7370\">arXiv:1407.7370<\/a>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#!\/usr\/bin\/env python\n# -*- coding: utf-8 -*-\n\n# import useful modules\nimport matplotlib \nfrom math import factorial\nfrom numpy import *\nfrom pylab import *\nfrom numpy.polynomial.hermite import *\n\n# use LaTeX, choose some nice looking fonts and tweak some settings\nmatplotlib.rc('font', family='serif')\nmatplotlib.rc('font', size=16)\nmatplotlib.rc('legend', fontsize=16)\nmatplotlib.rc('legend', numpoints=1)\nmatplotlib.rc('legend', handlelength=1.5)\nmatplotlib.rc('legend', frameon=False)\nmatplotlib.rc('xtick.major', pad=7)\nmatplotlib.rc('xtick.minor', pad=7)\nmatplotlib.rc('lines', lw=1.5)\nmatplotlib.rc('text', usetex=True)\nmatplotlib.rc('text.latex', \n              preamble=[r'\\usepackage[T1]{fontenc}',\n                        r'\\usepackage{amsmath}',\n                        r'\\usepackage{txfonts}',\n                        r'\\usepackage{textcomp}'])\n\nclose('all')\nfigure(figsize=(6, 4.5))\n\nc=137.0359998  # speed of light in a.u.\nN=1024+512\n\n# the 1d Dirac Hamiltonian\ndef H(Psi, x, t, dt):\n    Psi=reshape(Psi, (N, 2))\n    dx=x[1]-x[0]\n    Psi_new=empty_like(Psi)\n    Psi_new[1:-1, 0]=-1j*c*(Psi[2:, 1]-Psi[0:-2, 1])\/(2*dx) + c**2*Psi[1:-1, 0]\n    Psi_new[1:-1, 1]=-1j*c*(Psi[2:, 0]-Psi[0:-2, 0])\/(2*dx) - c**2*Psi[1:-1, 1]\n    Psi_new[0, 0]=Psi_new[0, 1]=0\n    Psi_new[-1, 0]=Psi_new[-1, 1]=0\n    Psi_new*=dt\n    return reshape(Psi_new, 2*N)\n\n# the Lanczos algorithm\ndef Lanczos(Psi, x, t, dt, H, m):\n    Psi_=Psi.copy()\n    # run Lanczos algorithm to calculate basis of Krylov space\n    V_j, V_j_1=[], []\n    A=zeros((m, m))\n    norms=zeros(m)\n    for j in range(0, m):\n        norms[j]=norm(Psi_)\n        V_j=Psi_\/norms[j]\n        Psi_=H(V_j, x, t, dt)\n        if j&gt;0:\n            A[j-1, j]=A[j, j-1]=vdot(V_j_1, Psi_).real\n            Psi_-=A[j-1, j]*V_j_1\n        A[j, j]=vdot(V_j, Psi_).real\n        Psi_-=A[j, j]*V_j\n        V_j_1, V_j=V_j, V_j_1\n    # diagonalize A\n    l, v=eig(A)\n    # calculate matrix exponential in Krylov space\n    c=dot(v, dot(diag(exp(-1j*l)), v[0, :]*norms[0]))\n    # run Lanczos algorithm 2nd time to transform result into original space\n    Psi_, Psi=Psi, zeros_like(Psi)\n    for j in range(0, m):\n        V_j=Psi_\/norms[j]\n        Psi+=c[j]*V_j\n        Psi_=H(V_j, x, t, dt)\n        if j&gt;0:\n            A[j-1, j]=A[j, j-1]=vdot(V_j_1, Psi_).real\n            Psi_-=A[j-1, j]*V_j_1\n        A[j, j]=vdot(V_j, Psi_).real\n        Psi_-=A[j, j]*V_j\n        V_j_1, V_j=V_j, V_j_1\n    return Psi\n\n# define computational grid\nx0, x1=-0.5, 0.5\nx=linspace(x0, x1, N)\ndx=x[1]-x[0]       # size of spatial grid spacing\ndt=4.\/c**2         # temporal step size\n\n# constuct momentum grid\ndp=2*pi\/(N*dx)\np=(arange(0, N)-0.5*(N-1))*dp\n# choose initial condition\np_mu=75.       # mean momentum\nsigma_p=50.    # momentum width\nx_mu=-0.05     # mean position\n# upper and lower components of free particle states, \n# see e.g. Thaller \u00bbAdvanced visual quantum mechanics\u00ab\nd_p=sqrt(0.5+0.5\/sqrt(1+p**2\/c**2))\nd_m=sqrt(0.5-0.5\/sqrt(1+p**2\/c**2))\nd_m[p&lt;0]*=-1\n# initial condition in momentum space, \n# gaussian wave packet of positive energy states\nrho=(2*pi*sigma_p**2)**(-0.25)*exp(-(p-p_mu)**2\/(4*sigma_p**2) - 1j*p*x_mu) \nPsi=zeros((N, 2), dtype='complex')\nPsi[:, 0]=d_p*rho\nPsi[:, 1]=d_m*rho\n# transform into real space with correct complex phases \nPsi[:, 0]*=exp(1j*x[0]*dp*arange(0, N))\nPsi[:, 1]*=exp(1j*x[0]*dp*arange(0, N))\nPsi=ifft(Psi, axis=0)\nPsi[:, 0]*=dp*N\/sqrt(2*pi)*exp(1j*x*p[0])\nPsi[:, 1]*=dp*N\/sqrt(2*pi)*exp(1j*x*p[0])\n\n# propagate \nfor k in range(0, 20):\n    # plot wave function\n    clf()\n    plot(x, Psi[:, 0].real**2+Psi[:, 0].imag**2+\n         Psi[:, 1].real**2+Psi[:, 1].imag**2, \n         color='#266bbd', label=r'$|\\Psi(x)|^2'$)\n    gca().set_xlim(x0, x1)\n    gca().set_ylim(-1, 16)\n    xlabel(r'$x)\u00a0\n    legend(loc='upper left')\n    tight_layout()\n    draw()\n    show()\n    pause(0.05)\n    Psi=reshape(Lanczos(reshape(Psi, 2*N), x, 0, dt, H, 128), (N, 2)<\/pre>\n<figure id=\"attachment_537\" aria-describedby=\"caption-attachment-537\" style=\"width: 480px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-537\" src=\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\" alt=\"Evolution of a Dirac wave packet as calculated by the program shown above. The wave packet has Gaussian distribution in momentum space an is initially at $x=-0.2$. Due to the nonlinear relativistic relation between momentum an velocity the wave packet becomes asymmetric in position space.\" width=\"480\" height=\"362\" srcset=\"https:\/\/www.numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png 480w, https:\/\/www.numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free-300x226.png 300w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"caption-attachment-537\" class=\"wp-caption-text\">Evolution of a Dirac wave packet as calculated by the program shown above. The wave packet has Gaussian distribution in momentum space and is initially at $x=-0.2$. Due to the nonlinear relativistic relation between momentum an velocity the wave packet becomes asymmetric in position space.<\/figcaption><\/figure>\n<div class=\"mceTemp\"><\/div>\n<div class=\"mceTemp\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Finding the eigenvalues and eigenvectors of large hermitian matrices is a key problem of (numerical) quantum mechanics. Often, however, the matrices of interest are much too large to employ exact methods. A popular and powerful approximation method is based on the Lanczos algorithm. The Lanczos algorithm determines an orthonormal basis of the Kyrlov sub-space $\\mathcal{K}_k(\\Psi,&hellip; <a href=\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">The Lanczos algorithm<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-519","post","type-post","status-publish","format-standard","hentry","category-numerical-methods"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>The Lanczos algorithm - Number Crunch<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Lanczos algorithm - Number Crunch\" \/>\n<meta property=\"og:description\" content=\"Finding the eigenvalues and eigenvectors of large hermitian matrices is a key problem of (numerical) quantum mechanics. Often, however, the matrices of interest are much too large to employ exact methods. A popular and powerful approximation method is based on the Lanczos algorithm. The Lanczos algorithm determines an orthonormal basis of the Kyrlov sub-space $mathcal{K}_k(Psi,&hellip; Continue reading The Lanczos algorithm\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\" \/>\n<meta property=\"og:site_name\" content=\"Number Crunch\" \/>\n<meta property=\"article:published_time\" content=\"2014-08-09T13:06:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-18T21:32:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\" \/>\n<meta name=\"author\" content=\"Heiko Bauke\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Heiko Bauke\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\"},\"author\":{\"name\":\"Heiko Bauke\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"headline\":\"The Lanczos algorithm\",\"datePublished\":\"2014-08-09T13:06:07+00:00\",\"dateModified\":\"2023-01-18T21:32:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\"},\"wordCount\":446,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"image\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\",\"articleSection\":[\"numerical methods\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\",\"url\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\",\"name\":\"The Lanczos algorithm - Number Crunch\",\"isPartOf\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\",\"datePublished\":\"2014-08-09T13:06:07+00:00\",\"dateModified\":\"2023-01-18T21:32:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage\",\"url\":\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\",\"contentUrl\":\"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.numbercrunch.de\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Lanczos algorithm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#website\",\"url\":\"https:\/\/www.numbercrunch.de\/blog\/\",\"name\":\"Number Crunch\",\"description\":\"A computational science blog.\",\"publisher\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.numbercrunch.de\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413\",\"name\":\"Heiko Bauke\",\"logo\":{\"@id\":\"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Lanczos algorithm - Number Crunch","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/","og_locale":"en_US","og_type":"article","og_title":"The Lanczos algorithm - Number Crunch","og_description":"Finding the eigenvalues and eigenvectors of large hermitian matrices is a key problem of (numerical) quantum mechanics. Often, however, the matrices of interest are much too large to employ exact methods. A popular and powerful approximation method is based on the Lanczos algorithm. The Lanczos algorithm determines an orthonormal basis of the Kyrlov sub-space $mathcal{K}_k(Psi,&hellip; Continue reading The Lanczos algorithm","og_url":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/","og_site_name":"Number Crunch","article_published_time":"2014-08-09T13:06:07+00:00","article_modified_time":"2023-01-18T21:32:08+00:00","og_image":[{"url":"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png","type":"","width":"","height":""}],"author":"Heiko Bauke","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Heiko Bauke","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#article","isPartOf":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/"},"author":{"name":"Heiko Bauke","@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"headline":"The Lanczos algorithm","datePublished":"2014-08-09T13:06:07+00:00","dateModified":"2023-01-18T21:32:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/"},"wordCount":446,"commentCount":0,"publisher":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"image":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage"},"thumbnailUrl":"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png","articleSection":["numerical methods"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/","url":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/","name":"The Lanczos algorithm - Number Crunch","isPartOf":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage"},"image":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage"},"thumbnailUrl":"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png","datePublished":"2014-08-09T13:06:07+00:00","dateModified":"2023-01-18T21:32:08+00:00","breadcrumb":{"@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#primaryimage","url":"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png","contentUrl":"https:\/\/numbercrunch.de\/blog\/wp-content\/uploads\/2014\/08\/Dirac_free.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.numbercrunch.de\/blog\/2014\/08\/the-lanczos-algorithm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.numbercrunch.de\/blog\/"},{"@type":"ListItem","position":2,"name":"The Lanczos algorithm"}]},{"@type":"WebSite","@id":"https:\/\/www.numbercrunch.de\/blog\/#website","url":"https:\/\/www.numbercrunch.de\/blog\/","name":"Number Crunch","description":"A computational science blog.","publisher":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.numbercrunch.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/e73eab65b1721dd0c3d408edb887e413","name":"Heiko Bauke","logo":{"@id":"https:\/\/www.numbercrunch.de\/blog\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/519"}],"collection":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/comments?post=519"}],"version-history":[{"count":30,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/519\/revisions"}],"predecessor-version":[{"id":980,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/posts\/519\/revisions\/980"}],"wp:attachment":[{"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/media?parent=519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/categories?post=519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.numbercrunch.de\/blog\/wp-json\/wp\/v2\/tags?post=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}