@c $OpenXM: OpenXM/src/asir-contrib/packages/doc/Diff.texi,v 1.7 2001/06/24 01:14:21 takayama Exp $ @node Differential equations (library by Okutani),,, Top @section Differential equations (library by Okutani) ファイル @file{gr}, @file{Matrix} が必要です. Yukio Okutani 氏による Risa/Asir 言語で書かれた連立線形偏微分方程式用 のライブラリです. すべての関数名は odiff_ で始まります. @tex この節で紹介される関数では微分作用素はリストまたは多項式で表現されます. リストによる表現は次のようになります. $$ [ [f_{\alpha},[\alpha_{1},\ldots,\alpha_{n}]],\ldots ] $$ これは $$ \sum_{\alpha}f_{\alpha}\partial^{\alpha} $$ という意味です. 線型偏微分方程式系 $$ (\sum_{\alpha^{(i)}}f_{\alpha^{(i)}}\partial^{\alpha^{(i)}})\bullet u = 0 \quad (i = 1,\ldots,s) $$ などのように複数の微分作用素を表現するときは微分作用素のリストを使います. $$ [ [ [f_{\alpha^{(1)}},[\alpha_{1}^{(1)},\ldots,\alpha_{n}^{(1)}]],\ldots ],\ldots,[ [f_{\alpha^{(s)}},[\alpha_{1}^{(s)},\ldots,\alpha_{n}^{(s)}]],\ldots ] ] $$ 例えば微分作用素$x \partial_{x} + y \partial_{y} + 1$の場合は $$ [ [x,[1,0]],[y,[0,1]],[1,[0,0]] ] $$ となります. また微分作用素のリストで$x \partial_{x} + y \partial_{y} + 1, {\partial_{x}}^{2} + {\partial_{y}}^{2}$を表すと $$ [ [ [x,[1,0]],[y,[0,1]],[1,[0,0]] ],[ [1,[2,0]],[1,[0,2]] ] ] $$ となります. またこの表現法を使うときは変数リストを常に意識している必要があります. 次に多項式による表現について述べます. 変数$x$に対する微分は$dx$で表現されます. 例えば$x \partial_{x} + y \partial_{y} + 1$については $$ x*dx+y*dy+1 $$ と表現されます. @end tex @menu @c * odiff_op_hg1:: @c * odiff_op_appell1:: @c * odiff_op_appell2:: @c * odiff_op_appell3:: * odiff_op_appell4:: @c * odiff_op_selberg2:: @c * odiff_op_gkz:: * odiff_op_tosm1:: * odiff_op_toasir:: * odiff_op_fromasir:: * odiff_act:: @c * odiff_act_hg1:: @c * odiff_act_appell1:: @c * odiff_act_appell2:: @c * odiff_act_appell3:: * odiff_act_appell4:: @c * odiff_act_selberg2:: @c * odiff_act_gkz:: * odiff_poly_solve:: * odiff_poly_solve_hg1:: @c * odiff_poly_solve_appell1:: @c * odiff_poly_solve_appell2:: @c * odiff_poly_solve_appell3:: * odiff_poly_solve_appell4:: @c * odiff_poly_solve_selberg2:: @c * odiff_poly_solve_gkz:: * odiff_rat_solve:: @c * odiff_pseries_appell4:: @end menu @node odiff_op_appell4,,, Differential equations (library by Okutani) @subsection @code{odiff_op_appell4} @findex odiff_op_appell4 @table @t @item odiff_op_appell4(@var{a},@var{b},@var{c1},@var{c2},@var{V}) :: appell の F_4 を零化する微分作用素を生成します. @end table @table @var @item return リスト @item a, b, c1, c2 有理式 @item V リスト @end table @itemize @bullet @item @code{odiff_op_appell4}の例. @end itemize @example [298] odiff_op_appell4(a,b,c1,c2,[x,y]); [ [ [-x^2+x,[2,0]], [-2*y*x,[1,1]], [-y^2,[0,2]], [(-a-b-1)*x+c1,[1,0]], [(-a-b-1)*y,[0,1]], [-b*a,[0,0]] ], [ [-y^2+y,[0,2]], [-2*y*x,[1,1]], [-x^2,[2,0]], [(-a-b-1)*y+c2,[0,1]], [(-a-b-1)*x,[1,0]], [-b*a,[0,0]] ] ] @end example @node odiff_op_tosm1,,, Differential equations (library by Okutani) @subsection @code{odiff_op_tosm1} @findex odiff_op_tosm1 @table @t @item odiff_op_tosm1(@var{LL},@var{V}) :: リスト形式の微分作用素リストを sm1 形式に変換します. @end table @table @var @item return リスト @item LL リスト @item V リスト @end table @itemize @bullet @item 微分作用素の係数は整数多項式に変換されます. @item @code{odiff_op_tosm1}の例 @end itemize @example [299] odiff_op_tosm1([[[x,[2,0]],[-1,[0,0]]], [[y,[0,2]],[-1,[0,0]]]],[x,y]); [ + ( + (1) x) dx^2 + ( + (-1)), + ( + (1) y) dy^2 + ( + (-1))] [300] odiff_op_tosm1([[[x,[1,0]],[y,[0,1]],[1,[0,0]]], [[1,[2,0]],[1,[0,2]]]],[x,y]); [ + ( + (1) x) dx + ( + (1) y) dy + ( + (1)), + ( + (1)) dx^2 + ( + (1)) dy^2] [301] odiff_op_tosm1([[[1/2,[1,0]],[1,[0,0]]], [[1/3,[0,1]],[1/4,[0,0]]]],[x,y]); [ + ( + (6)) dx + ( + (12)), + ( + (4)) dy + ( + (3))] [302] odiff_op_tosm1([[[1/2*x,[1,0]],[1,[0,0]]], [[1/3*y,[0,1]],[1/4,[0,0]]]],[x,y]); [ + ( + (6) x) dx + ( + (12)), + ( + (4) y) dy + ( + (3))] @end example @node odiff_op_toasir,,, Differential equations (library by Okutani) @subsection @code{odiff_op_toasir} @findex odiff_op_toasir @table @t @item odiff_op_toasir(@var{LL},@var{V}) :: リスト形式の微分作用素リスト @var{LL} を @code{asir} の多項式に変換します. @end table @table @var @item return リスト @item LL リスト @item V リスト @end table @itemize @bullet @item @code{odiff_op_toasir}の例 @end itemize @example [303] odiff_op_toasir([[[1/2*x,[1,0]],[1,[0,0]]], [[1/3*y,[0,1]],[1/4,[0,0]]]],[x,y]); [1/2*x*dx+1,1/3*y*dy+1/4] [304] odiff_op_toasir([[[x,[1,0]],[y,[0,1]],[1,[0,0]]], [[1,[2,0]],[1,[0,2]]]],[x,y]); [x*dx+y*dy+1,dx^2+dy^2] @end example @node odiff_op_fromasir,,, Differential equations (library by Okutani) @subsection @code{odiff_op_fromasir} @findex odiff_op_fromasir @table @t @item odiff_op_fromasir(@var{D_list},@var{V}) :: @code{asir} の多項式からリスト形式の微分作用素リストに変換します. @end table @table @var @item return リスト @item D_list リスト @item V リスト @end table @itemize @bullet @item @code{odiff_op_fromasir}の例 @end itemize @example [305] odiff_op_fromasir([1/2*x*dx+1,1/3*y*dy+1/4],[x,y]); [[[1/2*x,[1,0]],[1,[0,0]]],[[1/3*y,[0,1]],[1/4,[0,0]]]] [306] odiff_op_fromasir([x*dx+y*dy+1,dx^2+dy^2],[x,y]); [[[x,[1,0]],[y,[0,1]],[1,[0,0]]],[[1,[2,0]],[1,[0,2]]]] @end example @node odiff_act,,, Differential equations (library by Okutani) @subsection @code{odiff_act} @findex odiff_act @table @t @item odiff_act(@var{L},@var{F},@var{V}) :: 微分作用素 @var{L} を有理式 @var{F} に作用させる. @var{V} は変数リスト. @end table @table @var @item return 有理式 @item L リスト or 多項式 @item F 有理式 @item V リスト @end table @itemize @bullet @item @code{odiff_act}の例 @end itemize @example [302] odiff_act([[1,[2]]],x^3+x^2+x+1,[x]); 6*x+2 [303] odiff_act([[1,[1,0]],[1,[0,1]]],x^2+y^2,[x,y]); 2*x+2*y [349] odiff_act(x*dx+y*dy, x^2+x*y+y^2, [x,y]); 2*x^2+2*y*x+2*y^2 @end example @node odiff_act_appell4,,, Differential equations (library by Okutani) @subsection @code{odiff_act_appell4} @findex odiff_act_appell4 @table @t @item odiff_act_appell4(@var{a},@var{b},@var{c1},@var{c2},@var{F},@var{V}) :: 微分作用素 @code{odiff_op_appell4} を有理式 @var{F} に作用させる. @end table @table @var @item return リスト @item a, b, c1, c2 有理式 @item F 有理式 @item V リスト @end table @itemize @bullet @item @code{odiff_act_appell4}の例 @end itemize @example [303] odiff_act_appell4(1,0,1,1,x^2+y^2,[x,y]); [-6*x^2+4*x-6*y^2,-6*x^2-6*y^2+4*y] [304] odiff_act_appell4(0,0,1,1,x^2+y^2,[x,y]); [-4*x^2+4*x-4*y^2,-4*x^2-4*y^2+4*y] [305] odiff_act_appell4(-2,-2,-1,-1,x^2+y^2,[x,y]); [0,0] @end example @node odiff_poly_solve,,, Differential equations (library by Okutani) @subsection @code{odiff_poly_solve} @findex odiff_poly_solve @table @t @item odiff_poly_solve(@var{LL},@var{N},@var{V}) :: 与えられた線型微分方程式系の @var{N} 次以下の多項式解を求める. @end table @table @var @item return リスト @item LL リスト @item N 整数 @item V リスト @end table @itemize @bullet @item @code{odiff_poly_solve}の例. @end itemize @example [297] odiff_poly_solve([[[x,[1,0]],[-1,[0,0]]],[[y,[0,1]],[-1,[0,0]]]],5,[x,y]); [_4*y*x,[_4]] [298] odiff_poly_solve([[[x,[1,0]],[-2,[0,0]]],[[y,[0,1]],[-2,[0,0]]]],5,[x,y]); [_33*y^2*x^2,[_33]] [356] odiff_poly_solve([x*dx+y*dy-3,dx+dy],4,[x,y]); [-_126*x^3+3*_126*y*x^2-3*_126*y^2*x+_126*y^3,[_126]] @end example @node odiff_poly_solve_hg1,,, Differential equations (library by Okutani) @subsection @code{odiff_poly_solve_hg1} @findex odiff_poly_solve_hg1 @table @t @item odiff_poly_solve_hg1(@var{a},@var{b},@var{c},@var{V}) :: ガウスの超幾何微分方程式の多項式解を求める. @end table @table @var @item return リスト @item a, b, c 有理式 @item V リスト @end table @itemize @bullet @item @code{odiff_poly_solve_hg1}の例. @end itemize @example [334] odiff_poly_solve_hg1(-3,-6,-5,[x]); [_1*x^6-2*_0*x^3+9/2*_0*x^2-18/5*_0*x+_0,[_0,_1]] [335] odiff_poly_solve_hg1(-3,-6,-7,[x]); [-4/7*_2*x^3+15/7*_2*x^2-18/7*_2*x+_2,[_2]] @end example @node odiff_poly_solve_appell4,,, Differential equations (library by Okutani) @subsection @code{odiff_poly_solve_appell4} @findex odiff_poly_solve_appell4 @table @t @item odiff_poly_solve_appell4(@var{a},@var{b},@var{c1},@var{c2},@var{V}) :: F_4がみたす線型微分方程式系の多項式解を求める. @end table @table @var @item return リスト @item a, b, c1, c2 有理式 @item V リスト @end table @itemize @bullet @item @code{odiff_poly_solve_appell4}の例. @end itemize @example [299] odiff_poly_solve_appell4(-3,1,-1,-1,[x,y]); [-_26*x^3+(3*_26*y+_26)*x^2+3*_24*y^2*x-_24*y^3+_24*y^2,[_24,_26]] [300] odiff_poly_solve_appell4(-3,1,1,-1,[x,y]); [-3*_45*y^2*x-_45*y^3+_45*y^2,[_45]] @end example @node odiff_rat_solve,,, Differential equations (library by Okutani) @subsection @code{odiff_rat_solve} @findex odiff_rat_solve @table @t @item odiff_rat_solve(@var{LL},@var{Dn},@var{N},@var{V}) :: 与えられた線型微分方程式系の分母が @var{Dn}, 分子が @var{N} 次以下の多項式であるような解を求める. @end table @table @var @item return リスト @item LL リスト @item Dn 有理式 @item N 整数 @item V リスト @end table @itemize @bullet @item @code{odiff_rat_solve}の例. @end itemize @example [333] odiff_rat_solve([[[x,[1]],[1,[0]]]],x,1,[x]); [(_8)/(x),[_8]] [361] odiff_rat_solve([x*(1-x)*dx^2+(1-3*x)*dx-1],1-x,2,[x]); [(_180)/(-x+1),[_180]] [350] D = odiff_op_appell4(0,0,3,0,[x,y])$ [351] odiff_rat_solve(D,x^2,2,[x,y]); [(_118*x^2-_114*y*x+1/2*_114*y^2+_114*y)/(x^2),[_114,_118]] @end example