Extrapolate out of contour

This commit is contained in:
ysyapa 2024-01-23 16:29:08 +00:00
parent 6bdf06480d
commit e869d32343
1 changed files with 5 additions and 8 deletions

View File

@ -19,7 +19,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"vertices = (0, 0.5 - 0.3im, 0.8, 6)\n", "vertices = (0, 0.4 - 0.2im, 0.8, 2, 4, 6)\n",
"subdivisions = 64\n", "subdivisions = 64\n",
"p, w = get_mesh(vertices, subdivisions)\n", "p, w = get_mesh(vertices, subdivisions)\n",
"mesh_E = p.*p ./ (2*0.5)\n", "mesh_E = p.*p ./ (2*0.5)\n",
@ -58,23 +58,20 @@
"source": [ "source": [
"extrapolate_points = range(0.40, 0.20, 5)\n", "extrapolate_points = range(0.40, 0.20, 5)\n",
"extrapolate_E = Vector{ComplexF64}(undef, length(extrapolate_points))\n", "extrapolate_E = Vector{ComplexF64}(undef, length(extrapolate_points))\n",
"exact_E = Vector{ComplexF64}(undef, length(extrapolate_points))\n", "ref_E = 0.2 - 0.1im\n",
"\n", "\n",
"for (j, c) in enumerate(extrapolate_points)\n", "for (j, c) in enumerate(extrapolate_points)\n",
" H = get_H_matrix(V_system(c), p, w)\n",
" evals = eigvals(H, permute=false)\n",
" exact_E[j] = evals[identify_pole_i(p, evals)]\n",
" \n",
" EC_basis_w = EC_basis .* w\n", " EC_basis_w = EC_basis .* w\n",
" H = get_H_matrix(V_system(c), p, w)\n",
" H_EC = transpose(EC_basis) * H * EC_basis\n", " H_EC = transpose(EC_basis) * H * EC_basis\n",
" N_EC = transpose(EC_basis) * EC_basis\n", " N_EC = transpose(EC_basis) * EC_basis\n",
" evals = eigvals(H_EC, N_EC)\n", " evals = eigvals(H_EC, N_EC)\n",
" i = argmin(abs.(evals .- exact_E[j]))\n", " i = argmin(abs.(evals .- ref_E))\n",
" ref_E = evals[i]\n",
" extrapolate_E[j] = evals[i]\n", " extrapolate_E[j] = evals[i]\n",
"end\n", "end\n",
"\n", "\n",
"scatter(real.(training_E), imag.(training_E), label=\"training\")\n", "scatter(real.(training_E), imag.(training_E), label=\"training\")\n",
"scatter!(real.(exact_E), imag.(exact_E), label=\"exact\")\n",
"scatter!(real.(extrapolate_E), imag.(extrapolate_E), label=\"extrapolated\")\n", "scatter!(real.(extrapolate_E), imag.(extrapolate_E), label=\"extrapolated\")\n",
"plot!(real.(mesh_E), imag.(mesh_E), label=\"contour\")\n", "plot!(real.(mesh_E), imag.(mesh_E), label=\"contour\")\n",
"xlims!(0,1)" "xlims!(0,1)"