[BACK]Return to dsolv.oxweave CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / doc

Annotation of OpenXM/src/asir-contrib/packages/doc/dsolv.oxweave, Revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>