Differential equations (library by Okutani)
*******************************************

ファイル gr, Matrix, Diff が必要です.

OpenXM/Risa/Asir での利用にあたっては,

     load("Diff")$

が始めに必要.

Yukio Okutani 氏による Risa/Asir 言語で書かれた連立線形偏微分方程式用のライブラリです. すべての関数名は odiff_ で始まります.

odiff_op_appell4
----------------

odiff_op_appell4(A,B,C1,C2,V)
     ::  appell の F_4 を零化する微分作用素を生成します.

return
     リスト

a, b, c1, c2
     有理式

V
     リスト

  * odiff_op_appell4の例.

     [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]] ] ]

odiff_op_tosm1
--------------

odiff_op_tosm1(LL,V)
     ::  リスト形式の微分作用素リストを sm1 形式に変換します.

return
     リスト

LL
     リスト

V
     リスト

  * 微分作用素の係数は整数多項式に変換されます.

  * odiff_op_tosm1の例

     [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))]

odiff_op_toasir
---------------

odiff_op_toasir(LL,V)
     ::  リスト形式の微分作用素リスト LL を asir の多項式に変換します.

return
     リスト

LL
     リスト

V
     リスト

  * odiff_op_toasirの例

     [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]

odiff_op_fromasir
-----------------

odiff_op_fromasir(D_LIST,V)
     ::  asir の多項式からリスト形式の微分作用素リストに変換します.

return
     リスト

D_list
     リスト

V
     リスト

  * odiff_op_fromasirの例

     [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]]]]

odiff_act
---------

odiff_act(L,F,V)
     ::  微分作用素 L を有理式 F に作用させる. V は変数リスト.

return
     有理式

L
     リスト or 多項式

F
     有理式

V
     リスト

  * odiff_actの例

     [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

odiff_act_appell4
-----------------

odiff_act_appell4(A,B,C1,C2,F,V)
     ::  微分作用素 odiff_op_appell4 を有理式 F に作用させる.

return
     リスト

a, b, c1, c2
     有理式

F
     有理式

V
     リスト

  * odiff_act_appell4の例

     [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]

odiff_poly_solve
----------------

odiff_poly_solve(LL,N,V)
     ::  与えられた線型微分方程式系の N 次以下の多項式解を求める.

return
     リスト

LL
     リスト

N
     整数

V
     リスト

  * odiff_poly_solveの例.

     [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]]

odiff_poly_solve_hg1
--------------------

odiff_poly_solve_hg1(A,B,C,V)
     ::  ガウスの超幾何微分方程式の多項式解を求める.

return
     リスト

a, b, c
     有理式

V
     リスト

  * odiff_poly_solve_hg1の例.

     [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]]

odiff_poly_solve_appell4
------------------------

odiff_poly_solve_appell4(A,B,C1,C2,V)
     ::  F_4がみたす線型微分方程式系の多項式解を求める.

return
     リスト

a, b, c1, c2
     有理式

V
     リスト

  * odiff_poly_solve_appell4の例.

     [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]]

odiff_rat_solve
---------------

odiff_rat_solve(LL,DN,N,V)
     ::  与えられた線型微分方程式系の分母が DN, 分子が N 次以下の多項式であるような解を求める.

return
     リスト

LL
     リスト

Dn
     有理式

N
     整数

V
     リスト

  * odiff_rat_solveの例.

     [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]]