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

Diff for /OpenXM/src/asir-contrib/packages/doc/gtt_ekn/gtt_ekn-ja.texi between version 1.6 and 1.10

version 1.6, 2017/03/30 06:16:36 version 1.10, 2019/02/14 05:46:51
Line 1 
Line 1 
 %% $OpenXM: OpenXM/src/asir-contrib/packages/doc/gtt_ekn/gtt_ekn-ja.texi,v 1.5 2017/03/03 12:02:32 takayama Exp $  %% $OpenXM: OpenXM/src/asir-contrib/packages/doc/gtt_ekn/gtt_ekn-ja.texi,v 1.9 2019/02/14 02:22:09 takayama Exp $
 %% ptex -kanji=utf8 gtt_ekn.texi   (.texi までつける. platex でなく ptex)  %% xetex gtt_ekn.texi   (.texi までつける. )
 %% 以下コメントは @comment で始める.  \input texinfo 以降は普通の tex 命令は使えない.  %% 以下コメントは @comment で始める.  \input texinfo 以降は普通の tex 命令は使えない.
 \input texinfo  \input texinfo-ja
 @iftex  @iftex
 @catcode`@#=6  @catcode`@#=6
 @def@fref#1{@xrefX[#1,,@code{#1},,,]}  @def@fref#1{@xrefX[#1,,@code{#1},,,]}
 @def@b#1{{@bf@gt #1}}  @def@b#1{{@bf #1}}
 @catcode`@#=@other  @catcode`@#=@other
 @end iftex  @end iftex
 @overfullrule=0pt  @overfullrule=0pt
   @documentlanguage ja
 @c -*-texinfo-*-  @c -*-texinfo-*-
 @comment %**start of header  @comment %**start of header
 @comment --- おまじない終り ---  @comment --- おまじない終り ---
Line 39 
Line 40 
 @comment --- タイトル, バージョン, 著者名, 著作権表示 ---  @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
 @title 2元分割表HGM関数  @title 2元分割表HGM関数
 @subtitle Risa/Asir 2元分割表HGM関数説明書  @subtitle Risa/Asir 2元分割表HGM関数説明書
 @subtitle 1.1 版  @subtitle 1.2 版
 @subtitle 2017 年 3 月 3 日  @subtitle 2019 年 2 月 14 日
   
 @author  by Y.Goto, Y.Tachibana, N.Takayama  @author  by Y.Goto, Y.Tachibana, N.Takayama
 @page  @page
Line 77  Copyright @copyright{} Risa/Asir committers
Line 78  Copyright @copyright{} Risa/Asir committers
 HGM(holonomic gradient method) を用いた2元分割表の関数について説明する.  HGM(holonomic gradient method) を用いた2元分割表の関数について説明する.
 ChangeLog の項目は www.openxm.org の cvsweb で  ChangeLog の項目は www.openxm.org の cvsweb で
 ソースコードを読む時の助けになる情報が書かれている.  ソースコードを読む時の助けになる情報が書かれている.
   このパッケージは下記のようにロードする.
   @example
   load("gtt_ekn.rr");
   @end example
   @noindent
   最新版の asir-contrib package を取得するには, 下記のように更新関数を呼び出す.
   @example
   import("names.rr");
   asir_contrib_update(|update=1);
   @end example
   @noindent
 本文中で引用している文献を列挙する.  本文中で引用している文献を列挙する.
 @itemize @bullet  @itemize @bullet
 @item [GM2016]  @item [GM2016]
