commit e6bf8349d7fc554bdbd915cc65c44f23c1b86e75 Author: Ian Jauslin Date: Mon Dec 16 15:06:59 2019 -0500 Initial commit diff --git a/Carlen_Jauslin_Lieb_2019.tex b/Carlen_Jauslin_Lieb_2019.tex new file mode 100644 index 0000000..9e020a5 --- /dev/null +++ b/Carlen_Jauslin_Lieb_2019.tex @@ -0,0 +1,1437 @@ +\documentclass{ian} + +\usepackage{array} +\usepackage{graphicx} +\usepackage{largearray} +\usepackage{dsfont} +\usepackage{etoolbox} + +\begin{document} + +\pagestyle{empty} + +\hbox{} +\hfil{\bf\LARGE Analysis of a simple equation for the +\par +\vskip10pt +\hfil ground state energy of the Bose gas +} +\vfill + +\hfil{\bf\large Eric Carlen}\par +\hfil{\it Department of Mathematics, Rutgers University}\par +\hfil{\tt\color{blue}\href{mailto:carlen@rutgers.edu}{carlen@rutgers.edu}}\par +\vskip20pt + +\hfil{\bf\large Ian Jauslin}\par +\hfil{\it Department of Physics, Princeton University}\par +\hfil{\tt\color{blue}\href{mailto:ijauslin@princeton.edu}{ijauslin@princeton.edu}}\par +\vskip20pt + +\hfil{\bf\large Elliott H. Lieb}\par +\hfil{\it Departments of Mathematics and Physics, Princeton University}\par +\hfil{\tt\color{blue}\href{mailto:lieb@princeton.edu}{lieb@princeton.edu}}\par + +\vfill + + +\hfil{\bf Abstract}\par +\medskip +{\small +In 1963 a partial differential equation with a convolution non-linearity was introduced in connection with a quantum mechanical many-body problem, namely the gas of bosonic particles. +This equation is mathematically interesting for several reasons. +(1) Further investigation showed that predictions based on the equation agree well over the {\it entire range} of parameters with what is expected to be true for the solution of the true many-body problem. +(2) The novel nonlinearity is easy to state but seems to have almost no literature up to now. +(3) The earlier work did not prove existence and uniqueness of a solution, which we provide here along with properties of the solution such as decay at infinity. +} +\vfill + +\tableofcontents + +\vfill +\hfil{\scriptsize\copyright\ by the authors. This paper may be reproduced in its entirety for non-commercial purposes.} +\eject + +\setcounter{page}1 +\pagestyle{plain} + +\section{Introduction} +\indent This paper is devoted to the study of an integro-differential equation introduced in\-~\cite{Li63} in connection with the study of the Bose gas, a many body problem in quantum mechanics. +The equation is +\begin{equation} + (-\Delta+4e+\mathcal V(x))u(x)=\mathcal V(x)+2e\rho(u\ast u)(x)\ , + \label{simpleq} +\end{equation} +with $x\in\mathbb R^d$, and $*$ denoting convolution: $u\ast u(x):=\int u(x-y)u(y)\ dy$. +Here, $\mathcal V$ is a given function, (called the {\it potential}), in $L^1 (\mathbb{R}^d ) \cap L^p(\mathbb{R}^d )$, +with $p >d/2$ for $d\geqslant 2$ and $p>1 $for $d=1$. We assume $\mathcal{V}$ to be non-negative. (This corresponds to a repulsive interaction between the particles in the underlying quantum system). The two parameters +$e$ and $\rho$ are non-negative numbers, and they are related by a constraint, namely +\begin{equation} + e=\frac\rho2\int (1-u(x))\mathcal V(x)\ dx\ . + \label{energy} +\end{equation} + +\indent We are interested in solutions of\-~(\ref{simpleq}) that satisfy the constraint\-~(\ref{energy}), or, in other words, solutions of the system\-~(\ref{simpleq}) and\-~(\ref{energy}). We are particularly interested in the case $d=3$, though other dimensions are also of interest. +As explained in \-~\cite{Li63}, the parameter $\rho$ corresponds to the particle density $\frac NV$ of the underlying Bose gas in the large volume and large particle number limit, and $e=\frac EN$ stands for the energy per particle. +\bigskip + +\indent One would like to fix a value $\rho$ for the density, and then one expects, on the basis of the arguments in \-~\cite{Li63}, that there will be a unique value of $e = e(\rho)$ such that there is a solution of\-~(\ref{simpleq}) and\-~(\ref{energy}) with $u$ taking values in $[0,1]$. +This value of $e$ is then the energy per particle of the Bose gas in its ground state. + +\indent The problem of determining this ground state energy per particle, as a function of the density, has attracted the attention of a great many researchers since the pioneering work of Lenz in 1929\-~\cite{Le29}. +In that paper and subsequent work\-~\cite{Bo47,LHY57}, an asymptotic expansion of $e(\rho)$, for $d=3$ and small $\rho$ was obtained: +\begin{equation} + e=2\pi\rho a\left(1+\frac{128}{15\sqrt\pi}\sqrt{\rho a^3}+o(\sqrt\rho)\right)\ \qquad \rho \to 0 + \label{lhy} +\end{equation} +where $a$, called the {\it scattering length}, is a property of the pair interaction potential $\mathcal V(x)$, and is defined in\-~(\ref{scattering})-(\ref{ephi}) below. +Here, we set both the mass $m$ of the particle and Planck's constant $\hbar$ to 1. This early work was not mathematically rigorous, and it was not until + 1998\-~\cite{LY98} that the validity of the first term $2\pi\rho a$ was proved, and not until 2019\-~\cite{FS19} that the validity of second term was also proved, utilizing upper bounds proved earlier in\-~\cite{Dy57,YY09}. + +\indent This timeline gives some idea of the complexity of the problem of directly studying the Bose gas ground state as a many body problem. The complexity makes it very attractive to try to show that the system\-~(\ref{simpleq}) and + (\ref{energy}) +provides a useful and illuminating route to the computation of the properties of the ground state for a Bose gas. Interest is piqued further by the fact that numerical studies show that the function $e(\rho)$ computed using the system\-~(\ref{simpleq}) and\-~(\ref{energy}) is surprisingly accurate for {\em all } densities, not only low densities, as we discuss later in this paper. Until now, however, there has been no mathematically rigorous study of this system, and even the most basic questions concerning existence and uniqueness of solutions had remained open. +\bigskip + +\indent In this paper, we settle some of these basic questions and raise others. It may at first appear surprising that the equation\-~(\ref{simpleq}) poses any serious mathematical challenges. After all, if one replaced the convolution nonlinearity $u*u$ in\-~(\ref{simpleq}) by a power non-linearity, say $u^2$, one would have a familiar sort of local elliptic equation: +\begin{equation} + (-\Delta+4e+\mathcal V(x))u(x)=\mathcal V(x)+2e\rho u^2(x) + . + \label{simpleq2} +\end{equation} +However, the convolution nonlinearity in\-~(\ref{simpleq}) makes it non-local, and very different from\-~(\ref{simpleq2}). +\bigskip + +\indent As explained in\-~\cite{Li63} the solutions of physical interest are integrable, and satisfy +\begin{equation} + 0 \leqslant u(x) \leqslant 1 \quad{\rm for \ all}\ x \ . + \label{con1} +\end{equation} +We shall see that any non-negative solution automatically satisfies this upper bound. +\bigskip + +\indent Before stating our main theorems, we make a few observations. +\medskip + +\point The system\-~(\ref{simpleq})-(\ref{energy}) is actually equivalent to\-~(\ref{simpleq}) and the constraint +\begin{equation} + \int u(x)\ dx=\frac1\rho. + \label{con2} +\end{equation} +To prove this, consider the operator +\begin{equation} + G_e := [-\Delta + 4e]^{-1} + \label{Ge} +\end{equation} +which is given by +\begin{equation} + G_e f = Y_{4e}*f + \label{yukawa} +\end{equation} +where $Y_{4e}$ is the {\em Yukawa potential}\-~\cite[section 6.23]{LL01}, which is non-negative and $\int Y_{4e} dx = (4e)^{-1}$. +When $d=3$, +\begin{equation} + Y_{4e}(x)=\frac{e^{-2\sqrt e|x|}}{4\pi|x|} + . +\end{equation} +Equation\-~(\ref{simpleq}) can be rewritten as +\begin{equation}\label{simpleq3} +u(x) = Y_{4e}*(\mathcal V (1- u(x)) +2e\rho Y_{4e}*u*u \ . +\end{equation} +Since $u$ and $\mathcal V$ are assumed to be integrable, and $u(x)$ is assumed to satisfy\-~(\ref{con1}), all terms in\-~(\ref{simpleq3}) are integrable, and integrating yields +\begin{equation} +\int u(x)\ dx = \frac{1}{4e} \int \mathcal V(x)(1- u(x)) dx +\frac{\rho}{2} \left(\int u(x)\ dx\right)^2\ . +\end{equation} +Thus, for integrable solutions $u$ of\-~(\ref{simpleq}) satisfying\-~(\ref{con1}), the constraint\-~(\ref{energy}) is equivalent to\-~(\ref{con2}). +\bigskip + +\point +There is another useful way to write the system \-~(\ref{simpleq})-(\ref{energy}). The damped heat semigroup $e^{-t(-\Delta + 4e)}$ is a strongly continuous contraction semigroup on $L^p(\mathbb{R}^d)$, and the domain of its generator is +$\mathcal{D}(-\Delta + 4e)= W^{2,p}(\mathbb{R}^d)$. +By the Sobolev embedding theorem\-~\cite[Theorem 10.2]{LL01}, since $p>d/2$, all functions $f\in \mathcal{D}(-\Delta + 4e)$ are continuous and vanish at infinity. Since $\mathcal{V} \geqslant 0$, $e^{-t\mathcal{V}}$ is also a +strongly continuous contraction semigroup on $L^p(\mathbb{R}^d)$, and since $\mathcal{V} \in L^p(\mathbb R^d)$, the domain of its generator, $\mathcal{D}(\mathcal{V})$, contains all bounded functions, and in particular +$W^{2,p}(\mathbb{R}^d)$. Writing $\mathcal{V}$ as the sum of a piece with a small norm in $L^p(\mathbb R^d)$ and another piece that is bounded, it is easy to see that there are numbers $a,b>0$ with $a< 1/2$ such that for all $f\in +W^{2,p}(\mathbb{R}^d)$, +\begin{equation} + \|\mathcal{V}f\|_p \leqslant a\|(-\Delta + 4e)f\|_p + b\|f\|_p\ . +\end{equation} +Then by the Banach space version +of the Kato-Rellich theorem, \cite[p.~244]{RS75b}, the operator $-\Delta + 4e + \mathcal V(x)$ maps +$W^{2,p}(\mathbb{R}^d)$ invertibly onto $L^p(\mathbb R^d)$. Define $K_e$ to be the inverse operator +\begin{equation} + K_e := [-\Delta + 4e + \mathcal V(x)]^{-1}\ . + \label{Kedef} +\end{equation} +By the Trotter product formula, the operator $K_e$ has a positive kernel that we denote by $K_e(x,y)$; in particular, $K_e$ preserves positivity. +By the resolvent identity +\begin{equation} + K_e=G_e-G_e\mathcal VK_e + \label{resolvent} +\end{equation} +we conclude that +\begin{equation} + 0\leqslant K_e(x,y)\leqslant G_e(x,y) + \label{ineqKe} +\end{equation} +for all $x,y$. Thus, the operator $K_e$ extends to a bounded operator on $L^1(\mathbb R^d)$ and all terms in the equation +\begin{equation}\label{simpleq4} +u(x) = K_e \mathcal V(x) +2e\rho K_eu*u(x) \ . +\end{equation} +are well-defined whenever $u$ is integrable. Moreover, since +$\mathcal V \in L^p(\mathbb R^d)$, and since $u\ast u\in L^p(\mathbb R^d)$ when $u$ is integrable and satisfies\-~(\ref{con1}), every integrable solution $u$ of\-~(\ref{simpleq4}) that satisfies\-~(\ref{con1}) actually belongs to +$W^{2,p}(\mathbb{R}^d)$ and satisfies\-~(\ref{simpleq}). +\bigskip + +\indent Several simple bounds follow almost immediately from this form of the equation. +First of all, since the last term on the right of\-~(\ref{simpleq4}) is non-negative, we have an {\em a-priori} lower bound on $u(x)$, namely +\begin{equation} + u(x) \geqslant u_1(x) := K_e\mathcal V(x)\ . + \label{u1def} +\end{equation} +Integrating both sides of\-~(\ref{u1def}), and using\-~(\ref{con2}) yields an upper bound on $\rho$ depending only on $e$, namely, $\rho \leqslant \left(\int K_e\mathcal V(x)\ dx\right)^{-1}$. +By\-~(\ref{energy}) and\-~(\ref{u1def}), +\begin{equation} +\rho = {2e}\left(\int\mathcal{V}(1- u)(x) dx\right)^{-1} \geqslant {2e}\left(\int\mathcal{V}(1- K_e\mathcal V)(x) dx\right)^{-1} \ . +\end{equation} +Altogether, +\begin{equation} +{2e}\left(\int\mathcal{V}(1- K_e\mathcal V)(x) dx\right)^{-1} \leqslant \rho \leqslant \left(\int K_e\mathcal V(x)\ dx\right)^{-1} \ . + \label{con4} +\end{equation} +In fact, the left side of\-~(\ref{con4}) is equal to one half the right side. To see this observe that $u_1 = K_d \mathcal{V}$ satisfies $(-\Delta +4e + \mathcal{V})u_1 = \mathcal{V}$, and hence $u_1 = G_e(\mathcal{V}(1-u_1))$. +Integrating both side yields $\int u_1 dx = \frac{1}{4e} \int \mathcal{V}(1-u_1) dx$. By\-~(\ref{u1def}), we obtain the following simpler (albeit less sharp) bounds: +\begin{equation} +{2e}\left(\int\mathcal{V}dx \right)^{-1} \leqslant \rho \leqslant{4e}\left(\int\mathcal{V}dx \right)^{-1} \ , + \label{con4B} +\end{equation} +or equivalently +\begin{equation} +\left( \frac{1}{4}\int\mathcal{V}dx \right)\rho \leqslant e \leqslant \left(\frac{1}{2}\int\mathcal{V}dx\right)\rho \ . + \label{con4C} +\end{equation} +In particular, this shows that the system\-~(\ref{simpleq})-(\ref{energy}) does not have a solution for arbitrary values of $\rho$ and $e$: when either is small, a solution of the type we seek can only exist if the other is correspondingly small, as specified by\-~(\ref{con4B}) and\-~(\ref{con4C}). +In fact, as is stated in the following theorem, $\rho$ and $e$ are constrained to be related by a functional equation. +\bigskip + +\theo{Theorem}[existence and uniqueness]\label{theorem:existence} Let $\mathcal V\in L^1(\mathbb{R}^d)\cap L^p(\mathbb{R}^d)$, $p>\max\{\frac d2,1\}$, be non-negative. +Then there is a constructively defined continuous function $\rho(e)$ on $(0,\infty)$ such that + $\lim_{e\to 0}\rho(e) = 0$ and $\lim_{e\to \infty} \rho(e) = \infty$ and such that for any $e\geqslant 0$ and $\rho = \rho(e)$, + the system\-~(\ref{simpleq}) and\-~(\ref{energy}) has a unique integrable solution $u(x)$ satisfying\-~(\ref{con1}). Moreover, if $\rho \neq \rho(e)$, the system\-~(\ref{simpleq}) and\-~(\ref{energy}) has {\em no} integrable solution $u(x)$ satisfying\-~(\ref{con1}). +\endtheo +\bigskip + +{\bf Remarks}: +\begin{itemize} + \item We do not assume here that the potential is radially symmetric. + However, we shall see from our proof that if $\mathcal V$ is radially symmetric, then so is $u$. + + \item The function $\rho(e)$ is the {\em density function}, which specifies the density as a function of the energy. Thus, our system together with\-~(\ref{con1}) constrains the parameters $e$ and $\rho$ to be related by a strict functional relation $\rho = \rho(e)$. In most of the early literature on the Bose gas, $\rho$ is taken as the independent parameter, as suggested by\-~(\ref{lhy}): One puts $N$ particles in a box of volume $N/\rho$, and +seeks to find the ground state energy per particle, $e$, as a function of $\rho$. Our theorem goes in the other direction, with $\rho$ specified as a function of $e$. We prove that $e\mapsto\rho(e)$ is continuous, and we conjecture that $\rho(e)$ is a strictly +monotone increasing function. In that case, the functional relation could be inverted, and we would have a well-defined function $e(\rho)$. + + \item Since $ \lim_{e\to 0}\rho(e)=0$ and $\lim_{e\to \infty}\rho(e)=\infty$, the continuity of $e\to \rho(e) $ implies that for each $\rho \in (0,\infty)$ there is {\it at least one} $e$ such that $\rho(e) =\rho$. +\end{itemize} +\bigskip + +\indent Having proved that the solution to the simple equation is unique, our second main result is an asymptotic expression for $e(\rho)$, both for low and for high density. +\bigskip + +\theo{Theorem}[asymptotics of the energy for $d=3$]\label{theorem:asymptotics} + Consider the case $d=3$. + Let $\mathcal V$ be non-negative, integrable and square-integrable. Then, for each + $\rho>0$ there is at least one $e>0$ such that $\rho = \rho(e)$. For any such $\rho $ and $e$ we have the following bounds for low and high density (i.e., small and large $\rho$). + For low density, + \begin{equation} + e=2\pi\rho a\left(1+\frac{128}{15\sqrt\pi}\sqrt{\rho a^3}+o(\sqrt\rho)\right) + \label{3d} + \end{equation} + where $a$ is the {\it scattering length} of the potential, which is defined in~(\ref{sl}). + For high density, in any dimension $d\geqslant 1$, + \begin{equation} + e=\frac\rho2\int\mathcal V(x)\ dx+o(\rho) + . + \label{largerho} + \end{equation} +\endtheo +\bigskip + +{\bf Remarks}: +\begin{itemize} + \item For low densities in $d=3$, the energy $e$ predicted by the simple equation\-~(\ref{simpleq})-(\ref{energy}) is asymptotically equal to the ground state energy of the Bose gas\-~\cite{LHY57,YY09,FS19}. + For high densities, when the potential has a non-negative Fourier transform, the asymptotic formula for the ground state energy of the Bose gas coincides with\-~(\ref{largerho})\-~\cite[appendix]{Li63}. + Thus, the simple equation yields the same asymptotes for both low and high densities as the Bose gas does (at least when the potential has a non-negative Fourier transform, as in the example $\mathcal V(x)=e^{-|x|}$ discussed in section\-~\ref{subsec:numerics}). +\end{itemize} +\bigskip + +\theo{Theorem}[decay of $u$ in $d=3$]\label{theorem:decay} + For $d=3$, if $\mathcal V$ is non-negative, square-integrable, spherically symmetric (that is, $\mathcal V(x)=\mathcal V(|x|)$), and, for $|x|>R$, + \begin{equation} + \mathcal V(|x|)\leqslant Ae^{-B|x|} + \label{expdecay} + \end{equation} + for some $A,B>0$ then there exists $\alpha>0$ such that + \begin{equation} + u(|x|)\mathop\sim_{|x|\to\infty}\frac\alpha{|x|^4} + . + \end{equation} +\endtheo +\bigskip + +{\bf Remarks}: +\begin{itemize} + \item This result is consistent with a prediction in\-~\cite{LHY57} that the truncated 2-point correlation function in the ground state of the Bose gas decays like $|x|^{-4}$. + + \item To prove this theorem, we will use analytical properties of the Fourier transform $\widehat{\mathcal V}$ of $\mathcal V$, which is why we assume that $\mathcal V$ decays exponentially at infinity. + For potentials with slower decay, it seems that the decay of $u$ should still be $|x|^{-4}$, except if $\mathcal V$ itself decays slower than $|x|^{-4}$, in which case $u$ should decay like $\mathcal V$. + + \item It is presumably not too difficult to extend this result to cases with potentials that are not spherically symmetric. +\end{itemize} +\bigskip + +{\bf Remark}: +The simple equation\-~(\ref{simpleq}) is actually an approximation of a richer equation for $u$\-~\cite{Li63}, which should more accurately depict the Bose gas, see\-~(\ref{fulleq}). + Little is known about this richer equation. +\bigskip + +\indent The paper is organized as follows. +We prove theorems\-~\ref{theorem:existence}, \ref{theorem:asymptotics} and\-~\ref{theorem:decay} in sections\-~\ref{sec:existence}, \ref{sec:asymptotics} and\-~\ref{sec:decay} respectively. +In section\-~\ref{sec:bosegas}, we explain how the simple equation is related to the Bose gas, and present some numerical evidence that it is very good at predicting the ground state energy. +In section\-~\ref{sec:open} we discuss a few open problems and extensions. + +\section{Proof of Theorem\-~\expandonce{\ref{theorem:existence}}}\label{sec:existence} + +\indent As was shown in\-~(\ref{simpleq3}) and\-~(\ref{simpleq4}), there are at least two ways to write\-~(\ref{simpleq}) as a fixed point equation. +As it turns out, only the latter one +\begin{equation} +u(x) = \Phi(u)(x) := K_e (\mathcal V(x) +2e\rho u*u(x)) +\label{iteration0} +\end{equation} +is adapted to solution by iteration, because of its monotonicity properties. +Starting with $u_0(x) = 0$, define +\begin{equation} + u_n(x) = \Phi(u_{n-1})(x) +\end{equation} +for $n\geq1$. It is easy to see that for arbitrary $e,\rho \geqslant 0$, this produces a monotone increasing sequence of non-negative integrable functions. Thus, $u(x) := \lim_{n\to \infty}u_n(x)$ will exist, but it need not be integrable and it need not satisfy\-~(\ref{energy}) or\-~(\ref{con1}). + +\indent To bring\-~(\ref{energy}) into the iteration scheme, we take $e$ as the independent parameter, and define a sequence $\{\rho_n\}$ along with the sequence $\{u_n(x)\}$, both depending on $e$, through +\begin{equation} + u_n(x)=K_e \mathcal V(x)+2e\rho_{n-1}K_e u_{n-1}\ast u_{n-1}(x) \ . + \quad + u_0(x)=0 + \label{iteration} +\end{equation} +and +\begin{equation} + \rho_n:=\frac{2e}{\int(1-u_n(x))\mathcal V(x)} . + \label{rhon} +\end{equation} +Comparing\-~(\ref{iteration}) to\-~(\ref{iteration0}), note that the analog of $\Phi$ now depends on $n$. + +\theo{Lemma}\label{lem1} Let $\mathcal{V} \in L^1(\mathbb{R}^d)\cap L^p(\mathbb{R}^d)$, $p>\max\{\frac d2,1\}$. Both sequences $\{\rho_n\}$ and $\{u_n\}$ are well defined and increasing, and for all $n$, +\begin{equation}\label{simple17} +\int_{\mathbb{R}^d} u_n{\rm d}x < \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(1-u_n)dx \ . +\end{equation} +\endtheo +\bigskip + +{\bf Proof:} +We proceed by induction. By definition, $u_0 =0$ and $\rho_0 = 2e\left(\int_{\mathbb{R}^d}\mathcal V(x)dx\right)^{-1}$. Also by definition +$u_1 = K_e\mathcal V \geqslant u_0$ and $\rho_1 = 2e\left( \int \mathcal V(1- K_e\mathcal{V})dx \right)^{-1}$. + As noted in the discussion between\-~(\ref{con4}) and\-~(\ref{con4B}), +\begin{equation} +2\int_{\mathbb{R}^d} u_1dx = \frac{1}{e}\int_{\mathbb{R}^d}\mathcal{V}(1-u_1)dx \leq \ \frac{1}{e}\int_{\mathbb{R}^d}\mathcal{V}dx. +\end{equation} +Since $t\mapsto t^{-1}$ is monotone decreasing on $(0,\infty)$, this shows that $\rho_1 > \rho_0$, and that\-~(\ref{simple17}) holds for $n=1$. +\bigskip + + +\indent Now suppose that $u_{n} \geqslant u_{n-1} \geqslant 0$, $\rho_{n} \geqslant \rho_{n-1} \geqslant 0$, and $\int_{\mathbb{R}^d} u_{n}{\rm d}x < \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal V(1-u_{n})$, all of which we have just verified for $n=1$. Then +\begin{equation} + u_{n+1} = K_e\mathcal V + 2e \rho_n K_e u_{n}*u_{n}(x) \geqslant K_e\mathcal V + 2e\rho_{n-1} K_e u_{n-1}*u_{n-1}(x) = u_n(x)\ , +\end{equation} +and then +\begin{equation} +\int_{\mathbb{R}^d} \mathcal V(1-u_{n+1}){\rm d}x < \int_{\mathbb{R}^d}\mathcal V(1-u_{n}){\rm d}x \ . +\end{equation} +Integrating both sides of $u_{n+1} = G_e \mathcal {V}(1- u_{n+1}) + 2e \rho_n G_e u_{n}*u_{n}$ yields, +\begin{equation}\label{simple15} +2\int_{\mathbb{R}^d} u_{n+1}{\rm d}x = \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal V(1-u_{n+1}) + \rho_n \left( \int_{\mathbb{R}^d}u_{n}{\rm d}x \right)^2 +\end{equation} +Then since $\int_{\mathbb{R}^d} u_{n}{\rm d}x < \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal V(1-u_{n}) = \frac{1}{\rho_n}$, (\ref{simple15}) implies +\begin{equation} + 2\int_{\mathbb{R}^d} u_n{\rm d}x \leq \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(1-u_n) + \int_{\mathbb{R}^d}u_{n-1}{\rm d}x\ . +\end{equation} +Then because $\int_{\mathbb{R}^d} u_{n}{\rm d}x < \int_{\mathbb{R}^d} u_{n+1} {\rm d}x $, we have that $\int_{\mathbb{R}^d} u_{n+1}{\rm d}x < \frac{1}{2e}\int_{v}\mathcal{V}(1-u_{n+1}) $. +This proves\-~(\ref{simple17}) for $n+1$, and shows that +\begin{equation} + 0 \leqslant \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(1-u_{n+1})dx \leqslant \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(1-u_n)dx \ , +\end{equation} +and then, as before, $\rho_{n+1}\geqslant \rho_n$. +\qed +\bigskip + +\theo{Lemma}\label{lem2} Let $\mathcal{V} \in L^1(\mathbb{R}^d)\cap L^p(\mathbb{R}^d)$, $p>\max\{\frac d2,1\}$. Then for all $n$ and $x$, $u_n(x)$ is continuous, vanishing at infinity, and $0 \leqslant u_n(x) \leqslant 1$. +\endtheo +\bigskip + +{\bf Proof:} First consider $n=1$. Since $u_n = K_e\mathcal{V}$ with $\mathcal{V}\in L^p(\mathbb{R}^d)$, $u_1\in W^{2,p}(\mathbb{R}^d)$ and +\begin{equation} +\Delta u_1(x) = \mathcal{V}(x)(u_1(x) - 1) + 4e u_1(x)\ . +\end{equation} +Since $K_e$ maps $L^p(\mathbb R^d)$ into $W^{2,p}(\mathbb R^d)$, $u_1$ is continuous and vanishes at infinity. Let $A := \{x\ :\ u_1(x) > 1\}$. Then $A$ is open. If $A$ is non-empty, then $u_1$ is subharmonic on $A$, and hence takes on its maximum on the boundary of $A$. Since $u_1$ would equal $1$ on the boundary, this is impossible, and $A$ is empty. This proves the assertion for $n=1$. +\bigskip + +\indent Now make the inductive hypothesis that $0 \leqslant u_n(x) \leq 1$ for all $x$. Then $\|u_n\|_p^p \leq \|u_n\|_1 \leq\frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}dx$. By Young's inequality, $\|u_n\ast u_n\|_p \leq \|u_n\|_p\|u_1\|_1$, and hence +$\mathcal{V} + 2e\rho_n u_n\ast u_n \in L^p(\mathbb{R}^d)$. Therefore, +$u_{n+1}= K_e(\mathcal{V} + 2e\rho_n u_n\ast u_n) \in W^{2,p}(\mathbb{R}^d)$. It follows as before that $u_{n+1}$ is continuous and vanishing at infinity, and in particular, bounded, and +\begin{eqnarray*} +\Delta u_{n+1}(x) &=& \mathcal{V}(x)(u_n(x) - 1) + 4e u_n(x) - 2e\rho_n u_n\ast u_n\\ +&\geqslant& \mathcal{V}(x)(u_n(x) - 1) + 4e u_n(x) -2e\rho_n\|u_n\|_1 \|u_n\|_\infty\\ +& \geqslant& + \mathcal{V}(x)(u_n(x) - 1) + 4e u_n(x) -2e + \end{eqnarray*} + where we have used $\rho_n\|u_n\|_1 \leqslant 1$, which is valid on account of\-~(\ref{simple17}). Define $A := \{x:\ u_{n+1}(x) > 1\}$. Then $u_{n+1}$ is subharmonic on $A$, and maximal on the boundary of $A$, where $u_n(x)$ would equal + $1$. This contradiction shows that $\|u_{n+1}\|_\infty \leqslant 1$. +\qed +\bigskip + +\theo{Lemma}\label{lem3} Let $\mathcal{V} \in L^1(\mathbb{R}^d)\cap L^p(\mathbb{R}^d)$, $p>\max\{\frac d2,1\}$. +Now let +\begin{equation} + u(x): = \lim_{n\to\infty}u_n(x) \quad{\rm and}\quad \rho(e) = \lim_{n\to\infty}\rho_n(e)\ . +\end{equation} +Then both limits exist, $u\in W^{2,p}(\mathbb{R}^d)$ and $u$ satisfies\-~(\ref{simpleq}), (\ref{energy}) and\-~(\ref{con1}). +\endtheo +\bigskip + +{\bf Proof:} +By Lemma~\ref{lem1}, both limits exist, and by\-~(\ref{simple17}), $\rho(e) \leqslant \left(\int_{\mathbb{R}^d} K_e\mathcal{V}dx\right)^{-1}$. +Also by Lemma~\ref{lem1}, $\int_{\mathbb{R}^d} \leqslant \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(x)dx$, +$u$ is integrable and $\lim_{n\to\infty}\|u_n - u\|_1 = 0$. Moreover, by Lemma~\ref{lem2}, $0 \leq u \leq 1$, and then $\|u\|_p^p \leq \|u\|_1$ and $\|u_n- u\|_p^p \leq (p+1)\|u_n-u\|_1$, and then by Young's Inequality +\begin{equation} + \|u\ast u - u_n\ast u_n\|_p \leq \|u_n\|_1\|u_n -u\|_p + \leq \|u\|_1\|u_n -u\|_p\ . +\end{equation} +Therefore, $\lim_{n\to\infty}(\mathcal{V} +2e\rho_n(e) u_n\ast u_n) = (\mathcal{V} +2e\rho(e) u\ast u)$ +with convergence in $L^p(\mathbb{R}^d)$. Then $\lim_{n\to\infty}K_e (\mathcal{V} +2e\rho_n(e) u_n\ast u_n) = K_e(\mathcal{V} +2e\rho(e) u\ast u)$ with convergence in $W^{2,p}(\mathbb{R}^d)$, and in particular, in +$L^p(\mathbb{R}^d)$. It now follows that $u = K_e(\mathcal{V} +2e\rho(e) u\ast u) $, and by the Dominated Convergence Theorem, the constraint $\rho = \frac{1}{2e}\int_{\mathbb{R}^d}\mathcal{V}(1-u)dx$ is satisfied. +By remarks made above, this means that $u$ satisfies\-~(\ref{simpleq}) and\-~(\ref{energy}). \qed +\bigskip + +\theo{Lemma}\label{lem3} + For all $e\in (0,\infty)$, the solution $u$ of the system\-~(\ref{simpleq}) and\-~(\ref{energy}) that we have constructed by iteration on Lemma~\ref{lem3} is the unique non-negative integrable solution for $\rho = \rho(e)$. + Moreover, there does not exist such any such solution when $\rho \neq \rho(e)$. +\endtheo +\bigskip + +{\bf Proof:} + Consider any non-negative solution integrable $\tilde u$, with + \begin{equation} + \tilde\rho=\frac{2e}{\int(1-\tilde u(x))\mathcal V(x)\ dx} + . + \end{equation} + We first show that $\tilde u\geqslant u_n$ by induction. + We have + \begin{equation} + \tilde u(x)-u_n(x)=2eK_e(\tilde\rho\tilde u\ast\tilde u(x)-\rho_{n-1}u_{n-1}\ast u_{n-1}(x)) + \end{equation} + Since $u_{n-1} =0$, the positivity of $\tilde u$ implies the positivity of $\tilde u(x) - u_1(x)$. + If $\tilde u\geqslant u_{n-1}$, then, by\-~(\ref{rhon}), $\tilde\rho\geqslant\rho_{n-1}$, from which $\tilde u\geqslant u_n$ follows easily. + This proves that both $\tilde\rho\geqslant\rho$ and $\tilde u\geqslant u$. However, integrating both sides of the latter inequality yields + \begin{equation} + \frac{1}{\tilde \rho(e)} = \int\tilde u(x)\ dx \geqslant\int u(x)\ dx=\frac1{\rho(e)}\ . + \end{equation} + Since $\tilde\rho\geqslant\rho$, equality must hold, and then since $\tilde u\geqslant u$, it must be that + so $u=\tilde u$. +\qed +\bigskip + +\theo{Lemma}\label{lem4} + The function $\rho(e)$ is continuous on $(0,\infty)$, with + \begin{equation} + \lim_{e\to 0}\rho(e) = 0 + ,\quad + \lim_{e\to\infty}\rho(e) = \infty. + \end{equation} + In particular, for each $\rho\in (0,\infty)$, there is at least one $e\in (0,\infty)$ such that $\rho = \rho(e)$. +\endtheo +\bigskip + +{\bf Proof:} + We now turn to the continuity of $e\to \rho(e)$. + For $n\in \mathbb{N}$, define functions $a_n(e)$ and $b_n(e)$ by + \begin{equation} + a_n:=\int u_n(x,e)\ dx \quad{\rm and}\quad b_n(e) = \frac1{2e}\int (1-u_n(x,e))\mathcal V(x)\ dx\ . + \end{equation} + where we have temporarily made the dependence of $u_n$ on $e$ explicit. + Note that $b_n(e) = 1/\rho_n(e)$. + $u_1(x,e) = K_e\mathcal{V}$ is continuous in $e$ (and monotone decreasing) for each $x$. A simple induction shows that $u_n(x,e)$ is continuous in $e$ for each $x$. + Then since $(1-u_n(x,e))\mathcal V(x) \leqslant \mathcal{V}(x)$, the Dominated Convergence Theorem yields the continuity of $\rho_n(e)$ for each $n$. + Writing our iteration in the equivalent form (as in\-~(\ref{simpleq3})): + \begin{equation}\label{simpleq3B} +u_n(x,e) = Y_{4e}*(\mathcal V (1- u_n(x,e)) +2e \frac{1}{b_{n-1}(e)} Y_{4e}\ast u_{n-1}\ast u_{n-1}(x,e) \ , +\end{equation} +and integrating, we obtain + \begin{equation}\label{simpleq3C} +2a_n(x) = b_n(e) + \frac{1}{b_{n-1}(e)} a_{n-1}^2(e) \ , +\end{equation} +Now an easy induction shows that $a_n(e)$ is continuous for each $n$. By\-~(\ref{simple17}), for each $n$, + \begin{equation} + a_n(e)\leqslant\frac{1}{\rho(e)}\leqslant b_n(e) \ . + \end{equation} + By Lemma\-~\ref{lem1}, as $n$ increases to infinity, $a_n(e)$ increases to $1/\rho(e)$, while $b_n(e) $ decreases to $1/\rho(e)$. It remains to show that this convergence is uniform on any compact interval in $(0,\infty)$. + By\-~(\ref{simpleq3C}), + \begin{equation}\label{telescope} + \frac{1}{b_n(e)}(a_n(e) - b_n(e))^2 = \frac{a_n^2(e)}{b_n(e)} -( 2a_n(e) - b_n(e)) = \frac{a_n^2(e)}{b_n(e)} - \frac{a_{n-1}^2(e)}{b_{n-1}(e)} \ . + \end{equation} + Sum both sides over $n\in \mathbb{N}$. The sum on the right telescopes, and since for all $e$, $a_0^2/b_0 = 0$ while $\lim_{n\to\infty}a_n^2(e)/b_n(e) = 1/\rho_n(e)$, + \begin{equation} + \sum_{n=1}^\infty \frac{1}{b_n(e)}(a_n(e) - b_n(e))^2 = \frac{1}{\rho(e)} \ . + \end{equation} + By the bounds on $b_(e) = 1/\rho_n(e)$ and $\rho(e)$ provided by Lemma~\ref{lem1}, for all $e>0$, + \begin{equation} + \sum_{n=1}^\infty (a_n(e) - b_n(e))^2 \leqslant\frac{ \int \mathcal{V}dx}{\int K_e\mathcal{V}dx}\ , + \end{equation} + and on any compact interval $[e_1,e_2]$, the right hand side is uniformly bounded by $C$, its value at $e_2$. Then since the summand on the left is monotone decreasing in $n$, we obtain for each $n$ that + \begin{equation}\label{rate} + (a_n(e) - b_n(e))^2 \leqslant \frac{C}{n} + \end{equation} uniformly on $[e_1,e_2]$. This proves the desired uniform convergence, and hence the continuity of $\rho(e)$. The final statement now follows from + (\ref{con4B}). \qed +\bigskip + +{\bf Remark}: Note that $\|u - u_n\|_1 = \frac{1}{\rho} - a_n$, and hence by By\-~(\ref{rate}), $\|u - u_n\|_1 \leq Cn^{-1/2}$. +In fact, numerically, we find that the rate is significantly faster than this. For example, with $\mathcal V(x)=e^{-|x|}$ and $e=10^{-4}$, $\|u - u_n\|_1$ decays at least as fast as $n^{-3.5}$. +\bigskip + +{\bf Proof of Theorem\-~\ref{theorem:existence}} Every statement in the theorem has been established in Lemma~\ref{lem1} through Lemma~\ref{lem4}. \qed + +\bigskip + +We close this section by remarking that if $\mathcal{V}$ is radially symmetric, then so is each $u_1 = K_e\mathcal{V}$, and then by a simple induction, so is each $u_n$, hence also $u$, the unique solution $u$ provided by Theorem\-~\ref{theorem:existence}. +This justifies the first remark following Theorem\-~\ref{theorem:existence}. + +\section{Asymptotics}\label{sec:asymptotics} +\indent In this section, we prove Theorem\-~\ref{theorem:asymptotics}. +We will first prove the high density asymptote\-~(\ref{largerho}), and then proceed to the low density\-~(\ref{3d}). +\bigskip + +\indent +By Theorem\-~\ref{theorem:existence}, for each $\rho>0$ there exists at least one $e$ such that $\rho(e)=\rho$. +If there is more than one, the theorems proved in this section apply to every such solution. +Throughout this section, let $u_\rho$ denote the solution provided by Theorem\-~\ref{theorem:existence} and any such choice of $e$. +\bigskip + +\subsection{High density $\rho$} + +\theo{Lemma}[high density asymptotics]\label{lemma:large} + If $\mathcal V$ is integrable, then as $\rho\to\infty$, + \begin{equation} + e=\frac\rho2\left(\int \mathcal V(x)\ dx\right)(1+o(1)) + . + \end{equation} +\endtheo +\bigskip + +{\bf Remark}: From\-~(\ref{energy}), +\begin{equation} + e\leqslant\frac\rho2\int\mathcal V(x)\ dx + . +\end{equation} +Note that this is not an optimal bound, as follows from\-~(\ref{con4}). +\bigskip + +{\bf Proof}: + By\-~(\ref{energy}), it suffices to prove that + \begin{equation} + \lim_{\rho\to\infty}\int u_\rho(x)\mathcal V(x)\ dx + =0 + . + \label{limintuv} + \end{equation} + Let + \begin{equation} + \chi_\gamma:=\{x:\ \mathcal V(x)\geqslant \gamma\} + \end{equation} + and decompose + \begin{equation} + \int u_\rho(x)\mathcal V(x)\ dx + = + \int_{\chi_\gamma} u_\rho(x)\mathcal V(x)\ dx + + + \int_{\mathbb R^d\setminus\chi_\gamma} u_\rho(x)\mathcal V(x)\ dx + \end{equation} + which, by\-~(\ref{con2}), is bounded as follows + \begin{equation} + \int u_\rho(x)\mathcal V(x)\ dx + \leqslant + \int_{\chi_\gamma}\mathcal V(x)\ dx + + + \frac \gamma\rho + . + \end{equation} + Since $\mathcal V$ is integrable, $\int_{\chi_\gamma}\mathcal V(x)\ dx\to0$ as $\gamma\to\infty$. + Therefore, + \begin{equation} + \mathop{\mathrm{inf}}_{\gamma>0} + \left( + \int_{\chi_\gamma}\mathcal V(x)\ dx + + + \frac \gamma\rho + \right) + \mathop{\longrightarrow}_{\rho\to\infty}0 + . + \end{equation} +\qed + +\subsection{Low density $\rho$}\label{subsec:lowrho} In this section, we only consider the dimension $d=3$. As before, we suppose that $\mathcal{V}\in L^1(\mathbb{R}^3)\cap L^p(\mathbb{R}^3)$, $p> 3/2$, and $\mathcal{V} \geqslant 0$. + +\indent We first recall the definition of the {\it scattering length} of the potential $\mathcal{V}$, and relate it to the solution of the system\-~(\ref{simpleq})-(\ref{energy}) The {\it scattering equation} is defined as +\begin{equation} + -\Delta\varphi(x)=(1-\varphi(x))\mathcal V(x) + ,\quad + \lim_{|x|\to\infty}\varphi(x)=0\ . + \label{scattering} +\end{equation} +Note that\-~(\ref{scattering}) can be written as $(-\Delta + \mathcal V)\varphi = \mathcal{V}$, and hence the solution is +\begin{equation}\label{scattering2} + \varphi(x) = \lim_{e\downarrow 0} K_e \mathcal{V}(x) = \lim_{e\downarrow 0}u_1(x,e)\ , + \end{equation} + where $u_1$ is the first term of the iteration introduced in the previous section. It follows from Lemma~\ref{lem2} that $0 \leq \varphi(x) \leq1$ for all $x$. + +\indent We now impose a mild localization hypothesis on $\mathcal{V}$: For +$R>0$ define $\mathcal{V}_R(x) = \mathcal{V}(x)$ for $|x| > R$ and otherwise $\mathcal{V}_R(x) =0$. We require that for some $q>1$ and all sufficiently large $R$, +\begin{equation}\label{local} +\|\mathcal{V}_R\|_1 < R^{-q} \quad{\rm and}\quad \|\mathcal{V}_R \|_p < R^{-q} \ . +\end{equation} +By the lemma below, $\lim_{x|\to\infty}|x|\varphi(x)$ exists. The {\em scattering length} $a$ is + defined to be (in dimension $d=3$). + \begin{equation}\label{sl} + a= \lim_{|x|\to \infty} |x| \phi(x). + \end{equation} +For more information on the scattering length, see\-~\cite[appendix A]{LY01}. + + + +\theo{Lemma}\label{sctlem} Let $\mathcal{V}\in L^1(\mathbb{R}^3)\cap L^p(\mathbb{R}^3)$, $p> 3/2$, and suppose that +the localization condition\-~(\ref{local}) is satisfied. Let $\varphi$ be the corresponding scattering solution given by\-~(\ref{scattering2}). Then the scattering length $a := \lim_{|x|\to\infty}\varphi(x)$ exists and satisfies +\begin{equation}\label{ephi} +4\pi a = \int \mathcal{V}(x)(1-\varphi(x))dx\ . +\end{equation}. +\endtheo + +{\bf Proof:} By the resolvent identity, +$ \varphi(x) = G\ast (\mathcal{V}(1- \varphi))(x)$ +where $G(x) = \frac{1}{4\pi|x|}$. Since $p> 3/2$. $p' < 3$, and it is easy to decompose $G$ into the sum of two pieces, +$G = G_1+G_2$ where $G_1 \in L^{p'}(\mathbb{R}^d)$ and $G_2 \in L^{4}(\mathbb{R}^d)$. +Then for all $R$ sufficiently large, +\begin{equation} + 0 \leq G\ast (\mathcal{V_R}(1- \varphi))(x) \leq (\|G_1\|_{p'} + \|G_2\|_4) R^{-q}\ . +\end{equation} +For $0 < r < 1$, then for $|y| < r|x|$, +${\displaystyle \frac{1}{1+r} \leqslant \frac{|x|}{|x-y|} \leqslant \frac{1}{1-r}}$. +It follows that for all sufficiently large $|x|$, +\begin{equation} +\frac{1}{1+r}\int_{|y|< r|x|}\mathcal{V}(y)(1-\varphi(y)) dy+ o(1) \leqslant 4\pi|x|\varphi(x) \leqslant + \frac{1}{1-r}\int_{|y|< r|x|}\mathcal{V}(y)(1-\varphi(y) dx + o(1)\ . +\end{equation} +Taking $|x|\to \infty$, and then $r \to 0$ proves\-~(\ref{local}).\qed +\bigskip + +{\bf Remark}: The following lemma is valid if the scattering length $a$ were {\em defined} by (\ref{ephi}). +For this reason, we do not impose the additional  condition (\ref{local}) in the statement of Theorem\-~\ref{theorem:asymptotics}: Lemma\-~\ref{sctlem} reconciles the stated definition with the formula (\ref{ephi}). +\bigskip + +\theo{Lemma}[low density asymptotics]\label{lemma:small} + If $\mathcal V$ is non-negative and integrable and $d=3$, then + \begin{equation} + e=2\pi\rho a\left(1+\frac{128}{15\sqrt\pi}\sqrt{\rho a^3}+o(\sqrt\rho)\right) + . + \label{3dlemma} + \end{equation} +\endtheo +\bigskip + +{\bf Proof}: + The scheme of the proof is as follows. + We first approximate the solution $u$ by $w$, which is defined as the decaying solution of + \begin{equation} + -\Delta w_\rho(x)=(1-u_\rho(x))\mathcal V(x) + . + \label{u1} + \end{equation} + The energy of $w_\rho$ is defined to be + \begin{equation} + e_w:=\frac\rho2\int(1-w_\rho(x))\mathcal V(x)\ dx + \label{ew} + \end{equation} + and, as we will show, it is {\it close} to $e$, more precisely, + \begin{equation} + e-e_w=\frac{16\sqrt 2 e^{\frac32}}{15\pi^2}\int\mathcal V(x)\ dx+o(\rho^{\frac32}) + . + \label{eew} + \end{equation} + In addition, (\ref{u1}) is quite similar to the scattering equation\-~(\ref{scattering}). + In fact we will show that $e_w$ is {\it close} to the energy $2\pi\rho a$ of the scattering equation + \begin{equation} + e_w-2\pi\rho a + = + -\frac{16\sqrt 2e^{\frac32}}{15\pi^2}\int \varphi(x) \mathcal V(x)\ dx+o(\rho^{\frac32}) + . + \label{ewephi} + \end{equation} + Summing\-~(\ref{eew}) and\-~(\ref{ewephi}), we find + \begin{equation} + e=2\pi\rho a\left(1+\frac{32\sqrt 2 e^{\frac32}}{15\pi^2\rho}+o(\sqrt\rho)\right) + , + \end{equation} + from which\-~(\ref{3dlemma}) follows. + We are thus left with proving\-~(\ref{eew}) and\-~(\ref{ewephi}). + \bigskip + + \point{\bf Proof of\-~(\ref{eew})}. + By\-~(\ref{energy}) and\-~(\ref{ew}), + \begin{equation} + e-e_w=\frac\rho2\int(w_\rho(x)-u_\rho(x))\mathcal V(x)\ dx + . + \end{equation} + We will work in Fourier space + \begin{equation} + \hat u_\rho(k):=\int e^{ikx}u_\rho(x)\ dx + \label{fourieru} + \end{equation} + which satisfies, by\-~(\ref{simpleq}), + \begin{equation} + (k^2+4e)\hat u_\rho(k) + =\frac{2e}\rho S(k) + +2e\rho \hat u^2(k) + \end{equation} + with + \begin{equation} + S(k):=\frac\rho{2e}\int e^{ikx}(1-u_\rho(x))\mathcal V(x)\ dx + . + \label{S} + \end{equation} + Therefore, + \begin{equation} + \hat u_\rho(k)=\frac1\rho\left(\frac{k^2}{4e}+1-\sqrt{\left(\frac{k^2}{4e}+1\right)^2-S(k)}\right) + . + \label{hatu} + \end{equation} + Similarly, the Fourier transform of $w_\rho$ is + \begin{equation} + \hat w_\rho(k):=\int e^{ikx}w_\rho(x)\ dx=\frac{2e S(k)}{\rho k^2} + . + \label{u1hat} + \end{equation} + Note that, as $|k|\to\infty$, $\hat u\sim \frac{2eS(k)}{\rho k^2}$, so, while $\hat u_\rho$ is not integrable, $\hat u_\rho-\hat w_\rho$ is. + We invert the Fourier transform: + \begin{equation} + u_\rho(x)-w_\rho(x)=\frac1{8\pi^3\rho}\int e^{-ikx} + \left(\frac{k^2}{4e}+1-\sqrt{\left(\frac{k^2}{4e}+1\right)^2-S(k)}-\frac{2eS(k)}{k^2}\right)\ dk + . + \end{equation} + We change variables to $\tilde k:=\frac k{2\sqrt e}$: + \begin{equation} + u_\rho(x)-w_\rho(x) + = + \frac{e^{\frac32}}{\rho\pi^3}\int e^{-i2\sqrt e\tilde kx} + \left(\tilde k^2+1-\sqrt{(\tilde k^2+1)^2-S(2\tilde k\sqrt e)}-\frac{S(2\tilde k\sqrt e)}{2\tilde k^2}\right)\ d\tilde k + . + \end{equation} + Furthermore, + \begin{equation} + s\mapsto\left|\tilde k^2+1-\sqrt{(\tilde k^2+1)^2-s}-\frac{s}{2\tilde k^2}\right| + \end{equation} + is monotone increasing. + In addition, by~\-(\ref{S}) and~\-(\ref{simpleq}), and using the fact that $u_\rho(x)\leqslant 1$ (see Lemma\-~\ref{lem2}) and $\mathcal V(x)\geqslant 0$, + \begin{equation} + |S(k)|\leqslant\frac\rho{2e}\int|(1-u_\rho(x))\mathcal V(x)|\ dx=1 + . + \end{equation} + Therefore + \begin{equation} + \left| + \tilde k^2+1-\sqrt{(\tilde k^2+1)^2-S(2\tilde k\sqrt e)}-\frac{S(2\tilde k\sqrt e)}{2\tilde k^2} + \right| + \leqslant + \left| + \tilde k^2+1-\sqrt{(\tilde k^2+1)^2-1}-\frac{1}{2\tilde k^2} + \right| + . + \end{equation} + Therefore, + \begin{equation} + |u_\rho(x)-w_\rho(x)|\leqslant + \frac{e^{\frac32}}{\rho\pi^3}\int\left|\tilde k^2+1-\sqrt{(\tilde k^2+1)^2-1}-\frac{1}{2\tilde k^2}\right|\ d\tilde k + =\frac{32\sqrt 2 e^{\frac32}}{15\pi^2\rho} + . + \end{equation} + By dominated convergence, and using the fact that $S(0)=1$, + \begin{equation} + \begin{largearray} + \lim_{e\to 0}\frac1{e^{\frac32}}(e-e_w) + =-\lim_{e\to 0}\frac\rho{2e^{\frac32}}\int (u_\rho(x)-w_\rho(x))\mathcal V(x)\ dx + \\[0.5cm]\hfill + = + -\frac12\int\mathcal V(x)\left( + \frac1{\pi^3}\int\left(\tilde k^2+1-\sqrt{(\tilde k^2+1)^2-1}-\frac1{2\tilde k^2}\right)d \tilde k + \right)\ dx + =\frac{16\sqrt 2}{15\pi^2}\int\mathcal V(x)\ dx + . + \end{largearray} + \end{equation} + Using\-~(\ref{con4C}), this proves\-~(\ref{eew}). + Incidentally, again by dominated convergence, + \begin{equation} + u_\rho(x)-w_\rho(x)= + \frac{e^{\frac32}}{\rho\pi^3}\int\left(\tilde k^2+1-\sqrt{(\tilde k^2+1)^2-1}-\frac{1}{2\tilde k^2}\right)\ d\tilde k + =-\frac{32\sqrt 2 e^{\frac32}}{15\pi^2\rho}+\sqrt\rho f_\rho(x) + \label{uapproxw} + \end{equation} + with + \begin{equation} + 0\leqslant f_\rho(x)\leqslant\frac{32\sqrt2 e^{\frac32}}{15\pi^2\rho} + ,\quad + f_\rho(x)\mathop{\longrightarrow}_{\rho\to0}0 + \end{equation} + pointwise in $x$. + + \bigskip + + \point{\bf Proof of\-~(\ref{ewephi})}. + Let + \begin{equation} + \xi(r):=w_\rho(r)-\varphi(r). + \label{xi} + \end{equation} + By\-~(\ref{u1}), (\ref{scattering}) and\-~(\ref{simpleq}), + \begin{equation} + (-\Delta+\mathcal V(x))\xi(x)=-(u_\rho(x)-w_\rho(x))\mathcal V(x) + . + \end{equation} + Therefore, by\-~(\ref{ephi}), + \begin{equation} + e_w-2\pi\rho a=-\frac\rho2\int \xi(x)\mathcal V(x)\ dx + =-\frac\rho2\int\mathcal V(x)(-\Delta+\mathcal V)^{-1}((u-w)\mathcal V)(x)\ dx + \end{equation} + and + \begin{equation} + (-\Delta+\mathcal V)^{-1}\mathcal V(x)=\varphi(x) + \end{equation} + so + \begin{equation} + e_w-2\pi\rho a + =-\frac\rho2\int\varphi(x)(u_\rho(x)-w_\rho(x))\mathcal V(x)\ dx + . + \end{equation} + By\-~(\ref{uapproxw}), + \begin{equation} + e_w-2\pi\rho a + =\frac{16\sqrt 2e^{\frac32}}{15\pi^2}\int\varphi(x)\mathcal V(x)\ dx + -\frac{\rho^{\frac32}}2\int\varphi(x)f_\rho(x)\mathcal V(x)\ dx + . + \end{equation} + Since $x\mapsto f_\rho(x)$ is bounded, we can use dominated convergence to show\-~(\ref{ewephi}). +\qed + +\section{Decay of $u$}\label{sec:decay} +\indent In this section, we prove Theorem\-~\ref{theorem:decay}. +Our proof assumes that $\mathcal V$ decays exponentially, because we will use analyticity properties of the Fourier transform of the potential $\mathcal V$. +In particular, the theorem holds if $\mathcal V$ has compact support. +We expect the result to hold for any potential that decays faster than $|x|^{-4}$. +Algebraic decay for $u$ seems natural: by\-~(\ref{simpleq}), $u\ast u$ must decay at infinity in the same way as $u$. +This is the case if $u$ decays algebraically, but would not be so if, say, it decayed exponentially. +\bigskip + +\indent\underline{Proof of Theorem\-~\ref{theorem:decay}}: + We recall that the Fourier transform of $u$ (\ref{fourieru}) satisfies\-~(\ref{hatu}): + \begin{equation} + \hat u(|k|)=\frac1\rho\left(\frac{k^2}{4e}+1-\sqrt{\left(\frac{k^2}{4e}+1\right)^2-S(|k|)}\right) + \end{equation} + where $S$ was defined in\-~(\ref{S}): + \begin{equation} + S(|k|):=\frac\rho{2e}\int e^{ikx}(1-u(|x|))\mathcal V(|x|)\ dx + . + \end{equation} + We split + \begin{equation} + \hat u(|k|)=\widehat{\mathcal U}_1(|k|)+\widehat{\mathcal U}_2(|k|) + \label{hatusplit} + \end{equation} + with + \begin{equation} + \widehat{\mathcal U}_1(|k|):=\frac{2eS(|k|)}{\rho(1+k^2)} + \end{equation} + so that, taking the large $|k|$ limit in\-~(\ref{hatu}), + \begin{equation} + \widehat{\mathcal U}_2(|k|)=O(|k|^{-4}S^2(|k|)) + \end{equation} + so $\widehat{\mathcal U}_2$ is integrable. + \bigskip + + \point{\bf Decay of $\mathcal U_1$}. We first show that + \begin{equation} + \mathcal U_1(|x|):=\frac1{(2\pi)^3}\int e^{-ikx}\widehat{\mathcal U}_1(|k|)\ dk + \end{equation} + decays exponentially in $|x|$. We have + \begin{equation} + \mathcal U_1(|x|)=(-\Delta+1)^{-1}(1-u(|x|))\mathcal V(|x|) + =Y_1\ast((1-u)\mathcal V)(|x|) + \end{equation} + with + \begin{equation} + Y_1(|x|):=\frac{e^{-|x|}}{4\pi|x|} + . + \end{equation} + Therefore, by\-~(\ref{expdecay}), + \begin{equation} + \mathcal U_1(|x|) + \leqslant + \frac A{4\pi}\int_{|y|>R} \frac{e^{-|x-y|-B|y|}}{|x-y|}\ dy + + + \frac 1{4\pi}\int_{|y|0$ which only depends on $A$ and $B$ such that + \begin{equation} + |\partial^nS(\kappa)|\leqslant n!C^n + . + \label{decaydS} + \end{equation} + As a consequence, $S$ is analytic in a strip around the real line of height $\frac B2$. + In particular, if we define the strip + \begin{equation} + H_\tau:=\{z:\ |\mathcal Im(z)|\leqslant r^{-\tau},\ \mathcal Re(z)>0\} + \end{equation} + with $0<\tau<1$, and take + \begin{equation} + r>\left(\frac B2\right)^{-\frac1\tau} + \end{equation} + then $S$ is analytic in $H_\tau$. + \bigskip + + \bigskip + + \subsubpoint We now prove\-~(\ref{decaydS}). + We first treat the case $|\kappa|\leqslant\frac B2$. We have + \begin{equation} + \mathrm{sinc}(\xi)=\sum_{p=0}^\infty\frac{(-1)^p\xi^{2p}}{(2p+1)!} + \end{equation} + so + \begin{equation} + \partial^n\mathrm{sinc}(\xi)=\sum_{p=\lceil\frac n2\rceil}^\infty\frac{(-1)^p\xi^{2p-n}}{(2p+1)(2p-n)!} + . + \end{equation} + Therefore + \begin{equation} + |\partial^n\mathrm{sinc}(\xi)|\leqslant + \sum_{p=\lceil\frac n2\rceil}^\infty\frac{|\xi|^{2p-n}}{(2p-n)!} + \leqslant \cosh(|\xi|) + . + \end{equation} + Thus, + \begin{equation} + |\partial^n S(\kappa)|\leqslant 4\pi\int_0^\infty \cosh(|\kappa|r)r^{n+2}\mathcal V(r)(1-u(r))\ dr + \end{equation} + so, by\-~(\ref{expdecay}), + \begin{equation} + |\partial^n S(\kappa)|\leqslant + 4A\pi\int_R^\infty \cosh(|\kappa|r)r^{n+2}e^{-Br}\ dr + + + 4\pi\int_0^R \cosh(|\kappa|r)r^{n+2}\mathcal V(r)\ dr + \end{equation} + and + \begin{equation} + |\partial^n S(\kappa)|\leqslant + 8A\pi\int_0^\infty r^{n+2}e^{-(B-|\kappa|)r}\ dr + + + 8\pi e^{|\kappa|R}R^{n}\int r^2\mathcal V(r)\ dr + \end{equation} + which, if $|\kappa|\leqslant \frac B2$, implies that + \begin{equation} + 8A\pi\int_0^\infty r^{n+2}e^{-(B-|\kappa|)r}\ dr + \leqslant + 8A\pi\int_0^\infty r^{n+2}e^{-\frac B2r}\ dr + = + \frac{2^{n+6}A\pi}{B^{n+3}}(n+2)! + \end{equation} + and + \begin{equation} + 8\pi e^{|\kappa|R}R^{n+2}\int\mathcal V(r)\ dr + \leqslant + 8\pi e^{\frac B2R}R^{n}\int r^2\mathcal V(r)\ dr + \end{equation} + which implies\-~(\ref{decaydS}) in this case. + \bigskip + + \subsubpoint We now turn to $|\kappa|\geqslant \frac B2$: + \begin{equation} + \partial^n\mathrm{sinc}(\xi)=\sum_{p=0}^n{n\choose p}\partial^p\sin(\xi)\frac{(n-p)!(-1)^{n-p}}{\xi^{n-p+1}} + \end{equation} + so + \begin{equation} + |\partial^n\mathrm{sinc}(\xi)|\leqslant 2e^{\mathcal Im(\xi)}\sum_{p=0}^n\frac{n!}{p!}|\xi|^{-(n-p+1)} + . + \end{equation} + Therefore, + \begin{equation} + |\partial^nS(\kappa)|\leqslant + 8\pi \sum_{p=0}^n\frac{n!}{p!|\kappa|^{n-p+1}} + \int_0^\infty e^{\mathcal Im(\kappa)r}r^{p+1}\mathcal V(r)(1-u(r))\ dr + \end{equation} + so, by\-~(\ref{expdecay}), + \begin{equation} + |\partial^nS(\kappa)|\leqslant + \sigma_1+\sigma_2 + \end{equation} + with + \begin{equation} + \sigma_1:=8A\pi\sum_{p=0}^n\frac{n!}{p!|\kappa|^{n-p+1}} + \int_R^\infty r^{p+1}e^{-(B-\mathcal Im(\kappa))r}\ dr + \end{equation} + and + \begin{equation} + \sigma_2:=8\pi\sum_{p=0}^n\frac{n!}{p!|\kappa|^{n-p+1}} + \int_0^R r^{p+1}e^{\mathcal Im(\kappa)r}\mathcal V(r)\ dr + . + \end{equation} + Furthermore, + \begin{equation} + \sigma_1 + = + 8A\pi n! + \sum_{p=0}^n\frac{p+1}{(B-\mathcal Im(\kappa))^{p+2}|\kappa|^{n-p+1}} + \end{equation} + so, as long as $|\kappa|\geqslant \frac12B$ and $\mathcal Im(\kappa)\leqslant\frac12B$, + \begin{equation} + \sigma_1 + \leqslant + \frac{2^{n+6}A\pi}{B^{n+3}}n!\sum_{p=0}^n(p+1) + = + \frac{2^{n+5}A\pi}{B^{n+3}}(n+2)! + . + \end{equation} + In addition, + \begin{equation} + \sigma_2 + \leqslant + 8\pi\sum_{p=0}^n\frac{n!}{p!|\kappa|^{n-p+1}}R^{p-1}e^{\mathcal Im(\kappa)R}\int_0^R r^2\mathcal V(r)\ dr + \end{equation} + so + \begin{equation} + \sigma_2 + \leqslant + 8\pi\sum_{p=0}^n\frac{n!2^{n-p+1}}{p!B^{n-p+1}}R^{p-1}e^{\mathcal Im(\kappa)R}\int_0^R r^2\mathcal V(r)\ dr + \leqslant + \frac{2^{n+4}\pi}{RB^{n+1}} n!e^{RB}\int_0^R r^2\mathcal V(r)\ dr + \end{equation} + which implies\-~(\ref{decaydS}) in this case. + \bigskip + + \subpoint We have thus proved that $S$ is analytic in $H_\tau$, which implies that the singularities of $\widehat{\mathcal U}_2$ in $H_\tau$ all come from the branch points of $\sqrt F$. + For $\kappa\in\mathbb R$, + \begin{equation} + |S(\kappa)|\leqslant 1 + \end{equation} + so, for $\kappa\in\mathbb R$, + \begin{equation} + F(\kappa)\geqslant \frac{\kappa^2}{2e} + . + \end{equation} + Therefore, since $F$ is analytic in a finite strip around the real axis, $F$ cannot have any roots in the vicinity of the real axis, except at $0$, so the only branch point of $\sqrt F$ near the real axis is $0$. + Thus, $\widehat{\mathcal U}_2$ is analytic in $H_\tau$. + \bigskip + + \point{\bf Decay of $\mathcal U_2$}. We deform the integral to the path + \begin{equation} + \{i\eta y,\ 00\} + \end{equation} + and find + \begin{equation} + \int_0^\infty e^{i\eta\kappa|x|}\kappa\widehat{\mathcal U}_2(\kappa)\ d\kappa + = + I_1+I_2 + \label{I12} + \end{equation} + with + \begin{equation} + I_1:= + -\int_0^{|x|^{-\tau}}e^{-y|x|}y\widehat{\mathcal U}_2(i\eta y)\ dy + \end{equation} + and + \begin{equation} + I_2:= + e^{-|x|^{1-\tau}} + \int_0^\infty e^{i\eta y|x|}(i\eta|x|^{-\tau}+y)\widehat{\mathcal U}_2(i\eta|x|^{-\tau}+y)\ dy + . + \end{equation} + \bigskip + + \subpoint We first estimate $I_1$. + We expand $S$: + \begin{equation} + S(\kappa)=1-\beta \kappa^2+O(|\kappa|^4) + \end{equation} + with $\beta>0$ (since $S$ is analytic and symmetric, and $|S(|k|)|\leqslant 1$). + Therefore, $y\mapsto\widehat{\mathcal U}_2(iy)$ is $\mathcal C^2$ for $y\neq0$, and + \begin{equation} + \widehat{\mathcal U}_2(i\eta y) + = + \frac1\rho-\frac{i\eta y}\rho\sqrt{\frac1{2e}+\beta} + +O(y^2) + . + \end{equation} + Furthermore, + \begin{equation} + -\int_0^{|x|^{-\tau}}e^{-y|x|}y\ dy + = + -\frac1{|x|^2}+\frac{1+|x|^{1-\tau}}{|x|^2}e^{-|x|^{1-\tau}} + \end{equation} + \begin{equation} + -\int_0^{|x|^{-\tau}}e^{-y|x|}y^2\ dy + = + -\frac2{|x|^3}+\frac{1+|x|^{1-\tau}(2+x^{1-\tau})}{|x|^3}e^{-|x|^{1-\tau}} + \end{equation} + and + \begin{equation} + -\int_0^{|x|^{-\tau}}e^{-y|x|}y^3\ dy + = + O(|x|^{-4}) + \end{equation} + \begin{equation} + I_1= + -\frac1{\rho|x|^2} + +\frac{2i\eta}{\rho|x|^3}\sqrt{\frac1{2e}+\beta} + +O(|x|^{-4}) + \end{equation} + so + \begin{equation} + \frac1{4i\pi^2|x|}\sum_{\eta=\pm}\eta I_1=\frac1{\pi^2\rho|x|^4}\sqrt{\frac1{2e}+\beta} + +O(|x|^{-5}) + . + \label{ineqI1} + \end{equation} + \bigskip + + \subpoint We now bound $I_2$. + Recall that, for $\kappa\in\mathbb R$, $|S(\kappa)|\leqslant 1$. + Recalling\-~(\ref{decaydS}), + \begin{equation} + |S(\kappa+i\eta|x|^{-\tau})| + \leqslant + \sum_{n=0}^\infty\frac1{n!}|\partial^nS(\kappa)|^n|x|^{-n\tau} + \leqslant + \frac1{1-C|x|^{-\tau}} + \leqslant 2 + \end{equation} + provided $|x|^\tau>2C$. + Therefore, for large $\kappa$, + \begin{equation} + |\widehat{\mathcal U}_2(\kappa+i\eta)|=O(\kappa^{-4}) + \end{equation} + so + \begin{equation} + I_2\leqslant C'e^{-|x|^{1-\tau}} + \label{ineqI2} + \end{equation} + for some constant $C'>0$. + \bigskip + + \subpoint Inserting\-~(\ref{ineqI1}) and\-~(\ref{ineqI2}) into\-~(\ref{I12}) and\-~(\ref{U2}), we find that + \begin{equation} + \mathcal U_2(|x|)=\frac1{\pi^2\rho|x|^4}\sqrt{\frac1{2e}+\beta}+O(|x|^{-5}) + \end{equation} + which, using\-~(\ref{U1}), concludes the proof of the lemma. + \bigskip +\qed + + +\section{Comparison with the Bose gas}\label{sec:bosegas} +\subsection{Sketch of the derivation of the simple equation} +\indent The simple equation\-~(\ref{simpleq})-(\ref{energy}) was originally derived\-~\cite{Li63} to approximate the ground state energy $E_0$ of a repulsive Bose gas, which is a system of $N$ quantum particles interacting via the repulsive potential $\mathcal V$. +The ground state energy of this system is the lowest eigenvalue of the Hamiltonian operator +\begin{equation} + H_N:=-\frac12\sum_{i=1}^N\Delta_i+\sum_{1\leqslant i $(patsubst %.pdf, %.tikz.tex, $@) + pdflatex -jobname $(basename $@) -file-line-error $(patsubst %.pdf, %.tikz.tex, $@) + +erho.dat: + julia ./simpleq/main.jl -p "tolerance=1e-14;order=100" energy_rho > $@ +ddrhoe.dat: + julia ./simpleq/main.jl -p "tolerance=1e-14;order=100" convexity > $@ + +install: $(PDFS) + cp $^ $(INSTALLDIR)/ + +clean-aux: + rm -f $(addsuffix .tikz.tex, $(PROJECTNAME)) + rm -f $(addsuffix .aux, $(PROJECTNAME)) + rm -f $(addsuffix .log, $(PROJECTNAME)) + +clean-dat: + rm -f $(DATS) + +clean-tex: + rm -f $(PDFS) + +clean: clean-aux clean-tex diff --git a/figs/numerical.fig/bosegas.gnuplot b/figs/numerical.fig/bosegas.gnuplot new file mode 100644 index 0000000..bfcffac --- /dev/null +++ b/figs/numerical.fig/bosegas.gnuplot @@ -0,0 +1,34 @@ +set ylabel "$\\displaystyle\\frac{e}{4\\pi\\rho}$" norotate offset -1,0 +set xlabel "$\\rho$" + +set xtics 1e-6, 100, 100 +set xtics add ("$10^{-6}$" 0.000001, "$10^{-4}$" 0.0001, "$10^{-2}$" 0.01, "$1$" 1.0, "$10^2$" 100) +unset mxtics + +set ytics 0.6, 0.1 +set mytics 2 + +set xrange [0.000001:100] +set yrange [0.6:1.05] + +# default output canvas size: 12.5cm x 8.75cm +set term lua tikz size 8,6 standalone + +set key off + + +# set linestyle +set style line 1 linetype rgbcolor "#4169E1" linewidth 3 +set style line 2 linetype rgbcolor "#DC143C" linewidth 3 +set style line 3 linetype rgbcolor "#32CD32" linewidth 3 +set style line 4 linetype rgbcolor "#4B0082" linewidth 3 +set style line 5 linetype rgbcolor "#DAA520" linewidth 3 + +set pointsize 1 + +set logscale x + +plot "erho.dat" using 1:(0.95*$2/$1/(4*pi)):(1.05*$2/$1/(4*pi)) with filledcurves linetype rgbcolor "#DDDDDD", \ + "erho.dat" using 1:($2/$1/(4*pi)) with lines linestyle 1, \ + "holzmann_2019-09-28.dat" using 1:($2/$1/(4*pi)) with points linestyle 2 + diff --git a/figs/numerical.fig/convexity.gnuplot b/figs/numerical.fig/convexity.gnuplot new file mode 100644 index 0000000..f6f606b --- /dev/null +++ b/figs/numerical.fig/convexity.gnuplot @@ -0,0 +1,30 @@ +set ylabel "$\\frac1{4\\pi}\\partial_\\rho^2(e\\rho)$" offset -4,0 norotate +set xlabel "$\\rho$" + +set xtics 1e-6, 100, 100 +set xtics add ("$10^{-6}$" 0.000001, "$10^{-4}$" 0.0001, "$10^{-2}$" 0.01, "$1$" 1.0, "$10^2$" 100) +unset mxtics +set xrange [0.000001:100] + +set ytics 1.2, 0.2 +set mytics 2 +set yrange [1.2:2.1] + +# default output canvas size: 12.5cm x 8.75cm +set term lua tikz size 8,6 standalone + +# no key +set key off + +# set linestyle +set style line 1 linetype rgbcolor "#4169E1" linewidth 3 +set style line 2 linetype rgbcolor "#DC143C" linewidth 3 +set style line 3 linetype rgbcolor "#000000" linewidth 1 +set style line 4 linetype rgbcolor "#4B0082" linewidth 3 +set style line 5 linetype rgbcolor "#DAA520" linewidth 3 + +set pointsize 0.6 + +set logscale x + +plot "ddrhoe.dat" using 1:($2/(4*pi)) with lines linestyle 1 diff --git a/figs/numerical.fig/holzmann_2019-09-28.dat b/figs/numerical.fig/holzmann_2019-09-28.dat new file mode 100644 index 0000000..fe9c0e5 --- /dev/null +++ b/figs/numerical.fig/holzmann_2019-09-28.dat @@ -0,0 +1,9 @@ +## data from M. Holzmann, 2019-09-22 +# rho E0 E0+dE0 +1e-4 8.3500e-4 8.3600e-4 +1e-3 9.1340e-3 9.1350e-3 +1e-2 1.0609e-1 1.0610e-1 +1e-1 1.1930e+0 1.1940e+0 +1e-0 1.2445e+1 1.2446e+1 +1e+1 1.2544e+2 1.2545e+2 + diff --git a/figs/numerical.fig/simpleq/integration.jl b/figs/numerical.fig/simpleq/integration.jl new file mode 100644 index 0000000..0ad456a --- /dev/null +++ b/figs/numerical.fig/simpleq/integration.jl @@ -0,0 +1,28 @@ +# approximate \int_a^b f using Gauss-Legendre quadratures +function integrate_legendre(f,a,b,weights) + out=0 + for i in 1:length(weights[1]) + out+=(b-a)/2*weights[2][i]*f((b-a)/2*weights[1][i]+(b+a)/2) + end + return out +end +# \int f*g where g is sampled at the Legendre nodes +function integrate_legendre_sampled(f,g,a,b,weights) + out=0 + for i in 1:length(weights[1]) + out+=(b-a)/2*weights[2][i]*f((b-a)/2*weights[1][i]+(b+a)/2)*g[i] + end + return out +end + + + +# approximate \int_a^b f/sqrt((b-x)(x-a)) using Gauss-Chebyshev quadratures +function integrate_chebyshev(f,a,b,N) + out=0 + for i in 1:N + out=out+pi/N*f((b-a)/2*cos((2*i-1)/(2*N)*pi)+(b+a)/2) + end + return out +end + diff --git a/figs/numerical.fig/simpleq/iteration.jl b/figs/numerical.fig/simpleq/iteration.jl new file mode 100644 index 0000000..f6f044a --- /dev/null +++ b/figs/numerical.fig/simpleq/iteration.jl @@ -0,0 +1,55 @@ +# \hat u_n +function hatun_iteration(e,order,d,v,maxiter) + # gauss legendre weights + weights=gausslegendre(order) + + # init V and Eta + (V,V0,Eta,Eta0)=init_veta(weights,d,v) + + # init u and rho + u=Array{Array{Complex{Float64}}}(undef,maxiter+1) + u[1]=zeros(Complex{Float64},order) + rho=zeros(Complex{Float64},maxiter+1) + + # iterate + for n in 1:maxiter + u[n+1]=A(e,weights,Eta)\b(u[n],e,rho[n],V) + rho[n+1]=rhon(u[n+1],e,weights,V0,Eta0) + end + + return (u,rho) +end + +# A +function A(e,weights,Eta) + N=length(weights[1]) + out=zeros(Complex{Float64},N,N) + for i in 1:N + k=(1-weights[1][i])/(1+weights[1][i]) + out[i,i]=k^2+4*e + for j in 1:N + y=(weights[1][j]+1)/2 + out[i,j]+=weights[2][j]*(1-y)*Eta[i][j]/(2*(2*pi)^3*y^3) + end + end + return out +end + +# b +function b(u,e,rho,V) + out=zeros(Complex{Float64},length(V)) + for i in 1:length(V) + out[i]=V[i]+2*e*rho*u[i]^2 + end + return out +end + +# rho_n +function rhon(u,e,weights,V0,Eta0) + S=V0 + for i in 1:length(weights[1]) + y=(weights[1][i]+1)/2 + S+=-weights[2][i]*(1-y)*u[i]*Eta0[i]/(2*(2*pi)^3*y^3) + end + return 2*e/S +end diff --git a/figs/numerical.fig/simpleq/main.jl b/figs/numerical.fig/simpleq/main.jl new file mode 100644 index 0000000..ece0703 --- /dev/null +++ b/figs/numerical.fig/simpleq/main.jl @@ -0,0 +1,192 @@ +using FastGaussQuadrature +using Printf +using LinearAlgebra +include("tools.jl") +include("integration.jl") +include("simpleq.jl") +include("simpleq-newton.jl") +include("iteration.jl") + + +function main() + ## defaults + + tolerance=1e-14 + order=100 + maxiter=21 + + rho=1e-6 + e=1e-4 + + d=3 + v=v_exp3d + a0=a0_exp3d + + # plot range when plotting in x + xmin=0 + xmax=100 + nx=100 + + # read cli arguments + (params,command)=read_args(ARGS) + + # read params + if params!="" + for param in split(params,";") + terms=split(param,"=") + if length(terms)!=2 + print(stderr,"error: could not read parameter '",param,"'.\n") + exit(-1) + end + lhs=terms[1] + rhs=terms[2] + if lhs=="rho" + rho=parse(Float64,rhs) + elseif lhs=="e" + e=parse(Float64,rhs) + elseif lhs=="tolerance" + tolerance=parse(Float64,rhs) + elseif lhs=="order" + order=parse(Int64,rhs) + elseif lhs=="maxiter" + maxiter=parse(Int64,rhs) + elseif lhs=="xmin" + xmin=parse(Float64,rhs) + elseif lhs=="xmax" + xmax=parse(Float64,rhs) + elseif lhs=="nx" + nx=parse(Int64,rhs) + else + print(stderr,"unrecognized parameter '",lhs,"'.\n") + exit(-1) + end + end + end + + ## run command + # e(rho) + if command=="energy_rho" + energy_rho(order,a0,d,v,maxiter,tolerance) + # d^2(rho*e(rho)) + elseif command=="convexity" + ddrhoe(order,a0,d,v,maxiter,tolerance) + # u_n(x) + elseif command=="iteration" + iteration_ux(order,e,a0,d,v,maxiter) + else + print(stderr,"unrecognized command '",command,"'.\n") + exit(-1) + end + +end + +# read cli arguments +function read_args(ARGS) + # flag + flag="" + + # output strings + params="" + command="" + + # loop over arguments + for arg in ARGS + # argument that starts with a dash + if arg[1]=='-' + # go through characters after dash + for char in arg[2:length(arg)] + + # set params + if char=='p' + # raise flag + flag="params" + else + print_usage() + exit(-1) + end + end + # arguments that do not start with a dash + else + if flag=="params" + params=arg + else + command=arg + end + # reset flag + flag="" + end + end + + if command=="" + print_usage() + exit(-1) + end + + return (params,command) +end + +# usage +function print_usage() + print(stderr,"usage: simpleq [-p params] \n") +end + +# exponential potential in 3 dimensions +function v_exp3d(k) + return 8*pi/(1+k^2)^2 +end +a0_exp3d=1.254356410591064819505409291110046864031181245635821944528 + +# compute energy as a function of rho +function energy_rho(order,a0,d,v,maxiter,tolerance) + minlrho=-6 + maxlrho=2 + nlrho=100 + + for j in 0:nlrho-1 + rho=10^(minlrho+(maxlrho-minlrho)*j/nlrho) + # linear spacing + #rho=10.0^minlrho+(10.0^maxlrho-10.0^minlrho)*j/nlrho + + (u,E)=hatu_newton(order,rho,a0,d,v,maxiter,tolerance) + + @printf("% .8e % .8e\n",rho,real(E)) + + end +end + +# compute \partial^2(e\rho) as a function of rho +function ddrhoe(order,a0,d,v,maxiter,tolerance) + minlrho=-6 + maxlrho=2 + nlrho=100 + + for j in 0:nlrho-1 + rho=10^(minlrho+(maxlrho-minlrho)*j/nlrho) + + # interval + drho=rho*1.01 + + (u,E)=hatu_newton(order,rho,a0,d,v,maxiter,tolerance) + (up,Ep)=hatu_newton(order,rho+drho,a0,d,v,maxiter,tolerance) + (um,Em)=hatu_newton(order,rho-drho,a0,d,v,maxiter,tolerance) + + @printf("% .8e % .8e\n",rho,real((rho+drho)*Ep+(rho-drho)*Em-2*rho*E)/drho^2) + + end +end + +# compute \int u_n(x) at every step +function iteration_ux(order,e,a0,d,v,maxiter) + (u,rho)=hatun_iteration(e,order,d,v,maxiter) + + weights=gausslegendre(order) + + intun=0. + for n in 2:maxiter+1 + # compute \hat u_n(0)=1/(2*rho_n)+rho_{n-1}/2*\hat u_{n-1}(0)^2 + intun=real(1/(2*rho[n])+rho[n-1]/2*intun^2) + @printf("%2d % .15e\n",n-1,abs(intun-1/rho[maxiter+1])) + end +end + +main() diff --git a/figs/numerical.fig/simpleq/simpleq-newton.jl b/figs/numerical.fig/simpleq/simpleq-newton.jl new file mode 100644 index 0000000..2c70162 --- /dev/null +++ b/figs/numerical.fig/simpleq/simpleq-newton.jl @@ -0,0 +1,95 @@ +# \hat u(k) computed using Newton algorithm +function hatu_newton(order,rho,a0,d,v,maxiter,tolerance) + + # compute gaussian quadrature weights + weights=gausslegendre(order) + + # initialize V and Eta + (V,V0,Eta,Eta0)=init_veta(weights,d,v) + + # initialize u, V and Eta + u=zeros(Complex{Float64},order) + for j in 1:order + # transformed k + k=(1-weights[1][j])/(1+weights[1][j]) + if d==2 + u[j]=2*pi*a0*rho/k + elseif d==3 + u[j]=4*pi*a0*rho/k^2 + end + end + + # iterate + for i in 1:maxiter-1 + new=u-inv(dXi(u,V,V0,Eta,Eta0,weights,rho,d))*Xi(u,V,V0,Eta,Eta0,weights,rho,d) + + if(norm(new-u)/norm(u)(1-y)/y^3,Eta[i].*u,0,1,weights) + # X_i + X=k^2/(2*E*rho) + + # U_i + out[i]=u[i]-S/(2*E*(X+1))*Phi(S/(E*(X+1)^2)) + end + + return out +end + +# derivative of Xi (for Newton) +function dXi(u,V,V0,Eta,Eta0,weights,rho,d) + order=length(weights[1]) + + # init + out=zeros(Complex{Float64},order,order) + + # compute E before the loop + E=en(u,V0,Eta0,rho,weights,d) + + for i in 1:order + # k_i + k=(1-weights[1][i])/(1+weights[1][i]) + # S_i + S=V[i]-1/(rho*(2*pi)^d)*integrate_legendre_sampled(y->(1-y)/y^3,Eta[i].*u,0,1,weights) + # X_i + X=k^2/(2*E*rho) + + for j in 1:order + y=(weights[1][j]+1)/2 + dS=-1/rho*(1-y)*Eta[i][j]/(2*(2*pi)^d*y^3)*weights[2][j] + dE=-1/rho*(1-y)*Eta0[j]/(2*(2*pi)^d*y^3)*weights[2][j] + dX=-k^2/(2*E^2*rho)*dE + out[i,j]=(i==j ? 1 : 0)-(dS-S*dE/E-S*dX/(X+1))/(2*E*(X+1))*Phi(S/(E*(X+1)^2))-S/(2*E^2*(X+1)^3)*(dS-S*dE/E-2*S*dX/(X+1))*dPhi(S/(E*(X+1)^2)) + end + end + + return out +end + +# energy +function en(u,V0,Eta0,rho,weights,d) + return V0-1/(rho*(2*pi)^d)*integrate_legendre_sampled(y->(1-y)/y^3,Eta0.*u,0,1,weights) +end + diff --git a/figs/numerical.fig/simpleq/simpleq.jl b/figs/numerical.fig/simpleq/simpleq.jl new file mode 100644 index 0000000..88209b0 --- /dev/null +++ b/figs/numerical.fig/simpleq/simpleq.jl @@ -0,0 +1,40 @@ +# \eta +function eta(x,t,weights,d,v) + if d==2 + return integrate_chebyshev(y->4*((x+t)*y+abs(x-t)*(1-y))*v((x+t)*y+abs(x-t)*(1-y))/sqrt(((x+t)*y+abs(x-t)*(2-y))*((x+t)*(1+y)+abs(x-t)*(1-y))),0,1,length(weights)) + elseif d==3 + return (x>t ? 2*t/x : 2)* integrate_legendre(y->2*pi*((x+t)*y+abs(x-t)*(1-y))*v((x+t)*y+abs(x-t)*(1-y)),0,1,weights) + end +end + +# initialize V and Eta +function init_veta(weights,d,v) + order=length(weights[1]) + V=Array{Complex{Float64}}(undef,order) + Eta=Array{Array{Complex{Float64}}}(undef,order) + Eta0=Array{Complex{Float64}}(undef,order) + V0=v(0) + for i in 1:order + k=(1-weights[1][i])/(1+weights[1][i]) + V[i]=v(k) + Eta[i]=Array{Complex{Float64}}(undef,order) + for j in 1:order + y=(weights[1][j]+1)/2 + Eta[i][j]=eta(k,(1-y)/y,weights,d,v) + end + y=(weights[1][i]+1)/2 + Eta0[i]=eta(0,(1-y)/y,weights,d,v) + end + return(V,V0,Eta,Eta0) +end + +# inverse Fourier transform +function u_x(x,u,weights,d) + order=length(weights[1]) + if d==2 + out=integrate_legendre_sampled(y->(1-y)/y^3*besselj(0,x*(1-y)/y)/(2*pi),u,0,1,weights) + elseif d==3 + out=integrate_legendre_sampled(y->(1-y)/y^3*sin(x*(1-y)/y)/x/(2*pi^2),u,0,1,weights) + end + return out +end diff --git a/figs/numerical.fig/simpleq/tools.jl b/figs/numerical.fig/simpleq/tools.jl new file mode 100644 index 0000000..1635a14 --- /dev/null +++ b/figs/numerical.fig/simpleq/tools.jl @@ -0,0 +1,20 @@ +# \Phi(x)=2*(1-sqrt(1-x))/x +function Phi(x) + if abs(x)>1e-5 + return 2*(1-sqrt(1-x))/x + else + return 1+x/4+x^2/8+5*x^3/64+7*x^4/128+21*x^5/512 + end +end +# \partial\Phi +function dPhi(x) + #if abs(x-1)<1e-5 + # @printf(stderr,"warning: dPhi is singular at 1, and evaluating it at (% .8e+i% .8e)\n",real(x),imag(x)) + #end + if abs(x)>1e-5 + return 1/(sqrt(1-x)*x)-2*(1-sqrt(1-x))/x^2 + else + return 1/4+x/4+15*x^2/64+7*x^3/32+105*x^4/512+99*x^5/512 + end +end + diff --git a/libs/ian.cls b/libs/ian.cls new file mode 100644 index 0000000..aec99ad --- /dev/null +++ b/libs/ian.cls @@ -0,0 +1,673 @@ +%% +%% Ian's class file +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% class name +\ProvidesClass{ian}[2017/09/29] + +%% boolean to signal that this class is being used +\newif\ifianclass + +%% options +% no section numbering in equations +\DeclareOption{section_in_eq}{\sectionsineqtrue} +\DeclareOption{section_in_fig}{\sectionsinfigtrue} +\DeclareOption{section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{section_in_all}{\sectionsineqtrue\sectionsinfigtrue\PassOptionsToPackage{section_in_theo}{iantheo}} +\DeclareOption{subsection_in_eq}{\subsectionsineqtrue} +\DeclareOption{subsection_in_fig}{\subsectionsinfigtrue} +\DeclareOption{subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{subsection_in_all}{\subsectionsineqtrue\subsectionsinfigtrue\PassOptionsToPackage{subsection_in_theo}{iantheo}} +\DeclareOption{no_section_in_eq}{\sectionsineqfalse} +\DeclareOption{no_section_in_fig}{\sectionsinfigfalse} +\DeclareOption{no_section_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{no_section_in_all}{\sectionsineqfalse\sectionsinfigfalse\PassOptionsToPackage{no_section_in_theo}{iantheo}} +\DeclareOption{no_subsection_in_eq}{\subsectionsineqfalse} +\DeclareOption{no_subsection_in_fig}{\subsectionsinfigfalse} +\DeclareOption{no_subsection_in_theo}{\PassOptionsToPackage{\CurrentOption}{iantheo}} +\DeclareOption{no_subsection_in_all}{\subsectionsineqfalse\subsectionsinfigfalse\PassOptionsToPackage{no_subsection_in_theo}{iantheo}} +% reset point +\DeclareOption{point_reset_at_section}{\PassOptionsToPackage{reset_at_section}{point}} +\DeclareOption{point_no_reset_at_section}{\PassOptionsToPackage{no_reset_at_section}{point}} +\DeclareOption{point_reset_at_theo}{\PassOptionsToPackage{reset_at_theo}{point}} +\DeclareOption{point_no_reset_at_theo}{\PassOptionsToPackage{no_reset_at_theo}{point}} + +\def\ian@defaultoptions{ + \ExecuteOptions{section_in_all, no_subsection_in_all} + \ProcessOptions + + %% required packages + \RequirePackage{iantheo} + \RequirePackage{point} + \RequirePackage{color} + \RequirePackage{marginnote} + \RequirePackage{amssymb} + \PassOptionsToPackage{hidelinks}{hyperref} + \RequirePackage{hyperref} +} + +%% paper dimensions +\setlength\paperheight{297mm} +\setlength\paperwidth{210mm} + +%% fonts +\input{size11.clo} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} + +%% text dimensions +\hoffset=-50pt +\voffset=-72pt +\textwidth=460pt +\textheight=704pt + + +%% remove default indentation +\parindent=0pt +%% indent command +\def\indent{\hskip20pt} + +%% something is wrong with \thepage, redefine it +\gdef\thepage{\the\c@page} + +%% array lines (to use the array environment) +\setlength\arraycolsep{5\p@} +\setlength\arrayrulewidth{.4\p@} + + +%% correct vertical alignment at the end of a document +\AtEndDocument{ + \vfill + \eject +} + + +%% hyperlinks +% hyperlinkcounter +\newcounter{lncount} +% hyperref anchor +\def\hrefanchor{% +\stepcounter{lncount}% +\hypertarget{ln.\thelncount}{}% +} + +%% define a command and write it to aux file +\def\outdef#1#2{% + % define command% + \expandafter\xdef\csname #1\endcsname{#2}% + % hyperlink number% + \expandafter\xdef\csname #1@hl\endcsname{\thelncount}% + % write command to aux% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}% + \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}% +} + +%% can call commands even when they are not defined +\def\safe#1{% + \ifdefined#1% + #1% + \else% + {\color{red}\bf?}% + \fi% +} + +%% define a label for the latest tag +%% label defines a command containing the string stored in \tag +\def\deflabel{ + \def\label##1{\expandafter\outdef{label@##1}{\safe\tag}} + + \def\ref##1{% + % check whether the label is defined (hyperlink runs into errors if this check is omitted) + \ifcsname label@##1@hl\endcsname% + \hyperlink{ln.\csname label@##1@hl\endcsname}{{\color{blue}\safe\csname label@##1\endcsname}}% + \else% + \ifcsname label@##1\endcsname% + {\color{blue}\csname ##1\endcsname}% + \else% + {\bf ??}% + \fi% + \fi% + } +} + + +%% make a custom link at any given location in the document +\def\makelink#1#2{% + \hrefanchor% + \outdef{label@#1}{#2}% +} + + +%% section command +% counter +\newcounter{sectioncount} +% space before section +\newlength\secskip +\setlength\secskip{40pt} +% a prefix to put before the section number, e.g. A for appendices +\def\sectionprefix{} +% define some lengths +\newlength\secnumwidth +\newlength\sectitlewidth +\def\section#1{ + % reset counters + \stepcounter{sectioncount} + \setcounter{subsectioncount}{0} + \ifsectionsineq + \setcounter{seqcount}0 + \fi + \ifsectionsinfig + \setcounter{figcount}0 + \fi + + % space before section (if not first) + \ifnum\thesectioncount>1 + \vskip\secskip + \penalty-1000 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount} + + % get widths + \def\@secnum{{\bf\Large\sectionprefix\thesectioncount.\hskip10pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\Large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@sec.\thesectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsection{#1}{\thepage}} + \fi + + %space + \par\penalty10000 + \bigskip\penalty10000 +} + +%% subsection +% counter +\newcounter{subsectioncount} +% space before subsection +\newlength\subsecskip +\setlength\subsecskip{30pt} +\def\subsection#1{ + % counters + \stepcounter{subsectioncount} + \setcounter{subsubsectioncount}{0} + \ifsubsectionsineq + \setcounter{seqcount}0 + \fi + \ifsubsectionsinfig + \setcounter{figcount}0 + \fi + + % space before subsection (if not first) + \ifnum\thesubsectioncount>1 + \vskip\subsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount} + + % get widths + \def\@secnum{{\bf\large\hskip.5cm\sectionprefix\thesectioncount.\thesubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsec.\thesectioncount.\thesubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% subsubsection +% counter +\newcounter{subsubsectioncount} +% space before subsubsection +\newlength\subsubsecskip +\setlength\subsubsecskip{20pt} +\def\subsubsection#1{ + % counters + \stepcounter{subsubsectioncount} + + % space before subsubsection (if not first) + \ifnum\thesubsubsectioncount>1 + \vskip\subsubsecskip + \penalty-500 + \fi + + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount} + + % get widths + \def\@secnum{{\bf\hskip1.cm\sectionprefix\thesectioncount.\thesubsectioncount.\thesubsubsectioncount.\hskip5pt}} + \settowidth\secnumwidth{\@secnum} + \setlength\sectitlewidth\textwidth + \addtolength\sectitlewidth{-\secnumwidth} + % print name + \parbox{\textwidth}{ + \@secnum + \parbox[t]{\sectitlewidth}{\large\bf #1}} + + % write to table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@subsubsec.\thesectioncount.\thesubsectioncount.\thesubsubsectioncount\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocsubsubsection{#1}{\thepage}} + \fi + + % space + \par\penalty10000 + \medskip\penalty10000 +} + +%% itemize +\newlength\itemizeskip +% left margin for items +\setlength\itemizeskip{20pt} +\newlength\itemizeseparator +% space between the item symbol and the text +\setlength\itemizeseparator{5pt} +% penalty preceding an itemize +\newcount\itemizepenalty +\itemizepenalty=0 +% counter counting the itemize level +\newcounter{itemizecount} + +% item symbol +\def\itemizept#1{ + \ifnum#1=1 + \textbullet + \else + $\scriptstyle\blacktriangleright$ + \fi +} + + +\newlength\current@itemizeskip +\setlength\current@itemizeskip{0pt} +\def\itemize{% + \par\expandafter\penalty\the\itemizepenalty\medskip\expandafter\penalty\the\itemizepenalty% + \addtocounter{itemizecount}{1}% + \addtolength\current@itemizeskip{\itemizeskip}% + \leftskip\current@itemizeskip% +} +\def\enditemize{% + \addtocounter{itemizecount}{-1}% + \addtolength\current@itemizeskip{-\itemizeskip}% + \par\expandafter\penalty\the\itemizepenalty\leftskip\current@itemizeskip% + \medskip\expandafter\penalty\the\itemizepenalty% +} + +% item, with optional argument to specify the item point +% @itemarg is set to true when there is an optional argument +\newif\if@itemarg +\def\item{% + % check whether there is an optional argument (if there is none, add on empty '[]') + \@ifnextchar [{\@itemargtrue\@itemx}{\@itemargfalse\@itemx[]}% +} +\newlength\itempt@total +\def\@itemx[#1]{ + \if@itemarg + \settowidth\itempt@total{#1} + \else + \settowidth\itempt@total{\itemizept\theitemizecount} + \fi + \addtolength\itempt@total{\itemizeseparator} + \par + \medskip + \if@itemarg + \hskip-\itempt@total#1\hskip\itemizeseparator + \else + \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator + \fi +} + +%% prevent page breaks after itemize +\newcount\previtemizepenalty +\def\nopagebreakafteritemize{ + \previtemizepenalty=\itemizepenalty + \itemizepenalty=10000 +} +%% back to previous value +\def\restorepagebreakafteritemize{ + \itemizepenalty=\previtemizepenalty +} + +%% enumerate +\newcounter{enumerate@count} +\def\enumerate{ + \setcounter{enumerate@count}0 + \let\olditem\item + \let\olditemizept\itemizept + \def\item{ + % counter + \stepcounter{enumerate@count} + % set header + \def\itemizept{\theenumerate@count.} + % hyperref anchor + \hrefanchor + % define tag (for \label) + \xdef\tag{\theenumerate@count} + \olditem + } + \itemize +} +\def\endenumerate{ + \enditemize + \let\item\olditem + \let\itemizept\olditemizept +} + + +%% equation numbering +% counter +\newcounter{seqcount} +% booleans (write section or subsection in equation number) +\newif\ifsectionsineq +\newif\ifsubsectionsineq +\def\seqcount{ + \stepcounter{seqcount} + % the output + \edef\seqformat{\theseqcount} + % add subsection number + \ifsubsectionsineq + \let\tmp\seqformat + \edef\seqformat{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionsineq + \let\tmp\seqformat + \edef\seqformat{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\seqformat} + % write number + \marginnote{\hfill(\seqformat)} +} +%% equation environment compatibility +\def\equation{\hrefanchor$$\seqcount} +\def\endequation{$$\@ignoretrue} + + +%% figures +% counter +\newcounter{figcount} +% booleans (write section or subsection in equation number) +\newif\ifsectionsinfig +\newif\ifsubsectionsinfig +% width of figures +\newlength\figwidth +\setlength\figwidth\textwidth +\addtolength\figwidth{-2.5cm} +% caption +\def\defcaption{ + \long\def\caption##1{ + \stepcounter{figcount} + + % hyperref anchor + \hrefanchor + + % the number of the figure + \edef\figformat{\thefigcount} + % add subsection number + \ifsubsectionsinfig + \let\tmp\figformat + \edef\figformat{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionsinfig + \let\tmp\figformat + \edef\figformat{\sectionprefix\thesectioncount.\tmp} + \fi + + % define tag (for \label) + \xdef\tag{\figformat} + + % write + \hfil fig \figformat: \parbox[t]{\figwidth}{\leavevmode\small##1} + + % space + \par\bigskip + } +} +%% short caption: centered +\def\captionshort#1{ + \stepcounter{figcount} + + % hyperref anchor + \hrefanchor + + % the number of the figure + \edef\figformat{\thefigcount} + % add section number + \ifsectionsinfig + \let\tmp\figformat + \edef\figformat{\sectionprefix\thesectioncount.\tmp} + \fi + + % define tag (for \label) + \xdef\tag{\figformat} + + % write + \hfil fig \figformat: {\small#1} + + %space + \par\bigskip +} + +%% environment +\def\figure{ + \par + \vfil\penalty100\vfilneg + \bigskip +} +\def\endfigure{ + \par + \bigskip +} + + +%% start appendices +\def\appendix{ + \vfill + \pagebreak + + % counter + \setcounter{sectioncount}0 + + % prefix + \def\sectionprefix{A} + + % write + {\bf \LARGE Appendices}\par\penalty10000\bigskip\penalty10000 + + % add a mention in the table of contents + \iftoc + \immediate\write\tocoutput{\noexpand\tocappendices}\penalty10000 + \fi + + %% uncomment for new page for each appendix + %\def\seqskip{\vfill\pagebreak} +} + + +%% bibliography +% size of header +\newlength\bibheader +\def\thebibliography#1{ + \hrefanchor + + % add a mention in the table of contents + \iftoc + % save lncount in aux variable which is written to toc + \immediate\write\tocoutput{\noexpand\expandafter\noexpand\edef\noexpand\csname toc@references\endcsname{\thelncount}} + \write\tocoutput{\noexpand\tocreferences{\thepage}}\penalty10000 + \fi + + % write + {\bf \LARGE References}\par\penalty10000\bigskip\penalty10000 + % width of header + \settowidth\bibheader{[#1]} + \leftskip\bibheader +} +% end environment +\def\endthebibliography{ + \par\leftskip0pt +} + +%% bibitem command +\def\bibitem[#1]#2{% + \hrefanchor% + \outdef{label@cite#2}{#1}% + \hskip-\bibheader% + \makebox[\bibheader]{\cite{#2}\hfill}% +} + +%% cite command (adapted from latex.ltx) +% @tempswa is set to true when there is an optional argument +\newif\@tempswa +\def\cite{% + % check whether there is an optional argument (if there is none, add on empty '[]') + \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}% +} +% command with optional argument +\def\@citex[#1]#2{\leavevmode% + % initialize loop + \let\@citea\@empty% + % format + \@cite{% + % loop over ',' separated list + \@for\@citeb:=#2\do{% + % text to add at each iteration of the loop (separator between citations) + \@citea\def\@citea{,\ }% + % add entry to citelist + \@writecitation{\@citeb}% + \ref{cite\@citeb}% + }% + }% + % add optional argument text (as an argument to '\@cite') + {#1}% +} +\def\@cite#1#2{% + [#1\if@tempswa , #2\fi]% +} +%% add entry to citelist after checking it has not already been added +\def\@writecitation#1{% + \ifcsname if#1cited\endcsname% + \else% + \expandafter\newif\csname if#1cited\endcsname% + \immediate\write\@auxout{\string\citation{#1}}% + \fi% +} + +%% table of contents +% boolean +\newif\iftoc +\def\tableofcontents{ + {\bf \large Table of contents:}\par\penalty10000\bigskip\penalty10000 + + % copy content from file + \IfFileExists{\jobname.toc}{\input{\jobname.toc}}{{\tt error: table of contents missing}} + + % open new toc + \newwrite\tocoutput + \immediate\openout\tocoutput=\jobname.toc + + \toctrue +} +%% close file +\AtEndDocument{ + % close toc + \iftoc + \immediate\closeout\tocoutput + \fi +} + + +%% fill line with dots +\def\leaderfill{\leaders\hbox to 1em {\hss. \hss}\hfill} + +%% same as sectionprefix +\def\tocsectionprefix{} + +%% toc formats +\newcounter{tocsectioncount} +\def\tocsection #1#2{ + \stepcounter{tocsectioncount} + \setcounter{tocsubsectioncount}{0} + \setcounter{tocsubsubsectioncount}{0} + % write + \smallskip\hyperlink{ln.\csname toc@sec.\thetocsectioncount\endcsname}{{\bf \tocsectionprefix\thetocsectioncount}.\hskip5pt {\color{blue}#1}\leaderfill#2}\par +} +\newcounter{tocsubsectioncount} +\def\tocsubsection #1#2{ + \stepcounter{tocsubsectioncount} + \setcounter{tocsubsubsectioncount}{0} + % write + {\hskip10pt\hyperlink{ln.\csname toc@subsec.\thetocsectioncount.\thetocsubsectioncount\endcsname}{{\bf \thetocsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par +} +\newcounter{tocsubsubsectioncount} +\def\tocsubsubsection #1#2{ + \stepcounter{tocsubsubsectioncount} + % write + {\hskip20pt\hyperlink{ln.\csname toc@subsubsec.\thetocsectioncount.\thetocsubsectioncount.\thetocsubsubsectioncount\endcsname}{{\bf \thetocsubsubsectioncount}.\hskip5pt {\color{blue}\small #1}\leaderfill#2}}\par +} +\def\tocappendices{ + \medskip + \setcounter{tocsectioncount}0 + {\bf Appendices}\par + \smallskip + \def\tocsectionprefix{A} +} +\def\tocreferences#1{ + \medskip + {\hyperlink{ln.\csname toc@references\endcsname}{{\color{blue}\bf References}\leaderfill#1}}\par + \smallskip +} + + +%% definitions that must be loaded at begin document +\let\ian@olddocument\document +\def\document{ + \ian@olddocument + + \deflabel + \defcaption +} + +%% end +\ian@defaultoptions +\endinput diff --git a/libs/iantheo.sty b/libs/iantheo.sty new file mode 100644 index 0000000..d33a93d --- /dev/null +++ b/libs/iantheo.sty @@ -0,0 +1,162 @@ +%% +%% iantheorem package: +%% Ian's customized theorem command +%% + +%% boolean to signal that this package was loaded +\newif\ifiantheo + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{iantheo}[2016/11/10] + +%% options +\newif\ifsectionintheo +\DeclareOption{section_in_theo}{\sectionintheotrue} +\DeclareOption{no_section_in_theo}{\sectionintheofalse} +\newif\ifsubsectionintheo +\DeclareOption{subsection_in_theo}{\subsectionintheotrue} +\DeclareOption{no_subsection_in_theo}{\subsectionintheofalse} + +\def\iantheo@defaultoptions{ + \ExecuteOptions{section_in_theo, no_subsection_in_theo} + \ProcessOptions + + %%% reset at every new section + \ifsectionintheo + \let\iantheo@oldsection\section + \gdef\section{\setcounter{theocount}{0}\iantheo@oldsection} + \fi + + %% reset at every new subsection + \ifsubsectionintheo + \let\iantheo@oldsubsection\subsection + \gdef\subsection{\setcounter{theocount}{0}\iantheo@oldsubsection} + \fi +} + + +%% delimiters +\def\delimtitle#1{ + \par% + \leavevmode% + \raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \ \lower.3em\hbox{#1}\ % + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% callable by ref +\def\delimtitleref#1{ + \par% +% + \ifdefined\ianclass% + % hyperref anchor% + \hrefanchor% + % define tag (for \label)% + \xdef\tag{#1}% + \fi% +% + \leavevmode% + \raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \ \lower.3em\hbox{\bf #1}\ % + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% no title +\def\delim{ + \par% + \leavevmode\raise.3em\hbox to\hsize{% + \lower0.3em\hbox{\vrule height0.3em}% + \hrulefill% + \lower0.3em\hbox{\vrule height0.3em}% + }% + \par\penalty10000% +} + +%% end delim +\def\enddelim{ + \par\penalty10000% + \leavevmode% + \raise.3em\hbox to\hsize{% + \vrule height0.3em\hrulefill\vrule height0.3em% + }% + \par% +} + + +%% theorem +% counter +\newcounter{theocount} +% booleans (write section or subsection in equation number) +\def\theo#1{ + \stepcounter{theocount} + \ifdefined\ianclass + % hyperref anchor + \hrefanchor + \fi + % the number + \def\formattheo{\thetheocount} + % add subsection number + \ifsubsectionintheo + \let\tmp\formattheo + \edef\formattheo{\thesubsectioncount.\tmp} + \fi + % add section number + \ifsectionintheo + \let\tmp\formattheo + \edef\formattheo{\sectionprefix\thesectioncount.\tmp} + \fi + % define tag (for \label) + \xdef\tag{\formattheo} + % write + \delimtitle{\bf #1 \formattheo} +} +\let\endtheo\enddelim +%% theorem headers with name +\def\theoname#1#2{ + \theo{#1}\hfil({\it #2})\par\penalty10000\medskip% +} + + +%% qed symbol +\def\qedsymbol{$\square$} +\def\qed{\penalty10000\hfill\penalty10000\qedsymbol} + + +%% compatibility with article class +\ifdefined\ianclasstrue + \relax +\else + \def\thesectioncount{\thesection} + \def\thesubsectioncount{\thesubsection} + \def\sectionprefix{} +\fi + + +%% prevent page breaks after displayed equations +\newcount\prevpostdisplaypenalty +\def\nopagebreakaftereq{ + \prevpostdisplaypenalty=\postdisplaypenalty + \postdisplaypenalty=10000 +} +%% back to previous value +\def\restorepagebreakaftereq{ + \postdisplaypenalty=\prevpostdisplaypenalty +} + + +%% end +\iantheo@defaultoptions +\endinput diff --git a/libs/largearray.sty b/libs/largearray.sty new file mode 100644 index 0000000..ad5753b --- /dev/null +++ b/libs/largearray.sty @@ -0,0 +1,19 @@ +%% +%% largearray package: +%% Array spanning the entire line +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{largearray}[2016/11/10] + +\RequirePackage{array} + +%% array spanning the entire line +\newlength\largearray@width +\setlength\largearray@width\textwidth +\addtolength\largearray@width{-10pt} +\def\largearray{\begin{array}{@{}>{\displaystyle}l@{}}\hphantom{\hspace{\largearray@width}}\\[-.5cm]} +\def\endlargearray{\end{array}} diff --git a/libs/point.sty b/libs/point.sty new file mode 100644 index 0000000..da06361 --- /dev/null +++ b/libs/point.sty @@ -0,0 +1,107 @@ +%% +%% Points package: +%% \point commands +%% + +%% TeX format +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +%% package name +\ProvidesPackage{point}[2017/06/13] + +%% options +\newif\ifresetatsection +\DeclareOption{reset_at_section}{\resetatsectiontrue} +\DeclareOption{no_reset_at_section}{\resetatsectionfalse} +\newif\ifresetatsubsection +\DeclareOption{reset_at_subsection}{\resetatsubsectiontrue} +\DeclareOption{no_reset_at_subsection}{\resetatsubsectionfalse} +\newif\ifresetattheo +\DeclareOption{reset_at_theo}{\resetattheotrue} +\DeclareOption{no_reset_at_theo}{\resetattheofalse} + +\def\point@defaultoptions{ + \ExecuteOptions{reset_at_section, reset_at_subsection, no_reset_at_theo} + \ProcessOptions + + %% reset at every new section + \ifresetatsection + \let\point@oldsection\section + \gdef\section{\resetpointcounter\point@oldsection} + \fi + %% reset at every new subsection + \ifresetatsubsection + \let\point@oldsubsection\subsection + \gdef\subsection{\resetpointcounter\point@oldsubsection} + \fi + + %% reset at every new theorem + \ifresetattheo + \ifdefined\iantheotrue + \let\point@oldtheo\theo + \gdef\theo{\resetpointcounter\point@oldtheo} + \fi + \fi +} + + +%% point +% counter +\newcounter{pointcount} +\def\point{ + \stepcounter{pointcount} + \setcounter{subpointcount}{0} + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\arabic{pointcount}} + \fi + % header + \indent{\bf \arabic{pointcount}\ - } +} + +%% subpoint +% counter +\newcounter{subpointcount} +\def\subpoint{ + \stepcounter{subpointcount} + \setcounter{subsubpointcount}0 + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\arabic{pointcount}-\arabic{subpointcount}} + \fi + % header + \indent\hskip.5cm{\bf \arabic{pointcount}-\arabic{subpointcount}\ - } +} + +%% subsubpoint +% counter +\newcounter{subsubpointcount} +\def\subsubpoint{ + \stepcounter{subsubpointcount} + % hyperref anchor (only if the class is 'ian') + \ifdefined\ifianclass + \hrefanchor + % define tag (for \label) + \xdef\tag{\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}} + \fi + \indent\hskip1cm{\bf +\arabic{pointcount}-\arabic{subpointcount}-\arabic{subsubpointcount}\ - } +} + + +%% reset point counters +\def\resetpointcounter{ + \setcounter{pointcount}{0} + \setcounter{subpointcount}{0} + \setcounter{subsubpointcount}{0} +} + + + +%% end +\point@defaultoptions +\endinput