diff --git a/changelog b/changelog index 7592b65..9e5db47 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20100222 tpd src/axiom-website/patches.html 20100222.04.tpd.patch +20100222 tpd src/input/pmint.input add comments 20100222 tpd src/axiom-website/patches.html 20100222.03.tpd.patch 20100222 tpd src/interp/Makefile remove cparse 20100222 tpd src/interp/cparse.lisp removed diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 2141090..df660b4 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2489,5 +2489,7 @@ books/bookvol5 treeshake cparse
src/input/unittest2.input fix broken credit test
20100222.03.tpd.patch books/bookvol5 merge and remove cparse, treeshake ptrees
+20100222.04.tpd.patch +src/input/pmint.input add comments
diff --git a/src/input/pmint.input.pamphlet b/src/input/pmint.input.pamphlet index 39310dd..5d6421a 100644 --- a/src/input/pmint.input.pamphlet +++ b/src/input/pmint.input.pamphlet @@ -111,6 +111,78 @@ deflation := proc(p, d) local si, x, c, q; end; \end{verbatim} + +\begin{verbatim} +Christopher Creutzig (sci.math.symbolic 2/19/10 10:18pm): + + The Risch-Norman algorithm is actually a fascinating piece of +machinery. (I'm using MuPAD syntax, since that is what I have around all +the time, but the principles are obviously system agnostic.) + + Let's assume we define elliptic functions E and K. For what follows, +the only thing we need is that they know how to be differentiated, so +I'll not write any code beyond that: + +ellipE := funcenv(ellipE): +ellipK := funcenv(ellipK): + +ellipE::diff := +proc(f, x) + local z; +begin + z := op(f); + (ellipE(z) - ellipK(z))/(2*z) * diff(z, x); +end_proc: + +ellipK::diff := proc(f,x) + local z; +begin + z := op(f); + (ellipE(z) - (1-z)*ellipK(z))/ + (2*(1-z)*z) * diff(z, x); +end_proc: + + What can we do with this code? Obviously, creating Taylor series, and +once ellipE and ellipK also learned to be evaluated at 0, those would +also have useful coefficients. But with the Risch-Norman algorithm, the +definition above is sufficient for a couple of symbolic integrations, too! + +>> int(ellipE(x), x) + +2 ellipE(x) 2 ellipK(x) / 2 ellipE(x) 2 ellipK(x) \ +----------- - ----------- + x | ----------- + ----------- | + 3 3 \ 3 3 / + +>> diff(%, x) + +2 ellipE(x) 2 ellipK(x) / ellipE(x) - ellipK(x) +----------- + ----------- + x | --------------------- - + 3 3 \ 3 x + + ellipE(x) + ellipK(x) (x - 1) \ ellipE(x) - ellipK(x) + ----------------------------- | + --------------------- + + 3 x (x - 1) / 3 x + + ellipE(x) + ellipK(x) (x - 1) + ----------------------------- + 3 x (x - 1) + +>> simplify(%) + +ellipE(x) + +>> int(x*ellipE(x), x) + +8 ellipE(x) 8 ellipK(x) 2 / 2 ellipE(x) 2 ellipK(x) \ +----------- - ----------- + x | ----------- + ----------- | + + 45 45 \ 5 15 / + + / 2 ellipE(x) 2 ellipK(x) \ + x | ----------- + ----------- | + \ 45 45 / + +\end{verbatim} + \begin{chunk}{*} )set break resume )sys rm -f pmint.output