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