diff --git a/changelog b/changelog index 406d22f..d94771e 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20091019 tpd src/axiom-website/patches.html 20091019.04.tpd.patch +20091019 tpd src/input/branchcut.input added +20091019 tpd src/input/Makefile add branchcut.input 20091019 tpd src/axiom-website/patches.html 20091019.03.tpd.patch 20091019 tpd books/bookvol10.3 fix TextFile regression test 20091019 tpd src/axiom-website/patches.html 20091019.02.tpd.patch diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 1d4df68..f524bbf 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2159,5 +2159,7 @@ src/axiom-website/developers.html add spad84.jpg, rewrite page
src/input/gstbl.input ignore gensym
20091019.03.tpd.patch books/bookvol10.3 fix TextFile regression test
+20091019.04.tpd.patch +src/input/branchcut.input added
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet index 5abd2ce..e4d7708 100644 --- a/src/input/Makefile.pamphlet +++ b/src/input/Makefile.pamphlet @@ -285,6 +285,7 @@ REGRES= algaggr.regress algbrbf.regress algfacob.regress alist.regress \ asec.regress bbtree.regress besselk.regress \ binary.regress bini.regress biquat.regress \ bop.regress bstree.regress bouquet.regress \ + branchcut.regress \ bug100.regress bug101.regress \ bug103.regress bug10069.regress \ bugs.regress bug10312.regress bug6357.regress bug9057.regress \ @@ -547,7 +548,8 @@ FILES= ${OUT}/algaggr.input ${OUT}/algbrbf.input ${OUT}/algfacob.input \ ${OUT}/bern.input \ ${OUT}/bernpoly.input ${OUT}/binary.input ${OUT}/bini.input \ ${OUT}/biquat.input ${OUT}/bop.input \ - ${OUT}/bouquet.input ${OUT}/bstree.input ${OUT}/bug6357.input \ + ${OUT}/bouquet.input ${OUT}/branchcut.input \ + ${OUT}/bstree.input ${OUT}/bug6357.input \ ${OUT}/bug9057.input ${OUT}/bug100.input ${OUT}/bug101.input \ ${OUT}/bug103.input \ ${OUT}/bug10069.input ${OUT}/bug10312.input \ @@ -767,6 +769,7 @@ DOCFILES= \ ${DOC}/bernpoly.input.dvi ${DOC}/binary.input.dvi \ ${DOC}/bini.input.dvi ${DOC}/biquat.input.dvi \ ${DOC}/bop.input.dvi ${DOC}/bouquet.input.dvi \ + ${DOC}/branchcut.input.dvi \ ${DOC}/bstree.input.dvi ${DOC}/bug10069.input.dvi \ ${DOC}/bug100.input.dvi ${DOC}/bug101.input.dvi \ ${DOC}/bug103.input.dvi \ diff --git a/src/input/branchcut.input.pamphlet b/src/input/branchcut.input.pamphlet new file mode 100644 index 0000000..10577bb --- /dev/null +++ b/src/input/branchcut.input.pamphlet @@ -0,0 +1,109 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/input branchcut.input} +\author{Daniel Zwillinger} +\maketitle +\begin{abstract} +This example is from the Handbook of Integration, p 58 +\end{abstract} +\eject +\tableofcontents +\eject +Consider the integral +\[I(a,b) = \int_0^1{\frac{dx}{ax+b}}\] +for real $x$ and arbitrary nonzero complex $a$ and $b$. The indefinite +integral has the primitive $\log(ax+b)/a$. Hence, a careless ``direct'' +derivation would yield the result +\[I(a,b)=\frac{log(a+b)}{a}-\frac{log b}{a}\] + +The problem, of course, is that the logarithm function has a branch +cut. Hence, the two logarithms may not be on the same Riemann sheet. + +The correct way to evaluate it is to separate the region of integration +into two sub-intervals, with the division point being the value where +$ax+b$ may vanish. An easier way, for this integral, is to first write +the integral as +\[I(a,b)=\frac{1}{a}\int_0^1{\frac{dx}{x+\frac{b}{a}}} +=\frac{1}{a}\left(x+\frac{b}{a}\right)\vert^1_0\] +No matter what the sign of the Im$(b/a)$, the argument of the logarithm +never crosses the cut (since $x$ is real). Thus, the answer is +\[I(a,b)= +\frac{1}{a}\left[\log\left(1+\frac{b}{a}\right)-\log\frac{b}{a}\right]\] +Note that since $1+b/a$ and $b/a$ have the same imaginary part, we may +combine them to obtain our final answer +\[I(a,b)=\frac{1}{a}\log\frac{a+b}{b}\] + +\begin{chunk}{*} +)set break resume +)sys rm -f branchcut.output +)spool branchcut.output +)set message test on +)set message auto off +)clear all + +--S 1 of 5 +t1:=integrate(a/(a*x+b),x=0..1,"noPole") +--R +--R +--R 2 2 2 +--R log(b + 2a b + a ) - log(b ) +--R (1) ----------------------------- +--R 2 +--R Type: Union(f1: OrderedCompletion Expression Integer,...) +--E 1 + +--S 2 of 5 +t2:=(1/a)*log((a+b)/b) +--R +--R +--R b + a +--R log(-----) +--R b +--R (2) ---------- +--R a +--R Type: Expression Integer +--E 2 + +--S 3 of 5 +complexNormalize t1-t2 +--R +--R +--R 2 2 2 b + a +--R a log(b + 2a b + a ) - a log(b ) - 2log(-----) +--R b +--R (3) ----------------------------------------------- +--R 2a +--R Type: Expression Integer +--E 3 + +--S 4 of 5 +t3:=log(a+b)/a-log(b)/a +--R +--R +--R log(b + a) - log(b) +--R (4) ------------------- +--R a +--R Type: Expression Integer +--E 4 + +--S 5 of 5 +complexNormalize t1-t3 +--R +--R +--R 2 2 2 +--R a log(b + 2a b + a ) - a log(b ) - 2log(b + a) + 2log(b) +--R (5) --------------------------------------------------------- +--R 2a +--R Type: Expression Integer +--E 5 + +)spool +)lisp (bye) + +\end{chunk} +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document}