Line 87  Y.Tachibana, 差分ホロノミック勾配法のモ
Line 98  Y.Tachibana, 差分ホロノミック勾配法のモ
 2016, 神戸大学修士論文.  2016, 神戸大学修士論文.
 @item [GTT2016]  @item [GTT2016]
 Y.Goto, Y.Tachibana, N.Takayama, 2元分割表に対する差分ホロノミック勾配法の実装,  Y.Goto, Y.Tachibana, N.Takayama, 2元分割表に対する差分ホロノミック勾配法の実装,
 数理研講究録(掲載予定).  数理研講究録.
   @item [TGKT]
   Y.Tachibana, Y.Goto, T.Koyama, N.Takayama,
   Holonomic Gradient Method for Two Way Contingency Tables,
   arxiv:1803.04170
 @item [TKT2015]  @item [TKT2015]
 N.Takayama, S.Kuriki, A.Takemura,  N.Takayama, S.Kuriki, A.Takemura,
          $A$-hypergeometric distributions and Newton polytopes.           $A$-hypergeometric distributions and Newton polytopes.
Line 112  gtt_ekn/test-t1.rr 
Line 127  gtt_ekn/test-t1.rr 
 * gtt_ekn.setup::  * gtt_ekn.setup::
 * gtt_ekn.upAlpha::  * gtt_ekn.upAlpha::
 * gtt_ekn.cmle::  * gtt_ekn.cmle::
   * gtt_ekn.set_debug_level::
   * gtt_ekn.show_path::
   * gtt_ekn.assert1::
   * gtt_ekn.assert2::
 @end menu  @end menu
   
 @node 超幾何関数E(k,n),,, 2元分割表HGMの関数  @node 超幾何関数E(k,n),,, 2元分割表HGMの関数
Line 183  b[2][i] は i 列目の列和である.
Line 202  b[2][i] は i 列目の列和である.
 @verbatim  @verbatim
 S=F_D(-b[1,1], [-b[2,2],...,-b[2,n+1]], b[2,1]-b[1,1]+1 ; y)/C,  S=F_D(-b[1,1], [-b[2,2],...,-b[2,n+1]], b[2,1]-b[1,1]+1 ; y)/C,
 @end verbatim  @end verbatim
 C=b[1,1]! b[2,2]! ... b[2][n+1]! (b[2,1]-b[1,1])!  C=b[1,1]! b[2,2]! ... b[2,n+1]! (b[2,1]-b[1,1])!
 とおく.  とおく.
 1/C は L 字型の分割表  1/C は L 字型の分割表
 @verbatim  @verbatim
Line 221  gtt_ekn.setup で行なう.
Line 240  gtt_ekn.setup で行なう.
 [200/9261]  [200/9261]
 @end example  @end example
   
   例: N を2以上の自然数とする時, Gauss の超幾何関数(この場合は多項式となる)
   F(-36N,-11N,2N,(1-1/N)/56) の値は T3 に代入される ( [TGKT] ).
   @comment ekn/Prog2/2x2.rr
   @example
   N=2;
   T2=gtt_ekn.gmvector([[36*N,13*N-1],[38*N-1,11*N]],[[1,(1-1/N)/56],[1,1]])[0][0];
   D=fac(36*N)*fac(11*N)*fac(2*N-1);
   T3=T2*D;
   @end example
   ちなみに同じ値を Mathematica に計算させるには
   @example
   n=2; Hypergeometric2F1[-36*n,-11*n,2*n,(1-1/n)/56]
   @end example
   
 参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な  参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な
 計算ができる.  計算ができる.
 守備範囲の異なるプログラム同士の比較, debug 用参考.  守備範囲の異なるプログラム同士の比較, debug 用参考.
Line 658  ChangeLog
Line 691  ChangeLog
 @item 上記のoption を指定しなかった場合次のデフォルト値が用いられる. nps=1. nprm=10. fgp=0.  @item 上記のoption を指定しなかった場合次のデフォルト値が用いられる. nps=1. nprm=10. fgp=0.
 @item option report=1を与えると現在の環境の報告のみを行う. setup(|report=1)の別名としてreport関数を使用することもできる.  @item option report=1を与えると現在の環境の報告のみを行う. setup(|report=1)の別名としてreport関数を使用することもできる.
 @item option subprogs=[file1,file2,...] により分散計算の子供プロセスにロードすべきファイル file1, file2, ... を指定する. default は subprogs=["gtt_ekn/childprocess.rr"] である.  @item option subprogs=[file1,file2,...] により分散計算の子供プロセスにロードすべきファイル file1, file2, ... を指定する. default は subprogs=["gtt_ekn/childprocess.rr"] である.
 @item gtt_ekn.set_debug_mode(Mode) で Ekn_debug の値を設定する.  @item gtt_ekn.set_debug_level(Mode) で Ekn_debug の値を設定する.
 @end itemize  @end itemize
   
 @comment --- @example〜@end example は実行例の表示 ---  @comment --- @example〜@end example は実行例の表示 ---
