wu.tex 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. \documentstyle[fullpage]{article}
  2. \pagestyle{empty}
  3. \setlength{\parindent}{0in}
  4. \setlength{\parskip}{0.1in}
  5. \begin{document}
  6. \title{An Implementation of the Wu Algorithm}
  7. \author{Russell Bradford \\
  8. School of Mathematical Sciences,\\
  9. University of Bath,\\
  10. Claverton Down,\\
  11. Bath, BA2 7AY \\
  12. \tt rjb@maths.bath.ac.uk}
  13. \date{}
  14. \maketitle\thispagestyle{empty}
  15. This is a simple implementation of the Wu algorithm implemented in Reduce
  16. 3.3, working directly from
  17. ``A Zero Structure Theorem for Polynomial-Equations-Solving,''
  18. Wu Wen-tsun, Institute of Systems Science, Academia Sinica, Beijing.
  19. Its purpose was to aid my understanding of the algorithm, so the code is
  20. simple, and has a lot of tracing included. This is a working implementation,
  21. but there is magnificent scope for improvement and optimisation. Things
  22. like using intelligent sorts on polynomial lists, and avoiding the
  23. re-computation of various data spring easily to mind. Also, an attempt
  24. at factorization of the input polynomials at each pass might have beneficial
  25. results. Of course, exploitation of the natural parallel structure is a must!
  26. All bug fixes and improvements are welcomed.
  27. The interface:
  28. \begin{verbatim}
  29. wu( {x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z});
  30. \end{verbatim}
  31. calls {\tt wu} with the named polynomials, and with the variable ordering
  32. ${\tt x} > {\tt y} > {\tt z}$. In this example, {\tt r} is a parameter.
  33. The result is
  34. \begin{verbatim}
  35. 2 3 2
  36. {{{r + z - z - 1,
  37. 2 2 2 2 4 2 2 2
  38. r *y + r *z + r - y - y *z + z - z - 2,
  39. 2
  40. x*y + z - 1},
  41. y},
  42. 6 4 6 2 6 4 7 4 6 4 5 4 4
  43. {{r *z - 2*r *z + r + 3*r *z - 3*r *z - 6*r *z + 3*r *z + 3*
  44. 4 3 4 2 4 2 10 2 9 2 8 2 7
  45. r *z + 3*r *z - 3*r + 3*r *z - 6*r *z - 3*r *z + 6*r *z +
  46. 2 6 2 5 2 4 2 3 2 13 12 11
  47. 3*r *z + 6*r *z - 6*r *z - 6*r *z + 3*r + z - 3*z + z
  48. 10 9 8 7 6 4 3 2
  49. + 2*z + z + 2*z - 6*z - z + 2*z + 3*z - z - 1,
  50. 2 2 3 2
  51. y *(r + z - z - 1),
  52. 2
  53. x*y + z - 1},
  54. 2 3 2
  55. y*(r + z - z - 1)}}
  56. \end{verbatim}
  57. namely, a list of pairs of characteristic sets and initials for the
  58. characteristic sets.
  59. Thus, the first pair above has the characteristic set
  60. $$ r^2 + z^3 - z^2 - 1,
  61. r^2 y^2 + r^2 z + r^2 - y^4 - y^2 z^2 + z^2 - z - 2,
  62. x y + z^2 - 1$$
  63. and initial $y$.
  64. According to Wu's theorem, the set of roots of the original polynomials
  65. is the union of the sets of roots of the characteristic sets,
  66. with the additional constraints that the
  67. corresponding initial is non-zero. Thus, for the first pair above, we find the
  68. roots of $\{ r^2 + z^3 - z^2 - 1, \ldots~\}$ under the constraint that
  69. $y \neq 0$. These roots, together with the roots of the other
  70. characteristic set (under the constraint of $y(r^2+z^3-z^2-1) \neq 0$),
  71. comprise all the roots of the original set.
  72. Additional information about the working of the algorithm can be gained by
  73. \begin{verbatim}
  74. on trwu;
  75. \end{verbatim}
  76. This prints out details of the choice of basic sets, and the computation
  77. of characteristic sets.
  78. The second argument (the list of variables) may be omitted, when all the
  79. variables in the input polynomials are implied with some random ordering.
  80. \end{document}