Annotation of OpenXM/src/asir-contrib/packages/doc/dsolv.oxweave, Revision 1.3
1.3 ! takayama 1: /* $OpenXM: OpenXM/src/asir-contrib/packages/doc/dsolv.oxweave,v 1.2 2000/02/07 04:46:25 takayama Exp $ */
1.1 takayama 2: /* dsolv.oxweave */
3: /*&eg-texi
4: @node DSOLV Functions,,, Top
5:
6: @chapter DSOLV Functions
7:
8: This section is a collection of functions to solve regular holonomic
9: systems in terms of series.
10: Algorithms are explained in the book [SST].
11: You can load this package by the command
1.3 ! takayama 12: @code{load("dsolv")$}
1.1 takayama 13: This package requires @code{Diff} and @code{dmodule}.
14:
1.3 ! takayama 15: To use the functions of the package @code{dsolv} in OpenXM/Risa/Asir,
! 16: executing the command @code{load("dsolv")$}
! 17: is necessary at first.
! 18:
! 19:
1.1 takayama 20: This package uses @code{ox_sm1}, so the variables you can use
21: is as same as those you can use in the package @code{sm1}.
22:
23: @section Functions
24:
25: */
26:
27: /*&jp-texi
28: @node DSOLV $BH!?t(B,,, Top
29:
30: @chapter DSOLV $BH!?t(B
31:
32: $B$3$N@a$O@5B'%[%m%N%_%C%/7O$r5i?t$G2r$/$?$a$N(B
33: $BH!?t$r$"$D$a$F$"$k(B.
34: $B%"%k%4%j%:%`$K$D$$$F$O(B [SST] $B$K@bL@$,$"$k(B.
35: $B$3$N%Q%C%1!<%8$O<!$N%3%^%s%I(B @code{load("dsolv");}
36: $B$G%m!<%I$G$-$k(B.
1.3 ! takayama 37: $B$3$N%Q%C%1!<%8$O(B @code{Diff} $B$*$h$S(B @code{Dmodule} $B$r;HMQ$9$k(B.
! 38:
! 39: OpenXM/Risa/Asir $B$G$NMxMQ$K$"$?$C$F$O(B,
! 40: @example
! 41: load("dsolv");$
! 42: @end example
! 43: $B$,;O$a$KI,MW(B.
1.1 takayama 44:
45: $B$3$N%Q%C%1!<%8$O(B @code{ox_sm1} $B$rMxMQ$7$F$$$k(B.
46: $B$7$?$,$C$F;HMQ$G$-$kJQ?t$O(B @code{sm1} $B%Q%C%1!<%8$HF1MM$NJQ?t$7$+$D$+$($J$$(B.
47:
1.2 takayama 48: @section $BH!?t0lMw(B
1.1 takayama 49:
50: */
51:
52: /*&eg-texi
53: @menu
54: * dsolv_dual::
55: @end menu
56: @node dsolv_dual,,, DSOLV Functions
57: @subsection @code{dsolv_dual}
58: @findex dsolv_dual
59: @table @t
60: @item dsolv_dual(@var{f},@var{v})
61: :: Grobner dual of @var{f}.
62: @end table
63:
64: @table @var
65: @item return
66: List
67: @item f, v
68: List
69: @end table
70:
71: @itemize @bullet
72: @item It returns the Grobner dual of @var{f} in the ring of polynomials
73: with variables @var{v}.
74: @item The ideal generated by @var{f} must be primary to the maximal ideal
75: generated by @var{v}.
76: If it is not primary to the maximal ideal, then this function falls into
77: an infinite loop.
1.3 ! takayama 78: @end itemize
! 79:
! 80:
! 81: @noindent
! 82: Algorithm:
! 83: This is an implementation of Algorithm 2.3.14 of the book [SST].
1.1 takayama 84: If we replace variables x, y, ... in the output by log(x), log(y), ...,
85: then these polynomials in log are solutions of the system of differential
1.2 takayama 86: equations @var{f}@code{_(x->x*dx, y->y*dy, ...)}.
1.3 ! takayama 87:
1.1 takayama 88: */
89:
90: /*&jp-texi
91: @menu
92: * dsolv_dual::
93: @end menu
94: @node dsolv_dual,,, DSOLV $BH!?t(B
95: @subsection @code{dsolv_dual}
96: @findex dsolv_dual
97: @table @t
98: @item dsolv_dual(@var{f},@var{v})
99: :: @var{f} $B$N%0%l%V%JAPBP(B
100: @end table
101:
102: @table @var
103: @item $BLa$jCM(B
104: $B%j%9%H(B
105: @item f, v
106: $B%j%9%H(B
107: @end table
108:
109: @itemize @bullet
110: @item $BJQ?t(B @var{v} $B>e$NB?9`<04D$K$*$$$F(B,
111: @var{f} $B$N%0%l%V%JAPBP$r5a$a$k(B.
112: @item @var{f} $B$G@8@.$5$l$k%$%G%"%k$O(B, @var{v} $B$G@8@.$5$l$k6KBg%$%G%"%k$K(B
113: $BBP$7$F(B, primary $B$G$J$$$H$$$1$J$$(B.
114: primary $B$G$J$$>l9g(B, $B$3$NH!?t$OL58B%k!<%W$K$*$A$$$k(B.
1.3 ! takayama 115: @end itemize
! 116:
! 117: @noindent
! 118: Algorithm:
! 119: $B$3$NH!?t$OK\(B [SST] $B$N(B Algorithm 2.3.14 $B$N<BAu$G$"$k(B.
1.1 takayama 120: $B=PNOCf$NJQ?t(B x, y, ... $B$r$=$l$>$l(B log(x), log(y), ..., $B$G$*$-$+$($k$H(B,
121: $B$3$l$i$N(B log $BB?9`<0$O(B,
1.2 takayama 122: @var{f}@code{_(x->x*dx, y->y*dy, ...)}
123: $B$G@8@.$5$l$kHyJ,J}Dx<07O(B
1.1 takayama 124: $B$N2r$H$J$C$F$$$k(B.
125: */
126:
127: /*&C-texi
128:
129: @example
130:
131:
132: [435] dsolv_dual([y-x^2,y+x^2],[x,y]);
133: [x,1]
134: [436] dsolv_act(y*dy-sm1_mul(x*dx,x*dx,[x,y]),log(x),[x,y]);
135: 0
136: [437] dsolv_act(y*dy+sm1_mul(x*dx,x*dx,[x,y]),log(x),[x,y]);
137: 0
138:
139: [439] primadec([y^2-x^3,x^2*y^2],[x,y]);
140: [[[y^2-x^3,y^4,x^2*y^2],[y,x]]]
141: [440] dsolv_dual([y^2-x^3,x^2*y^2],[x,y]);
142: [x*y^3+1/4*x^4*y, x^2*y, x*y^2+1/12*x^4, y^3+x^3*y,
143: x^2, x*y, y^2+1/3*x^3, x, y, 1]
144:
145: [441] dsolv_test_dual();
146: Output is omitted.
147:
148: @end example
149:
150: */
151:
152:
153: /*&eg-texi
154:
155: @menu
156: * dsolv_starting_term::
157: @end menu
158: @node dsolv_starting_term,,, DSOLV Functions
159: @subsection @code{dsolv_starting_term}
160: @findex dsolv_starting_term
161: @table @t
162: @item dsolv_starting_term(@var{f},@var{v},@var{w})
163: :: Find the starting term of the solutions of
164: the regular holonomic system @var{f}
165: to the direction @var{w}.
166: @end table
167:
168: @table @var
169: @item return
170: List
171: @item f, v, w
172: List
173: @end table
174:
175: @itemize @bullet
176: @item Find the starting term of the solutions of
177: the regular holonomic system @var{f}
178: to the direction @var{w}.
179: @item The return value is of the form
180: [[@var{e1}, @var{e2}, ...],
181: [@var{s1}, @var{s2}, ...]]
182: where @var{e1} is an exponent vector and @var{s1} is the corresponding
183: solution set, and so on.
184: @item If you set @code{Dsolv_message_starting_term} to 1,
185: then this function outputs messages during the computation.
186: @end itemize
187:
188: */
189:
190: /*&jp-texi
191:
192: @menu
193: * dsolv_starting_term::
194: @end menu
195: @node dsolv_starting_term,,, DSOLV $BH!?t(B
196: @subsection @code{dsolv_starting_term}
197: @findex dsolv_starting_term
198: @table @t
199: @item dsolv_starting_term(@var{f},@var{v},@var{w})
200: :: $B@5B'%[%m%N%_%C%/7O(B @var{f} $B$NJ}8~(B @var{w} $B$G$N5i?t2r$N(B
201: Staring terms $B$r7W;;$9$k(B. $B$3$3$G(B, @var{v} $B$OJQ?t$N=89g(B.
202: @end table
203:
204: @table @var
205: @item $BLa$jCM(B
206: $B%j%9%H(B
207: @item f, v, w
208: $B%j%9%H(B
209: @end table
210:
211: @itemize @bullet
212: @item $B@5B'%[%m%N%_%C%/7O(B @var{f} $B$NJ}8~(B @var{w} $B$G$N5i?t2r$N(B
213: Staring terms $B$r7W;;$9$k(B. $B$3$3$G(B, @var{v} $B$OJQ?t$N=89g(B.
214: @item $BLa$jCM$O<!$N7A$r$7$F$$$k(B:
215: [[@var{e1}, @var{e2}, ...],
216: [@var{s1}, @var{s2}, ...]]
217: $B$3$3$G(B @var{e1} $B$O(B exponent $B%Y%/%H%k$G$"$j(B @var{s1} $B$O$3$N%Y%/%H%k$K(B
218: $BBP1~$9$k2r$N=89g(B, $B0J2<F1MM(B.
219: @item $BJQ?t(B @code{Dsolv_message_starting_term} $B$r(B 1 $B$K$7$F$*$/$H(B,
220: $B$3$NH!?t$O7W;;$NESCf$K$$$m$$$m$H%a%C%;!<%8$r=PNO$9$k(B.
221: @end itemize
222:
1.3 ! takayama 223:
1.1 takayama 224: */
225:
226: /*&C-texi
1.3 ! takayama 227:
! 228: @noindent
! 229: Algorithm: Saito, Sturmfels, Takayama, Grobner Deformations of Hypergeometric
! 230: Differential Equations ([SST]), Chapter 2.
! 231:
1.1 takayama 232:
233: @example
234: [1076] F = sm1_gkz( [ [[1,1,1,1,1],[1,1,0,-1,0],[0,1,1,-1,0]], [1,0,0]]);
235: [[x5*dx5+x4*dx4+x3*dx3+x2*dx2+x1*dx1-1,-x4*dx4+x2*dx2+x1*dx1,
236: -x4*dx4+x3*dx3+x2*dx2,
237: -dx2*dx5+dx1*dx3,dx5^2-dx2*dx4],[x1,x2,x3,x4,x5]]
238: [1077] A= dsolv_starting_term(F[0],F[1],[1,1,1,1,0])$
239: Computing the initial ideal.
240: Done.
241: Computing a primary ideal decomposition.
242: Primary ideal decomposition of the initial Frobenius ideal
243: to the direction [1,1,1,1,0] is
244: [[[x5+2*x4+x3-1,x5+3*x4-x2-1,x5+2*x4+x1-1,3*x5^2+(8*x4-6)*x5-8*x4+3,
245: x5^2-2*x5-8*x4^2+1,x5^3-3*x5^2+3*x5-1],
246: [x5-1,x4,x3,x2,x1]]]
247:
248: ----------- root is [ 0 0 0 0 1 ]
249: ----------- dual system is
250: [x5^2+(-3/4*x4-1/2*x3-1/4*x2-1/2*x1)*x5+1/8*x4^2
251: +(1/4*x3+1/4*x1)*x4+1/4*x2*x3-1/8*x2^2+1/4*x1*x2,
252: x4-2*x3+3*x2-2*x1,x5-x3+x2-x1,1]
253:
254: [1078] A[0];
255: [[ 0 0 0 0 1 ]]
256: [1079] map(fctr,A[1][0]);
257: [[[1/8,1],[x5,1],[log(x2)+log(x4)-2*log(x5),1],
258: [2*log(x1)-log(x2)+2*log(x3)+log(x4)-4*log(x5),1]],
259: [[1,1],[x5,1],[-2*log(x1)+3*log(x2)-2*log(x3)+log(x4),1]],
260: [[1,1],[x5,1],[-log(x1)+log(x2)-log(x3)+log(x5),1]],
261: [[1,1],[x5,1]]]
262:
263: @end example
264:
265: */
266:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>