Line 667  ChangeLog
Line 700  ChangeLog
 gtt_ekn.setup(|nps=2,nprm=20,minp=10^10,fgp="p.txt")$  gtt_ekn.setup(|nps=2,nprm=20,minp=10^10,fgp="p.txt")$
 @end example  @end example
   
   例: chinese remainder theorem (crt) を使って gmvector を計算.
   @example
   [2867] gtt_ekn.setup(|nprm=20,minp=10^20);
   [2868] N=2; T2=gtt_ekn.gmvector([[36*N,13*N-1],[38*N-1,11*N]],
                                   [[1,(1-1/N)/56],[1,1]] | crt=1)$
   @end example
   
   
 @comment --- 参照(リンク)を書く ---  @comment --- 参照(リンク)を書く ---
 @table @t  @table @t
 @item 参照  @item 参照
Line 822  ChangeLog
Line 862  ChangeLog
 @item  gtt_ekn.rr の cmle 関数は wrapper.  @item  gtt_ekn.rr の cmle 関数は wrapper.
 @end itemize  @end itemize
 @comment end cmle.  @comment end cmle.
   
   @comment **********************************************************
   @comment --- ◯◯◯◯  の説明
   @comment --- 個々の関数の説明の開始 ---
   @comment --- section 名を正確に ---
   @node gtt_ekn.set_debug_level,,, 超幾何関数E(k,n)
   @node gtt_ekn.show_path,,, 超幾何関数E(k,n)
   @node gtt_ekn.assert1,,, 超幾何関数E(k,n)
   @node gtt_ekn.assert2,,, 超幾何関数E(k,n)
   @subsection @code{gtt_ekn.set_debug_level}, @code{gtt_ekn.show_path}, @code{gtt_ekn.assert1}, @code{gtt_ekn.assert2}
   @comment --- 索引用キーワード
   @findex gtt_ekn.set_debug_level
   @findex gtt_ekn.show_path
   @findex gtt_ekn.assert1
   @findex gtt_ekn.assert2
   
   @table @t
   @item gtt_ekn.set_debug_level(@var{m}) debug メッセージのレベルを設定.
   @item gtt_ekn.show_path()  どのように contiguity を適用したかの情報.
   @item gtt_ekn.assert1(@var{N})  2x2 分割表で動作チェック.
   @item gtt_ekn.assert2(@var{N})  3x3 分割表で動作チェック.
   ::
   @end table
   
   @comment --- 引数の簡単な説明 ---  以下まだ書いてない.
   @table @var
   @item  m  レベル.
   @end table
   
   @comment --- ここで関数の詳しい説明 ---
   @comment --- @itemize〜@end itemize は箇条書き ---
   @comment --- @bullet は黒点付き ---
   @itemize @bullet
   @item (@var{m} & 0x1) == 0x1 の時 g_mat_fac_test_plain と g_mat_fac_itor の両方を呼び出し値を比較する (gtt_ekn.setup した状態で).
   @item (@var{m} & 0x2) == 0x2 の時 g_mat_fac_itor への引数を tmp-input.ab として保存.
   @item (@var{m} & 0x4) == 0x4 の時 matrix factorial の計算の呼び出し引数を表示.
   @item @var{N} は問題の周辺和のサイズ.
   @end itemize
   
   @comment --- @example〜@end example は実行例の表示 ---
   例.
   @example
   [2846] gtt_ekn.set_debug_level(0x4);
   [2847] N=2; T2=gtt_ekn.gmvector([[36*N,13*N-1],[38*N-1,11*N]],
                                   [[1,(1-1/N)/56],[1,1]])$
   [2848] level&0x4: g_mat_fac_test([ 113/112 ]
   [ 1/112 ],[ (t+225/112)/(t^2+4*t+4) (111/112*t+111/112)/(t^2+4*t+4) ]
   [ (1/112)/(t^2+4*t+4) (111/112*t+111/112)/(t^2+4*t+4) ],0,20,1,t)
   Note: we do not use g_mat_fac_itor. Call gtt_ekn.setup(); to use the crt option.
   level&0x4: g_mat_fac_test([ 67/62944040755546030080000 ]
   [ 1/125888081511092060160000 ],[ (t+24)/(t^2+25*t+46) (2442)/(t^2+25*t+46) ]
   [ (1)/(t^2+25*t+46) (-111*t-111)/(t^2+25*t+46) ],0,73,1,t)
   level&0x4: g_mat_fac_test ------  snip
   @end example
   
   例.
   @example
   [2659] gtt_ekn.nc([[4,5],[2,4,3]],[[1,1/2,1/3],[1,1,1]])$
   [2660] L=matrix_transpose(gtt_ekn.show_path())$
   [2661] L[2];
   [1 4 3 2]
   @end example
   [1 4 3 2] の index をもつパラメーター alpha の方向の contigity を求めそれを掛けて
   計算したことがわかる.  L[0] は用いた contiguity の行列.
   L[1] はcontiguity を適用する step 数.
   
   例. 値を計算せずに path のみ求めたい場合.
   @example
   A=gtt_ekn.marginaltoAlpha_list([[400,410,1011],[910,411,500]])$
   [2666] gtt_ekn.contiguity_mat_list_2(A,2,2)$
   [2667] L=matrix_transpose(gtt_ekn.show_path())$
   [2668] L[2];
   [ 2 1 5 4 3 ]
   @end example
   
   例. 0 が戻れば g_mat_fac_plain と指定した計算方法の結果が一致したことがわかる.
   option を書かないと g_mat_fac_int との比較となる.
   @example
   [8859] gtt_ekn.assert2(1);
   Marginal=[[130,170,353],[90,119,444]]
   P=[[17/100,1,10],[7/50,1,33/10],[1,1,1]]
   Try g_mat_fac_test_int: Note: we do not use g_mat_fac_itor. Call gtt_ekn.setup(); to use the crt option.
   Timing (int) =0.413916 (CPU) + 0.590723 (GC) = 1.00464 (total), real time=0.990672
   
   Try g_mat_fac_test_plain: Note: we do not use g_mat_fac_itor. Call gtt_ekn.setup(); to use the crt option.
   Timing (rational) =4.51349 (CPU) + 6.32174 (GC) = 10.8352 (total)
   diff of both method =
   [ 0 0 0 ]
   [ 0 0 0 ]
   [ 0 0 0 ]
   [8860]
   
   [8863] gtt_ekn.setup(|nprm=100,minp=10^50);
   Number of processes = 1.
   Number of primes = 100.
   Min of plist = 100000000000000000000000000000000000000000000000151.
   0
   [8864] gtt_ekn.assert2(1 | crt=1);
   Marginal=[[130,170,353],[90,119,444]]
   P=[[17/100,1,10],[7/50,1,33/10],[1,1,1]]
   Try [[crt,1]]
   ----  snip
   @end example
   なお二番目の例の timing (total) [例では省略] は mod 計算を subprocess がやっているので正しい値ではない. real time が計算時間の目安になる.
   
   @comment --- 参照(リンク)を書く ---
   @table @t
   @item 参照
   @ref{gtt_ekn.nc}
   @end table
   
   @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
   @noindent
   ChangeLog
   @itemize @bullet
   @item  gtt_ekn/ekn_eval.rr で matrix factorial の計算の呼び出し引数を表示する.
   @item grep 'iand(Ekn_debug,0x1)' *.rr でソースコードの該当の位置をさがす.
   @end itemize
   @comment end set_debug_level
   
   
   

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.10

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