diff --git a/changelog b/changelog index 0240200..bcafd11 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20100218 tpd src/axiom-website/patches.html 20100218.01.tpd.patch +20100218 tpd src/input/pmint.input update pmint with code 20100217 tpd src/axiom-website/patches.html 20100217.01.tpd.patch 20100217 tpd src/interp/ptrees.lisp treeshake 20100217 tpd src/interp/cparse.lisp treeshake diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 6b3659e..e3ede79 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2467,5 +2467,7 @@ books/bookvol10.1 add Clifford chapter, per John Fletcher
books/bookvol5 treeshake cparse posit serror
20100217.01.tpd.patch books/bookvol5 treeshake cparse, ptrees
+20100218.01.tpd.patch +src/input/pmint.input update pmint with code
diff --git a/src/input/pmint.input.pamphlet b/src/input/pmint.input.pamphlet index 827c586..39310dd 100644 --- a/src/input/pmint.input.pamphlet +++ b/src/input/pmint.input.pamphlet @@ -9,12 +9,111 @@ \eject \tableofcontents \eject -\section{License} -\begin{chunk}{license} ---Copyright The Numerical Algorithms Group Limited 1991. -\end{chunk} +\begin{verbatim} + +# The Poor Man's Integrator, a parallel integration heuristic +# Version 1.1 --- May 10, 2005 (c) M.Bronstein and INRIA 2004-2005 +pmint := proc(f,x) + local ff, si, li, lin, lout, ld, q, d, l, vars, dx, ls, fint, lc; + ff := eval(convert(f, tan)); # convert trigs to tan + si := select(proc(d) diff(d,x) <> 0 end, indets(ff)); + si := select(proc(d) diff(d,x) <> 0 end, indets(map(diff, si, x))) union si; + li := [op(si)]; # list of terms in integrand and its derivative + lin := [seq(d=`tools/genglobal`(x), d=li)]; # substitution terms->indets + lout := [seq(rhs(d)=lhs(d), d=lin)]; # substitution indets->terms + ld := subs(lin, map(diff, li, x)); # derivatives of all the terms + q := lcm(seq(denom(d), d=ld)); # denominator of the total derivation + l := [seq(normal(q * d), d=ld)]; # q * derivatives of all the terms + vars := map(lhs, lout); + dx := totalDerivation(vars, l); # vector field dx = q * d/dx + ls := [seq(getSpecial(d, lin), d=li)]; # list of known Darboux for dx + fint := subs(lout, pmIntegrate(subs(lin, ff), dx, q, vars, ls)); + lc := select(proc(d) convert(d,string)[1]="_"; end, indets(fint, name)); + subs({seq(d = 0, d=lc minus si)}, fint); +end; + +getSpecial := proc(f, l) local p; # return known Darboux polys + p := op(0,f); + if p = `tan` then [1+subs(l,f)^2, false]; + elif p = `tanh` then [1 + subs(l,f), false], [1 - subs(l,f), false]; + elif p = `LambertW` then [subs(l,f), true]; + else NULL; fi; +end; + +totalDerivation := proc(lv, ld) + proc(f) local fp, i; + fp := 0; for i to nops(ld) do fp := fp + ld[i] * diff(f, lv[i]); od; + fp; + end; +end; + +pmIntegrate := proc(f, d, q, vars) + local ls, splq, s, ff, df, spl, cden, dg, monomials, cand, lunk, sol, i; + if nargs = 5 then ls := args[5]; else ls := []; fi; + splq := splitFactor(q, d); + s := splq[1]; for i to nops(ls) do if ls[i][2] then s := s*ls[i][1]; fi; od; + ff := normal(f); df := denom(ff); spl := splitFactor(df, d); + cden := s * spl[1] * deflation(spl[2], d); + dg := 1 + degree(s) + max(degree(numer(ff)), degree(denom(ff))); + monomials := [op(enumerateMonoms(vars, dg))]; + cand := add('_A'[i] * monomials[i], i = 1..nops(monomials)) / cden; + lunk := { seq('_A'[i], i = 1..nops(monomials)) }; + sol:= tryIntegral(f, d, q, vars, cand, lunk, spl[1], spl[2], splq[1], ls, 0); + if sol[1] then sol := tryIntegral(f, d, q, vars, cand, lunk, + spl[1], spl[2], splq[1], ls, I); fi; + if sol[1] then Int(f); else sol[2]; fi; +end; + +tryIntegral := proc(f, d, q, vars, cand, lunk, l1, l2, l3, ls, K) + local candlog, p, candidate, i, sol; + candlog := [op({ myfactors(l1, K), myfactors(l2, K), myfactors(l3, K) } + union { seq(p[1], p=ls) })]; + candidate := cand + add('_B'[i] * log(candlog[i]), i = 1..nops(candlog)); + sol := solve({coeffs(numer(normal(f - d(candidate)/q)), {op(vars)})}, + lunk union { seq('_B'[i], i = 1..nops(candlog)) }); + [evalb(sol=NULL), subs(sol,candidate)]; +end; + +myfactors := proc(p, K) local l, fact; + if K = 0 then l := factors(p); else l := factors(p, K); fi; + seq(fact[1], fact=l[2]); +end; + +enumerateMonoms := proc(vars, d) local n, x, i, v, s, w; + n := nops(vars); + if n = 0 then {1}; else + x := vars[n]; + v := [seq(vars[i], i = 1..n-1)]; + s := enumerateMonoms(v, d); + for i to d do s := s union {seq(x^i*w,w=enumerateMonoms(v,d-i))}; od; + s; + fi; +end; + +splitFactor := proc(p, d) local si, x, c, q, spl, s, splh; + si := select(proc(z) d(z) <> 0 end, indets(p,name)); + if si = {} then RETURN([1,p]) fi; + x := si[1]; + c := content(p, x, 'q'); + spl := splitFactor(c, d); + s := normal(gcd(q, d(q)) / gcd(q, diff(q, x))); + if degree(s) = 0 then RETURN([spl[1], q * spl[2]]); fi; + splh := splitFactor(normal(q / s), d); + [spl[1] * splh[1] * s, spl[2] * splh[2]]; +end; + +deflation := proc(p, d) local si, x, c, q; + si := select(proc(z) d(z) <> 0 end, indets(p,name)); + if si = {} then RETURN(p) fi; + x := si[1]; + c := content(p, x, 'q'); + deflation(c, d) * gcd(q, diff(q, x)); +end; + +\end{verbatim} \begin{chunk}{*} )set break resume +)sys rm -f pmint.output )spool pmint.output )set message test on )set message auto off @@ -23,8 +122,9 @@ \end{chunk} \section{Rational Functions} \begin{chunk}{*} ---S 1 of 29 -f:=(x^7-24*x^4-4*x^2+8*x-8)/(x^8+6*x^6+12*x^4+8*x^2) +)clear all +--S 1 of 60 +t1a:=(x^7-24*x^4-4*x^2+8*x-8)/(x^8+6*x^6+12*x^4+8*x^2) --R --R --R 7 4 2 @@ -35,8 +135,8 @@ f:=(x^7-24*x^4-4*x^2+8*x-8)/(x^8+6*x^6+12*x^4+8*x^2) --R Type: Fraction Polynomial Integer --E 1 ---S 2 of 29 -g:=integrate(f,x) +--S 2 of 60 +t1b:=(4+8*x^2+6*x+3*x^3)/(x*(x^4+4*x^2+4))+log(x) --R --R --R 5 3 3 2 @@ -44,28 +144,36 @@ g:=integrate(f,x) --R (2) ------------------------------------------ --R 5 3 --R x + 4x + 4x ---R Type: Union(Expression Integer,...) +--R Type: Expression Integer --E 2 ---S 3 of 29 -differentiate(g,x) +--S 3 of 60 +t1c:=integrate(t1a,x) --R --R ---R 7 4 2 ---R x - 24x - 4x + 8x - 8 ---R (3) ------------------------ ---R 8 6 4 2 ---R x + 6x + 12x + 8x ---R Type: Expression Integer +--R 5 3 3 2 +--R (x + 4x + 4x)log(x) + 3x + 8x + 6x + 4 +--R (3) ------------------------------------------ +--R 5 3 +--R x + 4x + 4x +--R Type: Union(Expression Integer,...) --E 3 -)clear all +--S 4 of 60 +t1d:=t1c-t1b +--R +--R +--R (4) 0 +--R Type: Expression Integer +--E 4 \end{chunk} \section{Trigonometric Functions} \begin{chunk}{*} ---S 4 of 29 -f:=(x-tan(x))/tan(x)^2 + tan(x) + +)clear all +--S 5 of 60 +t2a:=(x-tan(x))/tan(x)^2+tan(x) --R --R --R 3 @@ -74,38 +182,45 @@ f:=(x-tan(x))/tan(x)^2 + tan(x) --R 2 --R tan(x) --R Type: Expression Integer ---E 4 +--E 5 ---S 5 of 29 -g:=integrate(f,x) +--S 6 of 60 +t2b:=(-x-(1/2)*tan(x)*x^2)/tan(x)+(1/2)*log(1+tan(x)^2) --R --R --R 2 2 --R tan(x)log(tan(x) + 1) - x tan(x) - 2x --R (2) -------------------------------------- --R 2tan(x) +--R Type: Expression Integer +--E 6 + +--S 7 of 60 +t2c:=integrate(t2a,x) +--R +--R +--R 2 2 +--R tan(x)log(tan(x) + 1) - x tan(x) - 2x +--R (3) -------------------------------------- +--R 2tan(x) --R Type: Union(Expression Integer,...) ---E 5 +--E 7 ---S 6 of 29 -differentiate(g,x) +--S 8 of 60 +t2d:=t2c-t2b --R --R ---R 3 ---R tan(x) - tan(x) + x ---R (3) -------------------- ---R 2 ---R tan(x) +--R (4) 0 --R Type: Expression Integer ---E 6 - -)clear all +--E 8 \end{chunk} \section{Log-Exp Functions} \begin{chunk}{*} ---S 7 of 29 -f:=(1+x+x*exp(x))*(x+log(x)+exp(x)-1)/(x+log(x)+exp(x))^2/x + +)clear all +--S 9 of 60 +t3a:=(1+x+x*exp(x))*(x+log(x)+exp(x)-1)/((x+log(x)+exp(x))^2*x) --R --R --R x x 2 2 x 2 @@ -114,10 +229,10 @@ f:=(1+x+x*exp(x))*(x+log(x)+exp(x)-1)/(x+log(x)+exp(x))^2/x --R 2 x 2 x 2 2 x 3 --R x log(x) + (2x %e + 2x )log(x) + x (%e ) + 2x %e + x --R Type: Expression Integer ---E 7 +--E 9 ---S 8 of 29 -g:=integrate(f,x) +--S 10 of 60 +t3b:=1/(x+log(x)+exp(x))+log(x+log(x)+exp(x)) --R --R --R x x @@ -125,257 +240,329 @@ g:=integrate(f,x) --R (2) ------------------------------------------- --R x --R log(x) + %e + x ---R Type: Union(Expression Integer,...) ---E 8 - ---S 9 of 29 -differentiate(g,x) ---R ---R ---R x x 2 2 x 2 ---R (x %e + x + 1)log(x) + x (%e ) + (x + 1)%e + x - 1 ---R (3) --------------------------------------------------------- ---R 2 x 2 x 2 2 x 3 ---R x log(x) + (2x %e + 2x )log(x) + x (%e ) + 2x %e + x ---R Type: Expression Integer ---E 9 - -)clear all - -\end{chunk} -\section{Liouvillian special functions} -\begin{chunk}{*} ---S 10 of 29 -f:=exp(-x^2)+erf(x)/(erf(x)^3-erf(x)^2-erf(x)+1) ---R ---R ---R 2 ---R 3 2 - x ---R (erf(x) - erf(x) - erf(x) + 1)%e + erf(x) ---R (1) ----------------------------------------------- ---R 3 2 ---R erf(x) - erf(x) - erf(x) + 1 --R Type: Expression Integer --E 10 ---S 11 of 29 -g:=integrate(f,x) +--S 11 of 60 +t3c:=integrate(t3a,x) +--R --R ---R 2 ---I x 3 2 - %G ---I ++ (erf(%G) - erf(%G) - erf(%G) + 1)%e + erf(%G) ---I (2) | ---------------------------------------------------- d%G ---R ++ 3 2 ---I erf(%G) - erf(%G) - erf(%G) + 1 +--R x x +--R (log(x) + %e + x)log(log(x) + %e + x) + 1 +--R (3) ------------------------------------------- +--R x +--R log(x) + %e + x --R Type: Union(Expression Integer,...) --E 11 ---S 12 of 29 -differentiate(g,x) +--S 12 of 60 +t3d:=t3b-t3a +--R --R ---R 2 ---R 3 2 - x ---R (erf(x) - erf(x) - erf(x) + 1)%e + erf(x) ---R (3) ----------------------------------------------- ---R 3 2 ---R erf(x) - erf(x) - erf(x) + 1 +--R (4) +--R 2 x 2 x 2 2 x 3 +--R (x log(x) + (2x %e + 2x )log(x) + x (%e ) + 2x %e + x ) +--R * +--R x +--R log(log(x) + %e + x) +--R + +--R x x 2 2 x +--R (- x %e - 1)log(x) - x (%e ) + (- x + x - 1)%e + 1 +--R / +--R 2 x 2 x 2 2 x 3 +--R x log(x) + (2x %e + 2x )log(x) + x (%e ) + 2x %e + x --R Type: Expression Integer --E 12 -)clear all +\end{chunk} +\section{Liouvillian Special Functions} +\begin{chunk}{*} ---S 13 of 29 -f:=(exp(-x^2)+erf(x))/(erf(x)^3-erf(x)^2-erf(x)+1) +)clear all +--S 13 of 60 +t4a:=exp(-x^2)*erf(x)/(erf(x)^3-erf(x)^2-erf(x)+1) --R --R ---R 2 ---R - x ---R %e + erf(x) +--R 2 +--R - x +--R erf(x)%e --R (1) ------------------------------ --R 3 2 --R erf(x) - erf(x) - erf(x) + 1 --R Type: Expression Integer --E 13 ---S 14 of 29 used to work! -g:=integrate(f,x) +--S 14 of 60 +t4b:=-(1/4)*(sqrt(%pi)/(erf(x)-1))-(1/8)*sqrt(%pi)*log(erf(x)+1)+_ + (1/8)*sqrt(%pi)*log(erf(x)-1) --R --R ---R 2 ---I x - %G ---I ++ %e + erf(%G) ---I (3) | --------------------------------- d%G ---R ++ 3 2 ---I erf(%G) - erf(%G) - erf(%G) + 1 ---R Type: Union(Expression Integer,...) +--R (2) +--R +---+ +---+ +--R (- erf(x) + 1)\|%pi log(erf(x) + 1) + (erf(x) - 1)\|%pi log(erf(x) - 1) +--R + +--R +---+ +--R - 2\|%pi +--R / +--R 8erf(x) - 8 +--R Type: Expression Integer --E 14 --- should be: --- 1 sqrt(%pi) 1 1 --- - - ------------ - - sqrt(%pi) log(erf(x)+1) + - sqrt(%pi) log(erf(x)-1) --- 4 erf(x) - 1 8 8 ---S 15 of 29 -differentiate(g,x) +--S 15 of 60 +t4c:=integrate(t4a,x) +--R --R ---R 2 ---R - x ---R %e + erf(x) ---R (3) ------------------------------ ---R 3 2 ---R erf(x) - erf(x) - erf(x) + 1 ---R Type: Expression Integer +--R +---+ erf(x) - 1 +---+ +--R (erf(x) - 1)\|%pi log(----------) - 2\|%pi +--R erf(x) + 1 +--R (3) ------------------------------------------- +--R 8erf(x) - 8 +--R Type: Union(Expression Integer,...) --E 15 -)clear all - -\end{chunk} -\section{Airy Functions} -\begin{chunk}{*} --- Axiom does not have a 2 argument form of the airyAi function --- f:=(x-airyAi(x)*airyAi(1,x))/(x^2-airyAi(x)^2) ---it has the integral ---R ---R 1 1 ---R - log(x+airyAi(x)) + - log(x-airyAi(x)) ---R 2 2 - - ---S 16 of 29 will certainly fail -f:=(x-airyAi(x))/(x^2-airyAi(x)^2) +--S 16 of 60 +t4d:=t4c-t4b +--R --R ---R 1 ---R (1) ------------- ---R airyAi(x) + x +--R +---+ +---+ +---+ erf(x) - 1 +--R \|%pi log(erf(x) + 1) - \|%pi log(erf(x) - 1) + \|%pi log(----------) +--R erf(x) + 1 +--R (4) --------------------------------------------------------------------- +--R 8 --R Type: Expression Integer --E 16 ---S 17 of 29 will certainly fail -g:=integrate(f,x) ---R ---R x ---R ++ 1 ---R (2) | --------------- d%G ---R ++ airyAi(%G) + %G ---R Type: Union(Expression Integer,...) +\end{chunk} +\section{Airy Functions} +\begin{chunk}{*} + +)clear all +--S 17 of 60 +t5a:=(x-AiryAi(x)*AiryAi(1,x))/(x^2-AiryAi(x)^2) +--R +--R There are no library operations named AiryAi +--R Use HyperDoc Browse or issue +--R )what op AiryAi +--R to learn if there is any operation containing " AiryAi " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R AiryAi with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 17 ---S 18 of 29 -differentiate(g,x) ---R ---R 1 ---R (3) ------------- ---R airyAi(x) + x ---R Type: Expression Integer +--S 18 of 60 +t5b:=(1/2)*log(x+AiryAi(x))+(1/2)*log(x-AiryAi(x)) +--R +--R There are no library operations named AiryAi +--R Use HyperDoc Browse or issue +--R )what op AiryAi +--R to learn if there is any operation containing " AiryAi " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R AiryAi with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 18 -)clear all - ---S 19 of 29 -f:=x^2*airyAi(x) +--S 19 of 60 +t5c:=integrate(t5a,x) --R --R ---R 2 ---R (1) x airyAi(x) ---R Type: Expression Integer +--R (1) t5a x +--R Type: Polynomial Fraction Integer --E 19 ---S 20 of 29 used to work -g:=integrate(f,x) +--S 20 of 60 +t5d:=t5b-t5c --R --R ---R x ---R ++ 2 ---I (2) | %G airyAi(%G)d%G ---R ++ ---R Type: Union(Expression Integer,...) +--R (2) - t5a x + t5b +--R Type: Polynomial Fraction Integer --E 20 --- should be: --- -airyAi(x) + airyAi(1,x) x - ---S 21 of 29 -differentiate(g,x) ---R ---R 2 ---R (3) x airyAi(x) ---R Type: Expression Integer ---E 21 )clear all +--S 21 of 60 +t5e:=x^2*AiryAi(x) +--R +--R There are no library operations named AiryAi +--R Use HyperDoc Browse or issue +--R )what op AiryAi +--R to learn if there is any operation containing " AiryAi " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R AiryAi with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 21 -\end{chunk} -\section{Bessel functions} -\begin{chunk}{*} ---S 22 of 29 -f:=besselJ(y+1,x)/besselJ(y,x) +--S 22 of 60 +t5f:=-AiryAi(x)+AiryAi(1,x)*x --R ---R ---R besselJ(y + 1,x) ---R (1) ---------------- ---R besselJ(y,x) ---R Type: Expression Integer +--R There are no library operations named AiryAi +--R Use HyperDoc Browse or issue +--R )what op AiryAi +--R to learn if there is any operation containing " AiryAi " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R AiryAi with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 22 ---S 23 of 29 used to work -g:=integrate(f,x) +--S 23 of 60 +t5g:=integrate(t5e,x) --R --R ---R x ---I ++ besselJ(y + 1,%G) ---I (2) | ----------------- d%G ---I ++ besselJ(y,%G) ---R Type: Union(Expression Integer,...) +--R (1) t5e x +--R Type: Polynomial Fraction Integer --E 23 --- should be: --- y log(x) - log(besselJ(y,x)) ---S 24 of 29 -differentiate(g,x) +--S 24 of 60 +t5h:=t5f-t5g +--R --R ---R besselJ(y + 1,x) ---R (3) ---------------- ---R besselJ(y,x) ---R Type: Expression Integer +--R (2) - t5e x + t5f +--R Type: Polynomial Fraction Integer --E 24 -)clear all - +\end{chunk} +\section{Bessel Functions} +\begin{chunk}{*} --- Axiom does not have Maple's normal function ---S 25 of 29 used to work ---f:=normal(y*besselJ(y,x)/x - besselJ(y+1,x)) -f:=y*besselJ(y,x)/x - besselJ(y+1,x) ---R ---R - x besselJ(y + 1,x) + y besselJ(y,x) ---R (1) ------------------------------------- ---R x ---R Type: Expression Integer +)clear all +--S 25 of 60 +t6a:=BesselJ(nu+1,x)/BesselJ(nu,x) +--R +--R There are no library operations named BesselJ +--R Use HyperDoc Browse or issue +--R )what op BesselJ +--R to learn if there is any operation containing " BesselJ " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R BesselJ with argument type(s) +--R Polynomial Integer +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 25 ---S 26 of 29 -g:=integrate(f,x) ---R ---R x ---I ++ - %G besselJ(y + 1,%G) + y besselJ(y,%G) ---I (2) | ---------------------------------------- d%G ---I ++ %G ---R Type: Union(Expression Integer,...) +--S 26 of 60 +t6b:=nu*log(x)-log(BesselJ(nu,x)) +--R +--R There are no library operations named BesselJ +--R Use HyperDoc Browse or issue +--R )what op BesselJ +--R to learn if there is any operation containing " BesselJ " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R BesselJ with argument type(s) +--R Variable nu +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. --E 26 ---S 27 of 29 -differentiate(g,x) +--S 27 of 60 +t6c:=integrate(t6a,x) +--R --R ---R - x besselJ(y + 1,x) + y besselJ(y,x) ---R (3) ------------------------------------- ---R x ---R Type: Expression Integer +--R (1) t6a x +--R Type: Polynomial Fraction Integer --E 27 + +--S 28 of 60 +t6d:=t6b-t6c +--R +--R +--R (2) - t6a x + t6b +--R Type: Polynomial Fraction Integer +--E 28 + )clear all +--S 29 of 60 +t6e:=normal(nu*BesselJ(nu,x)/x-BesselJ(nu+1,x)) +--R +--R There are no library operations named BesselJ +--R Use HyperDoc Browse or issue +--R )what op BesselJ +--R to learn if there is any operation containing " BesselJ " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R BesselJ with argument type(s) +--R Variable nu +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 29 + +--S 30 of 60 +t6f:=BesselJ(nu,x) +--R +--R There are no library operations named BesselJ +--R Use HyperDoc Browse or issue +--R )what op BesselJ +--R to learn if there is any operation containing " BesselJ " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R BesselJ with argument type(s) +--R Variable nu +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 30 + +--S 31 of 60 +t6g:=integrate(t6e,x) +--R +--R +--R (1) t6e x +--R Type: Polynomial Fraction Integer +--E 31 + +--S 32 of 60 +t6h:=t6f-t6g +--R +--R +--R (2) - t6e x + t6f +--R Type: Polynomial Fraction Integer +--E 32 \end{chunk} -\section{Whittaker functions} +\section{Whittaker Functions} \begin{chunk}{*} ---S 28 of 29 used to work -f:=WhittakerW(u+1,n,x)/(WhittakerW(u,n,x)*x) + +)clear all +--S 33 of 60 +t7a:=WhittakerW(mu+1,nu,x)/(WhittakerW(mu,nu,x)*x) --R --R There are no library operations named WhittakerW --R Use HyperDoc Browse or issue @@ -387,35 +574,56 @@ f:=WhittakerW(u+1,n,x)/(WhittakerW(u,n,x)*x) --R Cannot find a definition or applicable library operation named --R WhittakerW with argument type(s) --R Polynomial Integer ---R Variable n +--R Variable nu --R Variable x --R --R Perhaps you should use "@" to indicate the required return type, --R or "$" to specify which version of the function you need. ---E 28 +--E 33 --- Axiom does not implement WhittakerW --- should be: --- Whittaker(u+1,n,x) --- ------------------ --- Whittaker(u,n,x) x +--S 34 of 60 +t7b:=(x/2)-mu*log(x)-log(WhattakerW(mu,nu,x)) +--R +--R There are no library operations named WhattakerW +--R Use HyperDoc Browse or issue +--R )what op WhattakerW +--R to learn if there is any operation containing " WhattakerW " in +--R its name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R WhattakerW with argument type(s) +--R Variable mu +--R Variable nu +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 34 --- of 29 used to work ---integrate(f,x) --- 22 --- should be: --- x --- - - u log(x) - log(WhattakerW(u,n,x)) --- 2 +--S 35 of 60 +t7c:=integrate(t7a,x) +--R +--R +--R (1) t7a x +--R Type: Polynomial Fraction Integer +--E 35 -)clear all +--S 36 of 60 +t7d:=t7b-t7c +--R +--R +--R (2) - t7a x + t7b +--R Type: Polynomial Fraction Integer +--E 36 \end{chunk} -\section{The Lambert W function} +\section{Lambert W Function} \begin{chunk}{*} --- Axiom does not implement LambertW ---S 29 of 29 used to work -f:=LambertW(x) + +)clear all +--S 37 of 60 +t8a:=LambertW(x) --R --R There are no library operations named LambertW --R Use HyperDoc Browse or issue @@ -430,124 +638,336 @@ f:=LambertW(x) --R --R Perhaps you should use "@" to indicate the required return type, --R or "$" to specify which version of the function you need. ---E 29 +--E 37 + +--S 38 of 60 +t8b:=(x^2+LambertW(x)^2*x^2-LambertW(x)*x^2)/(x*LambertW(x)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 38 + +--S 39 of 60 +t8c:=integrate(t8a,x) +--R +--R +--R (1) t8a x +--R Type: Polynomial Fraction Integer +--E 39 + +--S 40 of 60 +t8d:=t8b-t8c +--R +--R +--R (2) - t8a x + t8b +--R Type: Polynomial Fraction Integer +--E 40 + +)clear all +--S 41 of 60 +t8e:=sin(LambertW(x)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 41 + +--S 42 of 60 +t8f:=((1/2)*LambertW(x)*tan((1/2)*LambertW(x))^2*x^2+_ + LambertW(x)*tan((1/2)*LambertW(x))*x^2+_ + tan((1/2)*LambertW(x))*x^2-_ + (1/2)*LambertW(x)*x^2) / _ + (x*LambertW(x)*(1+tan((1/2)*LambertW(x))^2)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Variable x +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 42 + +--S 43 of 60 +t8g:=integrate(t8e,x) +--R +--R +--R (1) t8e x +--R Type: Polynomial Fraction Integer +--E 43 + +--S 44 of 60 +t8h:=t8f-t8g +--R +--R +--R (2) - t8e x + t8f +--R Type: Polynomial Fraction Integer +--E 44 + +)clear all +--S 45 of 60 +t8i:=((x^2+2)*LambertW(x^2)^2+x^2*(2*LambertW(x^2)+1))/(x*(1+LambertW(x^2)^3)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Polynomial Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 45 + +--S 46 of 60 +t8j:=((1/2)*x^4*LambertW(x^2)^2+_ + x^4*LambertW(x^2)+_ + +x^4/2+_ + LambertW(x^2)^2*x^2+_ + x^2*LambertW(x^2))/_ + (x^2*LambertW(x^2)*(1+LambertW(x^2))^2)+_ + log(1+LambertW(x^2)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Polynomial Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 46 + +--S 47 of 60 +t8k:=integrate(t8i,x) +--R +--R +--R (1) t8i x +--R Type: Polynomial Fraction Integer +--E 47 --- of 29 used to work --- g:=integrate(f,x) --- 24 --- should be: --- 2 2 2 2 --- x + LambertW(x) x - LambertW(x) x --- ------------------------------------ --- x LambertW(x) - --- of 29 used to work --- integrate(sin(LambertW(x)),x) --- 25 ---should be: --- +- -+ --- | 2 | --- | +- -+ | --- | 1 | 1 | 2 | --- | - LambertW(x) tan | - LambertW(x) | x + | --- | 2 | 2 | | --- | +- -+ | --- | | --- | +- -+ | --- | | 1 | 2 | --- | LambertW(x) tan | - LambertW(x) | x + | --- | | 2 | | --- | +- -+ | --- | | --- | +- -+ | --- | | 1 | 2 1 2 | --- | tan | - LambertW(x) | x - - LambertW(x) x | --- | | 2 | 2 | --- | +- -+ | --- +- -+ --- ------------------------------------------------------ --- +- 2 -+ --- | +- -+ | --- | | 1 | | --- x LambertW(x) | 1 + tan | - LambertW(x) | | --- | | 2 | | --- | +- -+ | --- +- -+ - --- of 29 used to work ---f:=((x^2+2)*LambertW(x^2)^2+x^2*(2*LambertW(x^2)+1))/(x*(1+LambertW(x^2)^3)) --- 26 ---should be: --- 2 --- 2 2 2 2 --- (x + 2) LambertW(x ) + x (2 LambertW(x ) + 1) --- ------------------------------------------------ --- 3 --- 2 --- x (1 + LambertW(x )) - --- of 29 used to work ---integrate(f,x) --- 27 ---should be: --- 2 4 ---1 4 2 4 2 x 2 2 2 2 ---- x LambertW(x ) + x LambertW(x ) + -- + LambertW(x ) x + x LambertW(x ) ---2 2 ------------------------------------------------------------------------------ --- 2 --- 2 2 2 --- x LambertW(x ) (1 + LambertW(x )) --- --- + --- 2 --- log(1 + LambertW(x )) - --- of 29 used to work ---f:=(2*LambertW(x^2)*cos(LambertW(x^2))*(a*x+LambertW(x^2))+a*x*(1+LambertW(x^2)) + 2*LambertW(x^2))/((1+LambertW(x^2))*(a*x+LambertW(x^2))*x) --- --- 28 ---+- -+ ---| | ---| 2 2 2 | ---| 2 LambertW(x ) cos(LambertW(x )) (a x + LambertW(x )) + | ---| | ---| 2 2 | ---| a x (1 + LambertW(x )) + 2 LambertW(x ) | ---| | ---+- -+ -------------------------------------------------------------- --- 2 2 --- (1 + LambertW(x ))(a x+LambertW(x )) x --- - --- 29 of 29 used to work -integrate(f,x) --- --- 29 --- --- +- -+ --- | 1 2 | --- 2 tan | - LambertW(x ) | --- | 2 | --- +- -+ 2 --- --------------------------- + log(a x + LambertW(x )) --- 2 --- +- -+ --- | 1 2 | --- 1 + tan | - LambertW(x ) | --- | 2 | --- +- -+ --- --- +--S 48 of 60 +t8l:=t8j-t8k +--R +--R +--R (2) - t8i x + t8j +--R Type: Polynomial Fraction Integer +--E 48 + +)clear all +--S 49 of 60 +t8m:=(2*LambertW(x^2)*cos(LambertW(x^2))*(a*x+LambertW(x^2))+_ + a*x*(1+LambertW(x^2))+2*LambertW(x^2))/_ + ((1+LambertW(x^2))*(a*x+LambertW(x^2))*x) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Polynomial Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 49 + +--S 50 of 60 +t8n:=(2*tan((1/2)*LambertW(x^2)))/(1+tan((1/2)*LambertW(x^2))^2)+_ + log(x*x+LambertW(x^2)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Polynomial Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 50 + +--S 51 of 60 +t8o:=integrate(t8m,x) +--R +--R +--R (1) t8m x +--R Type: Polynomial Fraction Integer +--E 51 + +--S 52 of 60 +t8p:=t8n-t8o +--R +--R +--R (2) - t8m x + t8n +--R Type: Polynomial Fraction Integer +--E 52 + +\end{chunk} +\section{Wright omega Function} +\begin{chunk}{*} + +)clear all +--S 53 of 60 +t9a:=LambertW(exp(x)) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Expression Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 53 + +--S 54 of 60 +t9b:=(1/2)*LambertW(exp(x))*(LambertW(exp(x))+2) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Expression Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 54 + +--S 55 of 60 +t9c:=integrate(t9a,x) +--R +--R +--R (1) t9a x +--R Type: Polynomial Fraction Integer +--E 55 + +--S 56 of 60 +t9d:=t9b-t9c +--R +--R +--R (2) - t9a x + t9b +--R Type: Polynomial Fraction Integer +--E 56 + +)clear all +--S 57 of 60 +t9e:=(1+LambertW(exp(x))*(2+cos(LambertW(exp(x)))*(x+LambertW(exp(x)))))/_ + ((1+LambertW(exp(x)))*(x+LambertW(exp(x)))) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Expression Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 57 + +--S 58 of 60 +t9f:=(2*tan((1/2)*LambertW(exp(x))))/(1+tan((1/2)LambertW(exp(x)))^2)+_ + log(x+LambertW(exp(x))) +--R +--R There are no library operations named LambertW +--R Use HyperDoc Browse or issue +--R )what op LambertW +--R to learn if there is any operation containing " LambertW " in its +--R name. +--R +--RDaly Bug +--R Cannot find a definition or applicable library operation named +--R LambertW with argument type(s) +--R Expression Integer +--R +--R Perhaps you should use "@" to indicate the required return type, +--R or "$" to specify which version of the function you need. +--E 58 + +--S 59 of 60 +t9g:=integrate(t9e,x) +--R +--R +--R (1) t9e x +--R Type: Polynomial Fraction Integer +--E 59 + +--S 60 of 60 +t9h:=t9f-t9g +--R +--R +--R (2) - t9e x + t9f +--R Type: Polynomial Fraction Integer +--E 60 )spool )lisp (bye) \end{chunk} \eject \begin{thebibliography}{99} -\bibitem{1} nothing +\bibitem{1} Bronstein, Manuel +\verb|http://www-sop.inria.fr/cafe/Manuel.Bronstein/pmint| \end{thebibliography} \end{document} - + + +