File: section-9.31.xhtml

package info (click to toggle)
axiom 20170501-6
  • links: PTS
  • area: main
  • in suites: bullseye
  • size: 1,050,164 kB
  • sloc: javascript: 8,042; lisp: 3,600; makefile: 505; cpp: 223; ansic: 181; sh: 96
file content (187 lines) | stat: -rw-r--r-- 15,621 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd" [
<!ENTITY mathml "http://www.w3.org/1998/Math/MathML">
]>

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:xlink="http://www.w3.org/1999/xlink" >


  <head>
    <title>Section9.31</title>
    <link rel="stylesheet" type="text/css" href="graphicstyle.css" />
    <script type="text/javascript" src="bookax1.js" />
  </head>

  <body>
<a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a><a href="section-9.30.xhtml" style="margin-right: 10px;">Previous Section 9.30 GeneralSparseTable</a><a href="section-9.32.xhtml" style="margin-right: 10px;">Next Section 9.32 Heap</a>
<a href="book-index.xhtml">Book Index</a><div class="section"  id="sec-9.31">
<h2 class="sectiontitle">9.31  GroebnerFactorizationPackage</h2>


<a name="GroebnerFactorizationPackageXmpPage" class="label"/>


<p>Solving systems of polynomial equations with the Gr&#x00f6;bner basis
algorithm can often be very time consuming because, in general, the
algorithm has exponential run-time.  These systems, which often come
from concrete applications, frequently have symmetries which are not
taken advantage of by the algorithm.  However, it often happens in
this case that the polynomials which occur during the Gr&#x00f6;bner
calculations are reducible.  Since Axiom has an excellent polynomial
factorization algorithm, it is very natural to combine the Gr&#x00f6;bner
and factorization algorithms.
</p>


<p><span class="teletype">GroebnerFactorizationPackage</span> exports the
<span class="spadfunFrom" >groebnerFactorize</span><span class="index">groebnerFactorize</span><a name="chapter-9-50"/><span class="index">GroebnerFactorizationPackage</span><a name="chapter-9-51"/>
operation which implements a modified Gr&#x00f6;bner basis algorithm.  In
this algorithm, each polynomial that is to be put into the partial
list of the basis is first factored.  The remaining calculation is
split into as many parts as there are irreducible factors.  Call these
factors  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>1</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>p</mi><mi>n</mi></msub><mo>.</mo></mrow></mstyle></math> In the branches corresponding to  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>2</mn></msub><mo>,</mo><mo>&#x2026;</mo><mo>,</mo><msub><mi>p</mi><mi>n</mi></msub><mo>,</mo></mrow></mstyle></math> the factor  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mi>p</mi><mn>1</mn></msub></mrow></mstyle></math> can be divided out, and so on.  This
package also contains operations that allow you to specify the
polynomials that are not zero on the common roots of the final
Gr&#x00f6;bner basis.
</p>


<p>Here is an example from chemistry.  In a theoretical model of 
cyclohexane,  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><msub><mrow><mtext>C</mtext></mrow><mn>6</mn></msub><msub><mrow><mtext>H</mtext></mrow><mn>12</mn></msub></mrow></mstyle></math>, the six carbon atoms each sit in
the center of gravity of a tetrahedron that has two hydrogen atoms and
two carbon atoms at its corners.  We first normalize and set the
length of each edge to 1.  Hence, the distances of one fixed carbon
atom to each of its immediate neighbours is 1.  We will denote the
distances to the other three carbon atoms by  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>x</mi></mstyle></math>,  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>y</mi></mstyle></math> and  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>z</mi></mstyle></math>.
</p>


<p>A. Dress developed a theory to decide whether a set of points
and distances between them can be realized in an  <math xmlns="&mathml;" mathsize="big"><mstyle><mi>n</mi></mstyle></math>-dimensional space.
Here, of course, we have  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>n</mi><mo>=</mo><mn>3</mn></mrow></mstyle></math>.
</p>




<div id="spadComm9-73" class="spadComm" >
<form id="formComm9-73" action="javascript:makeRequest('9-73');" >
<input id="comm9-73" type="text" class="command" style="width: 105em;" value="mfzn : SQMATRIX(6,DMP([x,y,z],Fraction INT)) := [ [0,1,1,1,1,1], [1,0,1,8/3,x,8/3], [1,1,0,1,8/3,y], [1,8/3,1,0,1,8/3], [1,x,8/3,1,0,1], [1,8/3,y,8/3,1,0] ] " />
</form>
<span id="commSav9-73" class="commSav" >mfzn : SQMATRIX(6,DMP([x,y,z],Fraction INT)) := [ [0,1,1,1,1,1], [1,0,1,8/3,x,8/3], [1,1,0,1,8/3,y], [1,8/3,1,0,1,8/3], [1,x,8/3,1,0,1], [1,8/3,y,8/3,1,0] ] </span>
<div id="mathAns9-73" ></div>
</div>


<div class="math">
<table>
<tr><td>
<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>x</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mi>x</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mi>y</mi></mtd><mtd><mfrac><mn>8</mn><mn>3</mn></mfrac></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></mstyle></math>
</td></tr>
</table>
</div>




