[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8 その他(未分類)


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.1 tk_pfn.rkn

tk_pfn.rkn(F,X,Y,Xs,Ys,Ht,H)

:: Pfaffian 方程式に対する Runge-Kutta 法

return

リスト 独立変数と解の組

F, X, Y, Xs, Ys, Ht, H

F は Pfaffian 方程式の係数行列リスト. X は独立変数リスト. Y は従属変数リスト. Xs 独立変数の出発値リスト. Ys は出発時の従属変数の値リスト. Xt は停止する独立変数の値リスト. H は微少数.

[1355] import("tk_pfn.rr");
[1590]  tk_pfn.test1();
Value at (3,0.1)[8.99,6,-0.2]
Value at (1,3)[-8,2,-6]
[[[1,3],-8,2,-6],
 [[1,2.9],-7.41,2,-5.8],
 --- snip ---
 [[3,0.1],8.99,6,-0.2]]

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.2 tk_pfn.graph

tk_pfn.graph(Pf,Dom,Iv,Step)

:: 2変数 Pfaffian 方程式を Runge-Kutta 法で解いてグラフ表示する.

return

リスト リストの要素は以下の形式 [[xの値,yの値],Y_1の値,Y_2の値, ...]. [xの値, yの値] は [0,0],[0.2,0],[0.4,0], ... , [0,0.2],[0.2,0.2], ... のように y の値が外側ループ, x の値が内側ループの形式で増える.

Pf, Dom, Iv, Step

Pf は Pfaffian 方程式の係数行列リスト. 独立変数は x, y で固定. Dom リスト. 解くべき領域. Iv リスト. 領域の左端での初期値. Step 刻み幅.

[1355] import("tk_pf2.rr"); import("mt_graph.rr"); import("tk_pfn.rr");
[1590] tk_pfn.testgraph1();

ここで testgraph1() は以下のとおり. 
def testgraph1() {
  /* tk_bess2.bess2pf(1/2); */
  Pf=  [[[ 0, (1)/(x), 0 ],
         [ -x, (2*x^2+1)/(x), -2*x ],
         [ -y, 0, 0 ]],
        [[ 0, 0, (1)/(y) ],
         [ -x, 0, 0 ],
         [ -x, (1/2)/(x), (-1/2)/(y) ]]];
  /* tk_bess2.bess2Iv(1/2,[0.5,1.5]); */
  Iv = [0.105994,-0.651603,-0.760628];
  Dom=[[0.5,1.5],[1.5,9]];
  Step = 0.5;
  return tk_pfn.graph(Pf,Dom,Iv,Step | fit=1);  



ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.3 tk_rk.runge_kutta_4

tk_rk.runge_kutta_4(Eq,X,Y,X0,Y0,Terminal,Step)

:: 4次の Runge-Kutta 法による微分方程式の数値近似解

return

リスト リストの要素は以下の形式 [Xの値,Y_1の値,Y_2の値, ...]. X の値は減っていく. よってリストの先頭が Terminal 付近での Y の値.

Eq, X, Y, Step

Eq は 方程式の右辺. リスト. Y[0]’=Eq[0], Y[1]’=Eq[1], ... である. X 独立変数名. Y リスト. 従属変数のリスト. Step 刻み幅.

X0, Y0, Terminal

X0 出発点の X の値. Y0 出発点での Y の初期値. Terminal X の終着点.

[1355] import("taka_runge_kutta.rr");
[1590] tk_rk.test4();

ここで test4() は以下のとおり. 振動の方程式, y0'=y1, y1'=-y0 (y0''+y0=0). 答は y0=cos(x)
taka_plot_auto は下方向で y が正.

def test4() {
  A=runge_kutta_4([y1,-y0],x,[y0,y1],0,[1,0],3.14*2,0.1);
  taka_plot_auto(A);
  return(A);


ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.4 tk_rk.runge_kutta_4_linear

tk_rk.runge_kutta_4_linear(P,X,Y,X0,Y0,Terminal,Step)

:: 4次の Runge-Kutta 法による微分方程式の数値近似解. 線形方程式専用.

return

リスト リストの要素は以下の形式 [Xの値,Y_1の値,Y_2の値, ...]. X の値は減っていく. よってリストの先頭が Terminal 付近での Y の値.

P, X, Y, Step

P は 方程式の右辺. リスト. Y’=P Y である. 従属変数 Y は不要. X 独立変数名. Y リスト. 従属変数のリスト. 従属変数は自動生成される. 使われていないので空リストでよい. Step 刻み幅.

X0, Y0, Terminal

X0 出発点の X の値. Y0 出発点での Y の初期値. Terminal X の終着点.

[1355] import("taka_runge_kutta.rr");
[1590] A=tk_rk.runge_kutta_4_linear([[0,1],[-1,0]],x,[ ], 0, [1,0], 3.14*2, 0.1);
[1591] taka_plot_auto(A);

振動の方程式, y0'=y1, y1'=-y0 (y0''+y0=0). 答は y0=cos(x) を解いている.
taka_plot_auto は下方向で y が正.

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.5 fj_simp.simplify

fj_simp.simplify(arg1)

:: arg1 を簡単化する.

return

多項式, 有理式 または quote

arg1

多項式 または 有理式

load("fj_simplify.rr");
[1434] simplify((x^(1/2))^3);
((x)^(3/2))
[1435] simplify((2^(1/2))^2);
2
[1436] simplify((2+2^(1/2))^3);
14*((2)^(1/2))+20
[1437] simplify(exp(x)*exp(-x+y));
((@e)^(y))
参照

@ref{quote}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.6 tk_jack.zonal

tk_jack.zonel(p,n)

:: 分割 p に対する n 変数の zonal 多項式を出力する.

return

多項式. x_1, x_2, ... が変数.

p

数のリスト. p=[p0,p1,...] の時 p0>=p1>=...>0.

n

自然数

load("tk_jack.rr");
[1434] tk_jack.zonal([3,2,1],3);
(112*x_3*x_2^2+112*x_3^2*x_2)*x_1^3+(112*x_3*x_2^3+168*x_3^2*x_2^2+112*x_3^3*x_2)*x_1^2+(112*x_3^2*x_2^3+112*x_3^3*x_2^2)*x_1
[1435] tk_jack.zonal([1,1],3);
(2*x_2+2*x_3)*x_1+2*x_3*x_2
[1436]  tk_jack.jack([1,1],3,2);
(2*x_2+2*x_3)*x_1+2*x_3*x_2
参照

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.7 ot_hgm_ahg.cbase

cbase(A)

:: A で定義される A-超幾何方程式系の Pfaffian の基底を求める.

return

Pfaffianの基底(微分作用素のモノミアル)のリスト

A

整数を成分とする行列 (maximal rank のもの)を表すリスト

[2190] import("ot_hgm_ahg.rr");
1
[2191] ot_hgm_ahg.cbase([[1,1,1,1],[0,1,2,3]]);
We use a probabilistic algorithm to determine the base.[dx2^2,dx3*dx2,dx3^2]

[dx3,dx4,1]
参照

@ref{get_mat2}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.8 ot_hgm_ahg.get_mat2

get_mat2(A,W,Std,Mset)

:: A で定義される A-超幾何方程式系 H_A の Pfaffian の基底を求めるための Sylvester 法 を適用するための行列を生成する.

return

リスト

A

整数を成分とする行列 (maximal rank のもの)を表すリスト

W

リスト. toric ideal のグレブナー基底を計算するための weight vector. 多分なんでもいいはず.

Std

リスト. Pfaffian の基底. cbase(A) の出力を用いる.

Mset

Sylvester 型行列を作るための微分作用素のモノミアルのリスト.

[2190] import("ot_hgm_ahg.rr");
1
[2191] A=[[1,1,1,1],[0,1,2,3]]$
Std=ot_hgm_ahg.cbase(A)$
W=[[dx1,1,dx2,1,dx3,1,dx4,1]]$
Mset=[1,dx1,dx2,dx3,dx4]$
[2192] ot_hgm_ahg.get_mat2(A,W,Std,Mset);

省略
参照

@ref{cbase}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.9 ot_hgm_ahg.hgm_ahg_contiguity

hgm_ahg_contiguity(A,StdMon,Line,X0,InitVal,Start,End)

:: A で定義される A-超幾何方程式系のcontiguity relation を Sylvester matrix を用いて計算し, それを用いて超幾何関数の値を求める.

return

基底を超幾何関数に作用させたベクトルの値 F(End;X0) ??

A

整数を成分とする行列 (maximal rank のもの)を表すリスト.

StdMon

リスト. Pfaffian の基底を与える微分作用素のモノミアルのリスト.

Line

リスト [ContiDir,Beta,Z].

X0

リスト. x 変数の値.

InitVal

リスト. 基底を超幾何関数に作用させたベクトルの初期値 F(Start;X0)

Start

リスト. Z パラメータの初期値??

End

リスト. Z パラメータの終端値??

[2190] import("ot_hgm_ahg.rr");
1
[2191] ot_hgm_ahg.test_fd_conti();
(Todo, 引数がどうなるかの例を加える.)
参照

@ref{get_mat2} @ref{hgm_ahg_expected_value_contiguity} @ref{hgm_ahg}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.10 tk_hgpoly.optip

hgpoly.optip(A,B,W)

:: 整数計画問題をグレブナー基底を用いて解く.

return

リスト.

A

非負整数を成分とする行列 (maximal rank のもの)を表すリスト

B

非負整数を成分とするベクトルを表すリスト

W

非負整数を成分とするベクトルを表すリスト

[0] import("tk_hgpoly.rr");
[2191] tk_hgpoly.optip([[1,1,1,1],[0,1,2,3]],[20,40],[1,1,1,0]);
[6,1,0,13]
参照

@ref{feasible}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.11 tk_hgpoly.hgpoly

hgpoly.hgpoly(A,B)

:: A, B で定義される超幾何多項式を計算する.

return

リスト.

A

非負整数(todo, 再度確認)を成分とする行列 (maximal rank のもの)を表すリスト

B

非負整数を成分とするリスト.

[0] import("tk_hgpoly.rr");
[2191] tk_hgpoly.hgpoly([[1,1,1,1],[0,1,2,3]],[2,2]);
[x_3*x_1+1/2*x_2^2,(1/2)*<<0,2,0,0>>+(1)*<<1,0,1,0>>]

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.12 tk_fd.abc2ahg

tk_fd.abc2ahg(A,B,C)

:: F_D(A, B,C) を解にもつ A-超幾何方程式系を求める.

return

リスト.

A

B

数のリスト

C

[2191] tk_fd.abc2ahg(-3,[-4,-5],3);

[[[0,0,0,1,1,1],[1,0,0,1,0,0],[0,1,0,0,1,0],[0,0,1,0,0,1]],[11,5,4,5]]
参照

@ref{abc2marginal} @ref{marginal2abc}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.13 tk_fd.ahvec_abc

tk_fd.ahvec_abc(A,B,C,Y | all=1)

:: abc2marginal(A, B,C) を周辺和にもつ (2,m+1) 分割表全体についての正規化定数 Z, および Z の変数 Y[1][0], ..., Y[1][m] (2番目の行)についての偏微分を計算する.

return

リスト Ans

A

B

数のリスト. 長さは m.

C

Y

(2,m+1) 変数値をあらわすリストのリスト.

[2449] marginal2abc([3,12],[6,3,3,3]);
[-3,[-3,-3,-3],4]

[2450] tk_fd.ahvec_abc(-3,[-3,-3,-3],4,[[1,1/2,1/3,1/4],[1,1,1,1]]);
[[ 24041/1152 143551/11520 16973/1280 78827/5760 ],1/7776]

[2451] expectation_abc(-3,[-3,-3,-3],4,[[1,1/2,1/3,1/4],[1,1,1,1]]);
[721230/173593,430653/173593,458271/173593,67566/24799]
参照

@ref{expectation_abc}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.14 pari, setbprec,setround,todouble,mpfr_gamma,mpfr_floor,mpfr_round,

pari(arg1,arg2,...)

:: MPFR で pari の関数を emulate するか ox_pari サーバーを呼び出す.

setbprec(arg1)
setround(arg1)

丸めの方法の指定. mpfr 準拠.

todouble(arg1)

:: bigfloat 型を double に変換する.

mpfr_gamma(arg1)

:: gamma 関数の計算.

mpfr_floor(arg1)

:: floor の計算.

mpfr_round(arg1)

:: 丸めの計算.

return

後述.

arg1, arg2

後述.

[219] ctrl("bigfloat",1)$
[220] setprec(100)$
[221] pari(floor,1111111111111.1+1/10);
1111111111111
参照

pari, setbprec,setround,todouble,mpfr_gamma,mpfr_floor,mpfr_round,

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8.15 xyz_pqr, syz_stu

xyz_pqr(arg1,arg2[,flag])
xyz_stu(arg1,arg2)

:: xyz に関する操作.

return

整数

arg1, arg2

整数

flag

0 または 1

[219] xyz_pqr(1,2);
3
[220] xyz_pqr(1,2,1);
3
0
[221] xyz_stu(1,2);
3
参照

@ref{xyz_abc}

ChangeLog


[ << ] [ < ] [ Up ] [ > ] [ >> ]

This document was generated on October 24, 2017 using texi2html 5.0.