Annotation of OpenXM/src/asir-contrib/packages/doc/dsolv/dsolv.oxw, Revision 1.1
1.1 ! takayama 1: /* $OpenXM$ */
! 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]
! 138: [436] dsolv_act(y*dy-sm1_mul(x*dx,x*dx,[x,y]),log(x),[x,y]);
! 139: 0
! 140: [437] dsolv_act(y*dy+sm1_mul(x*dx,x*dx,[x,y]),log(x),[x,y]);
! 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
! 232: [1076] F = sm1_gkz( [ [[1,1,1,1,1],[1,1,0,-1,0],[0,1,1,-1,0]], [1,0,0]]);
! 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>