<div class="returnType">
Type: SquareMatrix(6,DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
</div>



<p>For cyclohexane the distances have to satisfy this equation.
</p>




<div id="spadComm9-74" class="spadComm" >
<form id="formComm9-74" action="javascript:makeRequest('9-74');" >
<input id="comm9-74" type="text" class="command" style="width: 16em;" value="eq := determinant mfzn " />
</form>
<span id="commSav9-74" class="commSav" >eq := determinant mfzn </span>
<div id="mathAns9-74" ></div>
</div>


<div class="math">
<table>
<tr><td>
<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mtable><mtr><mtd><mo>-</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo></mtd></mtr><mtr><mtd></mtd></mtr><mtr><mtd><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mfrac><mn>14575</mn><mn>81</mn></mfrac></mtd></mtr></mtable></mrow></mstyle></math>
</td></tr>
</table>
</div>




<div class="returnType">
Type: DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
</div>



<p>They also must satisfy the equations
given by cyclic shifts of the indeterminates.
</p>




<div id="spadComm9-75" class="spadComm" >
<form id="formComm9-75" action="javascript:makeRequest('9-75');" >
<input id="comm9-75" type="text" class="command" style="width: 53em;" value="groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])] " />
</form>
<span id="commSav9-75" class="commSav" >groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])] </span>
<div id="mathAns9-75" ></div>
</div>


<div class="math">
<table>
<tr><td>
<math xmlns="&mathml;" mathsize="big" display="block"><mstyle><mrow><mo>[</mo><mrow><mo>[</mo><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>121</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><mi>x</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>+</mo><mrow><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>250</mn><mn>27</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow></mrow><mo>-</mo><mrow><mfrac><mn>22</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>388</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mi>y</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mrow><mfrac><mn>25</mn><mn>9</mn></mfrac><mspace width="0.5 em" /><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow></mrow><mo>+</mo><mrow><mfrac><mn>250</mn><mn>27</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mfrac><mn>14575</mn><mn>81</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mi>y</mi><mo>-</mo><mfrac><mn>21994</mn><mn>5625</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><msup><mi>y</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>21994</mn><mn>5625</mn></mfrac><mspace width="0.5 em" /><mi>y</mi></mrow><mo>+</mo><mfrac><mn>4427</mn><mn>675</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>463</mn><mn>87</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi><mspace width="0.5 em" /><mi>z</mi></mrow><mo>-</mo><mrow><mfrac><mn>11</mn><mn>2</mn></mfrac><mspace width="0.5 em" /><mi>x</mi></mrow><mo>-</mo><mrow><mfrac><mn>5</mn><mn>6</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>265</mn><mn>18</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mi>z</mi></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mrow><msup><mi>z</mi><mn>2</mn></msup></mrow><mo>-</mo><mrow><mfrac><mn>38</mn><mn>3</mn></mfrac><mspace width="0.5 em" /><mi>z</mi></mrow><mo>+</mo><mfrac><mn>265</mn><mn>9</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>25</mn><mn>9</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>-</mo><mfrac><mn>11</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mo>[</mo><mrow><mi>x</mi><mo>-</mo><mfrac><mn>19</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>y</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>,</mo><mspace width="0.5 em" /><mrow><mi>z</mi><mo>+</mo><mfrac><mn>5</mn><mn>3</mn></mfrac></mrow><mo>]</mo></mrow><mo>]</mo></mrow></mstyle></math>
</td></tr>
</table>
</div>




<div class="returnType">
Type: List List 
DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
</div>



<p>The union of the solutions of this list is the solution of our
original problem.  If we impose positivity conditions, we get two
relevant ideals.  One ideal is zero-dimensional, namely  <math xmlns="&mathml;" mathsize="big"><mstyle><mrow><mi>x</mi><mo>=</mo><mi>y</mi><mo>=</mo><mi>z</mi><mo>=</mo><mn>11</mn><mo>/</mo><mn>3</mn></mrow></mstyle></math>, 
and this determines the ``boat'' form of cyclohexane.  The
other ideal is one-dimensional, which means that we have a solution
space given by one parameter.  This gives the ``chair'' form of 
cyclohexane.  The parameter describes the angle of the ``back of the
chair.''
</p>


<p><span class="spadfunFrom" >groebnerFactorize</span><span class="index">groebnerFactorize</span><a name="chapter-9-52"/><span class="index">GroebnerFactorizationPackage</span><a name="chapter-9-53"/> has an
optional <span class="teletype">Boolean</span>-valued second argument.  When it is <span class="teletype">true</span>
partial results are displayed, since it may happen that the
calculation does not terminate in a reasonable time.  See the source
code for <span class="teletype">GroebnerFactorizationPackage</span> in <span style="font-weight: bold;"> groebf.input</span> 
for more details about the algorithms used.
</p>




</div><a href="book-contents.xhtml" style="margin-right: 10px;">Book Contents</a>
<a href="section-9.30.xhtml" style="margin-right: 10px;">Previous Section 9.30 GeneralSparseTable</a><a href="section-9.32.xhtml" style="margin-right: 10px;">Next Section 9.32 Heap</a>
<a href="book-index.xhtml">Book Index</a></body>
</html>