Annotation of OpenXM/src/asir-contrib/packages/doc/gtt_ekn/gtt_ekn-ja.texi, Revision 1.3
1.3 ! takayama 1: %% $OpenXM: OpenXM/src/asir-contrib/packages/doc/gtt_ekn/gtt_ekn-ja.texi,v 1.2 2016/03/26 05:25:35 takayama Exp $
! 2: %% ptex -kanji euc gtt_ekn.texi (.texi までつける. platex でなく ptex)
! 3: %% 以下コメントは @comment で始める. \input texinfo 以降は普通の tex 命令は使えない.
1.1 takayama 4: \input texinfo
5: @iftex
6: @catcode`@#=6
7: @def@fref#1{@xrefX[#1,,@code{#1},,,]}
8: @def@b#1{{@bf@gt #1}}
9: @catcode`@#=@other
10: @end iftex
11: @overfullrule=0pt
12: @c -*-texinfo-*-
13: @comment %**start of header
1.3 ! takayama 14: @comment --- おまじない終り ---
1.1 takayama 15:
1.3 ! takayama 16: @comment --- GNU info ファイルの名前 ---
1.1 takayama 17: @setfilename xyzman
18:
1.3 ! takayama 19: @comment --- タイトル ---
! 20: @settitle 2元分割表HGM
1.1 takayama 21:
22: @comment %**end of header
23: @comment %@setchapternewpage odd
24:
1.3 ! takayama 25: @comment --- おまじない ---
1.1 takayama 26: @ifinfo
27: @macro fref{name}
28: @ref{\name\,,@code{\name\}}
29: @end macro
30: @end ifinfo
31:
32: @iftex
33: @comment @finalout
34: @end iftex
35:
36: @titlepage
1.3 ! takayama 37: @comment --- おまじない終り ---
1.1 takayama 38:
1.3 ! takayama 39: @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
! 40: @title 2元分割表HGM関数
! 41: @subtitle Risa/Asir 2元分割表HGM関数説明書
! 42: @subtitle 1.0 版
! 43: @subtitle 2016 年 3 月 22 日
1.1 takayama 44:
45: @author by Y.Goto, Y.Tachibana, N.Takayama
46: @page
47: @vskip 0pt plus 1filll
48: Copyright @copyright{} Risa/Asir committers
49: 2004--2010. All rights reserved.
50: @end titlepage
51:
1.3 ! takayama 52: @comment --- おまじない ---
1.1 takayama 53: @synindex vr fn
1.3 ! takayama 54: @comment --- おまじない終り ---
1.1 takayama 55:
1.3 ! takayama 56: @comment --- @node は GNU info, HTML 用 ---
! 57: @comment --- @node の引数は node-name, next, previous, up ---
1.1 takayama 58: @node Top,, (dir), (dir)
59:
1.3 ! takayama 60: @comment --- @menu は GNU info, HTML 用 ---
! 61: @comment --- chapter 名を正確に並べる ---
! 62: @comment --- この文書では chapter XYZ, Chapter Index がある.
! 63: @comment --- Chapter XYZ には section XYZについて, section XYZに関する関数がある.
1.1 takayama 64: @menu
1.3 ! takayama 65: * 2元分割表HGMの関数説明書について::
! 66: * 2元分割表HGMの関数::
1.1 takayama 67: * Index::
68: @end menu
69:
1.3 ! takayama 70: @comment --- chapter の開始 ---
! 71: @comment --- 親 chapter 名を正確に. 親がない場合は Top ---
! 72: @node 2元分割表HGMの関数説明書について,,, Top
! 73: @chapter 2元分割表HGMの関数説明書について
! 74:
! 75: この説明書では
! 76: HGM(holonomic gradient method) を用いた2元分割表の関数について説明する.
! 77: ChangeLog の項目は www.openxm.org の cvsweb で
! 78: ソースコードを読む時の助けになる情報が書かれている.
1.1 takayama 79:
1.3 ! takayama 80: 本文中で引用している文献を列挙する.
1.1 takayama 81: @itemize @bullet
82: @item [GM2016]
83: Y.Goto, K.Matsumoto, Pfaffian equations and contiguity relations of the hypergeometric function of type (k+1,k+n+2) and their applications, arxiv:1602.01637 (version 1)
84: @item [T2016]
1.3 ! takayama 85: Y.Tachibana, 差分ホロノミック勾配法のモジュラーメソッドによる計算の高速化,
! 86: 2016, 神戸大学修士論文.
1.1 takayama 87: @item [GTT2016]
1.3 ! takayama 88: Y.Goto, Y.Tachibana, N.Takayama, 2元分割表に対する差分ホロノミック勾配法の実装,
! 89: 数理研講究録(掲載予定).
1.1 takayama 90: @item [TKT2015]
91: N.Takayama, S.Kuriki, A.Takemura,
92: $A$-hypergeometric distributions and Newton polytopes.
93: arxiv:1510.02269
94: @end itemize
95:
1.3 ! takayama 96: このマニュアルで説明する関数を用いたプログラム例は
1.1 takayama 97: gtt_ekn/test-t1.rr
1.3 ! takayama 98: など.
1.1 takayama 99:
1.3 ! takayama 100: @node 2元分割表HGMの関数,,, Top
! 101: @chapter 2元分割表HGMの関数
1.1 takayama 102:
1.3 ! takayama 103: @comment --- section ``実験的関数'' の subsection xyz_abc
! 104: @comment --- subsection xyz_pqr xyz_stu がある.
1.1 takayama 105: @menu
106: * gtt_ekn.gmvector::
107: * gtt_ekn.nc::
108: * gtt_ekn.lognc::
109: * gtt_ekn.expectation::
110: * gtt_ekn.setup::
111: * gtt_ekn.upAlpha::
112: @end menu
113:
1.3 ! takayama 114: @node 超幾何関数E(k,n),,, 2元分割表HGMの関数
! 115: @section 超幾何関数E(k,n)
1.1 takayama 116:
117: @comment **********************************************************
1.3 ! takayama 118: @comment --- ◯◯◯◯ の説明
! 119: @comment --- 個々の関数の説明の開始 ---
! 120: @comment --- section 名を正確に ---
! 121: @node gtt_ekn.gmvector,,, 超幾何関数E(k,n)
1.1 takayama 122: @subsection @code{gtt_ekn.gmvector}
1.3 ! takayama 123: @comment --- 索引用キーワード
1.1 takayama 124: @findex gtt_ekn.gmvector
125:
126: @table @t
127: @item gtt_ekn.gmvector(@var{beta},@var{p})
1.3 ! takayama 128: :: 周辺和 @var{beta}, セルの確率 @var{p} の二元分割表に付随する超幾何関数
! 129: E(k,n) の値およびその微分の値を戻す.
1.1 takayama 130: @item gtt_ekn.ekn_cBasis_2(@var{beta},@var{p})
1.3 ! takayama 131: の別名である.
1.1 takayama 132: @end table
133:
1.3 ! takayama 134: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 135: @table @var
136: @item return
1.3 ! takayama 137: ベクトル, 超幾何関数の値とその微分. 詳しくは下記.
1.1 takayama 138: @item beta
1.3 ! takayama 139: 行和, 列和のリスト. 成分はすべて正であること.
1.1 takayama 140: @item p
1.3 ! takayama 141: 二元分割表のセルの確率のリスト
1.1 takayama 142: @end table
143:
1.3 ! takayama 144: @comment --- ここで関数の詳しい説明 ---
! 145: @comment --- @itemize〜@end itemize は箇条書き ---
! 146: @comment --- @bullet は黒点付き ---
1.1 takayama 147: @itemize @bullet
148: @item
1.3 ! takayama 149: gmvector は Gauss-Manin vector の略である [GM2016].
1.1 takayama 150: @item
1.3 ! takayama 151: gmvector の戻り値は
! 152: [GM2016] の 6章 p.23 のベクトル Sである.
! 153: これは
! 154: [GM2016] の4章で定義されているベクトル F の定数倍であり,
! 155: その定数は
! 156: 第一成分が [GM2016] の6章で定義されている級数 S の値と等しく
! 157: なるように決められている.
1.1 takayama 158: @item
1.3 ! takayama 159: r1 x r2 分割表を考える.
! 160: m+1=r1, n+1=r2 とおく.
! 161: 正規化定数 Z は分割表 u を (m+1) × (n+1) 行列とするとき p^u/u! の和である.
! 162: ここで和は行和列和が @var{beta} であるような u 全体でとる
1.1 takayama 163: [TKT2015], [GM2016].
1.3 ! takayama 164: S はこの多項式 Z の p を
1.1 takayama 165: @verbatim
166: [[1,y11,...,y1n],
167: [1,y21,...,y2n],...,
168: [1,ym1, ...,ymn],
169: [1,1, ..., 1]]
170: @end verbatim
1.3 ! takayama 171: (1 が L 字型に並ぶ),
! 172: と正規化した級数である.
1.1 takayama 173: @item
1.3 ! takayama 174: 2x(n+1)分割表で, gmvector の戻り値を Lauricella F_D で書くことが
! 175: 以下のようにできる
! 176: (b[2][1]-b[1][1] >= 0 の場合).
! 177: ここで b[1][1], b[1][2] は, それぞれ 1 行目の行和, 2 行目の行和,
! 178: b[2][i] は i 列目の列和である.
1.1 takayama 179: @comment ekn/Talks/2015-12-3-goto.tex
180: @verbatim
181: S=F_D(-b[1,1], [-b[2,2],...,-b[2,n+1]], b[2,1]-b[1,1]+1 ; y)/C,
182: @end verbatim
183: C=b[1,1]! b[2,2]! ... b[2][n+1]! (b[2,1]-b[1,1])!
1.3 ! takayama 184: とおく.
! 185: 1/C は L 字型の分割表
1.1 takayama 186: @verbatim
187: [[b[1,1], 0, ..., 0 ],
188: [b[2,1]-b[1,1],b[2,2], ..., b[2,n+1]]]
189: @end verbatim
1.3 ! takayama 190: に対応.
! 191: gmvector は
1.1 takayama 192: @verbatim
193: [S,(y11/a2) d_11 S,(y12/a3) d_12 S, ..., (y1n/a_(n+1)) d_1n S]
194: @end verbatim
1.3 ! takayama 195: である.
! 196: ここで d_ij は yij についての微分,
1.1 takayama 197: @verbatim
198: [a0, a1, ... ,a_(n+2)]
199: = [-b[1,2],-b[1,1],b[2,2], ..., b[2,n+1],b[2,1]]
200: @end verbatim
1.3 ! takayama 201: である.
1.1 takayama 202: @item
1.3 ! takayama 203: 周辺和 @var{beta}の時の正規化定数のセル確率 @var{p} に対する値は 多項式に退化した E(k,n) の値で表現できる. 文献 [TKT2015], [GM2016] 参照.
1.1 takayama 204: @item
1.3 ! takayama 205: option crt=1 (crt = Chinese remainder theorem) を与えると, 分散計算をおこなう
1.1 takayama 206: [T2016].
1.3 ! takayama 207: 分散計算用の各種パラメータの設定は
! 208: gtt_ekn.setup で行なう.
1.1 takayama 209: @end itemize
210:
1.3 ! takayama 211: @comment --- @example〜@end example は実行例の表示 ---
! 212: 例: 次は2 x 2 分割表で行和が [5,1], 列和が [3,3], 各セルの確率が
! 213: [[1/2,1/3],[1/7,1/5]] の場合の gmvector の値である.
1.1 takayama 214: @example
215: [3000] load("gtt_ekn.rr");
216: [3001] ekn_gtt.gmvector([[5,1],[3,3]],[[1/2,1/3],[1/7,1/5]])
217: [775/27783]
218: [200/9261]
219: @end example
220:
1.3 ! takayama 221: 参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な
! 222: 計算ができる.
! 223: 守備範囲の異なるプログラム同士の比較, debug 用参考.
1.1 takayama 224: @example
225: [3080] import("tk_fd.rr");
226: [3081] A=tk_fd.marginal2abc([4,5],[2,4,3]);
1.3 ! takayama 227: [-4,[-4,-3],-1] // 2変数 FD のパラメータ. a,[b1,b2],c
1.1 takayama 228: [3082] tk_fd.fd_hessian2(A[0],A[1],A[2],[1/2,1/3]);
229: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
230: [4483/124416,[ 1961/15552 185/1728 ],
231: [ 79/288 259/864 ]
232: [ 259/864 47/288 ]]
1.3 ! takayama 233: // 戻値は [F=F_D, gradient(F), Hessian(F)]
1.1 takayama 234:
1.3 ! takayama 235: // ekn_gt での例と同じパラメータ.
1.1 takayama 236: [3543] A=tk_fd.marginal2abc([5,1],[3,3]);
237: [-5,[-3],-1]
238: [3544] tk_fd.fd_hessian2(A[0],A[1],A[2],[(1/3)*(1/7)/((1/2)*(1/5))]);
239: Computing Dmat(ca) for parameters B=[-3],X=[ 10/21 ]
240: [775/27783,[ 20/147 ],[ 17/42 ]]
241: @end example
242:
1.3 ! takayama 243: 参考: 一般の A 分布の正規化定数についての Hessian の計算は実験的 package ot_hessian_ahg.rr
! 244: で実装のテストがされている. (これはまだ未完成のテスト版なので出力形式等も将来的には変更される.)
1.1 takayama 245: @example
246: import("ot_hgm_ahg.rr");
247: import("ot_hessian_ahg.rr");
248: def htest4() @{
249: extern C11_A;
250: extern C11_Beta;
251: Hess=newmat(7,7);
252: A =C11_A;
253: Beta0= [b0,b1,b2,b3];
254: BaseIdx=[4,5,6];
255: X=[x0,x1,x2,x3,x4,x5,x6];
256: for (I=0; I<7; I++) for (J=0; J<7; J++) @{
257: Idx = [I,J];
258: H=hessian_simplify(A,Beta0,X,BaseIdx,Idx);
259: Hess[I][J]=H;
260: printf("[I,J]=%a, Hessian_ij=%a\n",Idx,H);
261: @}
262: return(Hess);
263: @}
264: [2917] C11_A;
265: [[0,0,0,1,1,1,1],[1,0,0,1,0,1,0],[0,1,1,0,1,0,1],[1,1,0,1,1,0,0]]
266: [2918] C11_Beta;
267: [166,36,290,214]
268: [2919] Ans=htest4$
269: [2920] Ans[0][0];
270: [[((b1-b0-1)*x4)/(x0^2),[4]],[((b1-b0-1)*x6)/(x0^2),[6]],
271: [(b1^2+(-2*b0-1)*b1+b0^2+b0)/(x0^2),[]],[(x6)/(x0),[6,0]],[(x4)/(x0),[4,0]]]
272: @end example
273:
1.3 ! takayama 274: @comment --- 参照(リンク)を書く ---
1.1 takayama 275: @table @t
1.3 ! takayama 276: @item 参照
1.1 takayama 277: @ref{gtt_ekn.setup}
278: @ref{gtt_ekn.pfaffian_basis}
279: @end table
280:
1.3 ! takayama 281: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 282: @noindent
283: ChangeLog
284: @itemize @bullet
285: @item
1.3 ! takayama 286: この関数は
! 287: [GM2016] のアルゴリズムおよび
! 288: [T2016] による modular method を用いた高速化を実装したものである.
1.1 takayama 289: @item
1.3 ! takayama 290: 変更を受けたファイルは
1.1 takayama 291: OpenXM/src/asir-contrib/packages/src/gtt_ekn.rr 1.1, gtt_ekn/ekn_pfaffian_8.rr
292: @end itemize
293:
294:
295: @comment **********************************************************
1.3 ! takayama 296: @node gtt_ekn.nc,,, 超幾何関数E(k,n)
1.1 takayama 297: @subsection @code{gtt_ekn.nc}
1.3 ! takayama 298: @comment --- 索引用キーワード
1.1 takayama 299: @findex gtt_ekn.nc
300:
301: @table @t
302: @item gtt_ekn.nc(@var{beta},@var{p})
1.3 ! takayama 303: :: 周辺和 @var{beta}, セルの確率 @var{p} の二元分割表の条件付き確率の正規化定数 Z
! 304: およびその微分の値を戻す.
1.1 takayama 305: @end table
306:
1.3 ! takayama 307: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 308: @table @var
309: @item return
1.3 ! takayama 310: ベクトル [Z,[[d_11 Z, d_12 Z, ...], ..., [d_m1 Z, d_m2 Z, ...., d_mn Z]]]
1.1 takayama 311: @item beta
1.3 ! takayama 312: 行和, 列和のリスト. 成分はすべて正であること.
1.1 takayama 313: @item p
1.3 ! takayama 314: 二元分割表のセルの確率のリスト
1.1 takayama 315: @end table
316:
1.3 ! takayama 317: @comment --- ここで関数の詳しい説明 ---
! 318: @comment --- @itemize〜@end itemize は箇条書き ---
! 319: @comment --- @bullet は黒点付き ---
1.1 takayama 320: @itemize @bullet
321: @item
1.3 ! takayama 322: r1 x r2 分割表を考える.
! 323: m=r1, n=r2 とおく.
! 324: 正規化定数 Z は分割表 u を m × n 行列とするとき p^u/u! の和である.
! 325: ここで和は行和列和が @var{beta} であるような u 全体でとる
1.1 takayama 326: [TKT2015], [GM2016].
1.3 ! takayama 327: p^u は p_ij^u_ij の積, u! は u_ij! の積である.
! 328: d_ij Z で Z の変数 p_ij についての偏微分を表す.
1.1 takayama 329: @item
1.3 ! takayama 330: nc は gmvector の値を元に, [GM2016] の Prop
! 331: 7.1 に基づいて Z の値を計算する.
1.1 takayama 332: @item
1.3 ! takayama 333: option crt=1 (crt = Chinese remainder theorem) を与えると, 分散計算をおこなう.
! 334: 分散計算用の各種パラメータの設定は
! 335: gtt_ekn.setup で行なう.
1.1 takayama 336: @end itemize
337:
1.3 ! takayama 338: @comment --- @example〜@end example は実行例の表示 ---
! 339: 例: 2x3 分割表での Z とその微分の計算.
1.1 takayama 340: @example
341: [2237] gtt_ekn.nc([[4,5],[2,4,3]],[[1,1/2,1/3],[1,1,1]]);
342: [4483/124416,[ 353/7776 1961/15552 185/1728 ]
343: [ 553/20736 1261/15552 1001/13824 ]]
344: @end example
345:
1.3 ! takayama 346: 参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な
! 347: 計算ができる.
1.1 takayama 348: @example
349: [3076] import("tk_fd.rr");
350: [3077] A=tk_fd.marginal2abc([4,5],[2,4,3]);
351: [-4,[-4,-3],-1]
352: [3078] tk_fd.ahmat_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
353: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
354: [ 1 1 1 ]
355: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
356: [4483/124416,[[353/7776,1961/15552,185/1728],
357: [553/20736,1261/15552,1001/13824]]]
1.3 ! takayama 358: // 戻値は [Z, [[d_11 Z, d_12 Z, d_13 Z],
! 359: // [d_21 Z, d_22 Z, d_23 Z]]] の値.
! 360: // ここで d_ij は i,j 成分についての微分を表す.
1.1 takayama 361: @end example
362:
1.3 ! takayama 363: @comment --- 参照(リンク)を書く ---
1.1 takayama 364: @table @t
1.3 ! takayama 365: @item 参照
1.1 takayama 366: @ref{gtt_ekn.setup}
367: @ref{gtt_ekn.lognc}
368: @end table
369:
1.3 ! takayama 370: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 371: @noindent
372: ChangeLog
373: @itemize @bullet
374: @item
1.3 ! takayama 375: 変更を受けたファイルは
1.1 takayama 376: OpenXM/src/asir-contrib/packages/src/gtt_ekn.rr 1.1, gtt_ekn/ekn_eval.rr
377: @end itemize
378:
379:
380: @comment **********************************************************
1.3 ! takayama 381: @node gtt_ekn.lognc,,, 超幾何関数E(k,n)
1.1 takayama 382: @subsection @code{gtt_ekn.lognc}
1.3 ! takayama 383: @comment --- 索引用キーワード
1.1 takayama 384: @findex gtt_ekn.lognc
385:
386: @table @t
387: @item gtt_ekn.lognc(@var{beta},@var{p})
1.3 ! takayama 388: :: 周辺和 @var{beta}, セルの確率 @var{p} の二元分割表の条件付き確率の正規化定数 Z
! 389: の log の近似値およびその微分の近似値を戻す.
1.1 takayama 390: @end table
391:
1.3 ! takayama 392: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 393: @table @var
394: @item return
1.3 ! takayama 395: ベクトル [log(Z), [[d_11 log(Z), d_12 log(Z), ...], [d_21 log(Z),...], ... ]
1.1 takayama 396: @item beta
1.3 ! takayama 397: 行和, 列和のリスト. 成分はすべて正であること.
1.1 takayama 398: @item p
1.3 ! takayama 399: 二元分割表のセルの確率のリスト
1.1 takayama 400: @end table
401:
1.3 ! takayama 402: @comment --- ここで関数の詳しい説明 ---
! 403: @comment --- @itemize〜@end itemize は箇条書き ---
! 404: @comment --- @bullet は黒点付き ---
1.1 takayama 405: @itemize @bullet
406: @item
1.3 ! takayama 407: 条件付き最尤推定に利用する [TKT2015].
! 408: @item option crt=1 (crt = Chinese remainder theorem) を与えると, 分散計算をおこなう.
! 409: 分散計算用の各種パラメータの設定は
! 410: gtt_ekn.setup で行なう.
1.1 takayama 411: @end itemize
412:
1.3 ! takayama 413: @comment --- @example〜@end example は実行例の表示 ---
! 414: 例: 2 × 3 分割表での例. 第一成分のみ近似値.
1.1 takayama 415: @example
416: [2238] gtt_ekn.lognc([[4,5],[2,4,3]],[[1,1/2,1/3],[1,1,1]]);
417: [-3.32333832422461674630,[ 5648/4483 15688/4483 13320/4483 ]
418: [ 3318/4483 10088/4483 9009/4483 ]]
419: @end example
420:
1.3 ! takayama 421: 参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な
! 422: 計算ができる.
1.1 takayama 423: @example
424: [3076] import("tk_fd.rr");
425: [3077] A=tk_fd.marginal2abc([4,5],[2,4,3]);
426: [-4,[-4,-3],-1]
427: [3078] tk_fd.log_ahmat_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
428: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
429: [ 1 1 1 ]
430: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
431: [-3.32333832422461674639485797719209322217260539267246045320,
432: [[1.2598706, 3.499442, 2.971224],
433: [0.7401293, 2.250278, 2.009591]]]
1.3 ! takayama 434: // 戻値は [log(Z),
1.1 takayama 435: // [[d_11 log(Z), d_12 log(Z), d_13 log(Z)],
436: // [d_21 log(Z), d_22 log(Z), d_23 log(Z)]]]
1.3 ! takayama 437: // の近似値.
1.1 takayama 438: @end example
439:
1.3 ! takayama 440: @comment --- 参照(リンク)を書く ---
1.1 takayama 441: @table @t
1.3 ! takayama 442: @item 参照
1.1 takayama 443: @ref{gtt_ekn.setup}
444: @ref{gtt_ekn.nc}
445: @end table
446:
1.3 ! takayama 447: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 448: @noindent
449: ChangeLog
450: @itemize @bullet
451: @item
1.3 ! takayama 452: 変更を受けたファイルは
1.1 takayama 453: OpenXM/src/asir-contrib/packages/src/gtt_ekn.rr 1.1.
454: @end itemize
455:
456: @comment **********************************************************
1.3 ! takayama 457: @node gtt_ekn.expectation,,, 超幾何関数E(k,n)
1.1 takayama 458: @subsection @code{gtt_ekn.expectation}
1.3 ! takayama 459: @comment --- 索引用キーワード
1.1 takayama 460: @findex gtt_ekn.expectation
461:
462: @table @t
463: @item gtt_ekn.expectation(@var{beta},@var{p})
1.3 ! takayama 464: :: 周辺和 @var{beta}, セルの確率 @var{p} の二元分割表の期待値を計算する.
1.1 takayama 465: @end table
466:
1.3 ! takayama 467: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 468: @table @var
469: @item return
1.3 ! takayama 470: 二元分割表の各セルの期待値のリスト.
1.1 takayama 471: @item beta
1.3 ! takayama 472: 行和, 列和のリスト. 成分はすべて正であること.
1.1 takayama 473: @item p
1.3 ! takayama 474: 二元分割表のセルの確率のリスト
1.1 takayama 475: @end table
476:
1.3 ! takayama 477: @comment --- ここで関数の詳しい説明 ---
! 478: @comment --- @itemize〜@end itemize は箇条書き ---
! 479: @comment --- @bullet は黒点付き ---
1.1 takayama 480: @itemize @bullet
481: @item
1.3 ! takayama 482: [GM2016] の Algorithm 7.8 の実装.
! 483: @item option crt=1 (crt = Chinese remainder theorem) を与えると, 分散計算をおこなう.
! 484: 分散計算用の各種パラメータの設定は
! 485: gtt_ekn.setup で行なう.
! 486: @item option index を与えると, 指定された成分の期待値のみ計算する.
! 487: たとえば 2 x 2 分割表で index=[[0,0],[1,1]] と指定すると, 1 のある成分の期待値のみ計算する.
1.1 takayama 488: @end itemize
489:
1.3 ! takayama 490: @comment --- @example〜@end example は実行例の表示 ---
1.1 takayama 491:
1.3 ! takayama 492: 2×2, 3×3 の分割表の期待値計算例.
1.1 takayama 493: @example
494: [2235] gtt_ekn.expectation([[1,4],[2,3]],[[1,1/3],[1,1]]);
495: [ 2/3 1/3 ]
496: [ 4/3 8/3 ]
497: [2236] gtt_ekn.expectation([[4,5],[2,4,3]],[[1,1/2,1/3],[1,1,1]]);
498: [ 5648/4483 7844/4483 4440/4483 ]
499: [ 3318/4483 10088/4483 9009/4483 ]
500:
501: [2442] gtt_ekn.expectation([[4,14,9],[11,6,10]],[[1,1/2,1/3],[1,1/5,1/7],[1,1,1]]);
502: [ 207017568232262040/147000422096729819 163140751505489940/147000422096729819
503: 217843368649167296/147000422096729819 ]
504: [ 1185482401011137878/147000422096729819 358095302885438604/147000422096729819
505: 514428205457640984/147000422096729819 ]
506: [ 224504673820628091/147000422096729819 360766478189450370/147000422096729819
507: 737732646860489910/147000422096729819 ]
508: @end example
509:
1.3 ! takayama 510: 参考: 2 x m 分割表(Lauricella FD)についてはパッケージ tk_fd でも下記のように同等な
! 511: 計算ができる.
1.1 takayama 512: @example
513: [3076] import("tk_fd.rr");
514: [3077] A=tk_fd.marginal2abc([4,5],[2,4,3]);
515: [-4,[-4,-3],-1]
516: [3078] tk_fd.expectation_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
517: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
518: [ 1 1 1 ]
519: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
520: [[5648/4483,7844/4483,4440/4483],
521: [3318/4483,10088/4483,9009/4483]]
1.3 ! takayama 522: // 各セルの期待値.
1.1 takayama 523: @end example
524:
1.3 ! takayama 525: 参考: 一般の A 分布の計算は ot_hgm_ahg.rr. まだ実験的なため, module 化されていない.
! 526: ot_hgm_ahg.rr についての参考文献:
1.1 takayama 527: K.Ohara, N.Takayama, Pfaffian Systems of A-Hypergeometric Systems II --- Holonomic Gradient Method, arxiv:1505.02947
528: @example
529: [3237] import("ot_hgm_ahg.rr");
1.3 ! takayama 530: // 2 x 2 分割表.
1.1 takayama 531: [3238] hgm_ahg_expected_values_contiguity([[0,0,1,1],[1,0,1,0],[0,1,0,1]],
532: [9,6,8],[1/2,1/3,1/5,1/7],[x1,x2,x3,x4]|geometric=1);
533: oohg_native=0, oohg_curl=1
534: [1376777025/625400597,1750225960/625400597,
535: 2375626557/625400597,3252978816/625400597]
1.3 ! takayama 536: // 2 x 2 分割表の期待値.
1.1 takayama 537:
1.3 ! takayama 538: // 2 x 3 分割表.
1.1 takayama 539: [3238] hgm_ahg_expected_values_contiguity(
540: [[0,0,0,1,1,1],[1,0,0,1,0,0],[0,1,0,0,1,0],[0,0,1,0,0,1]],
541: [5,2,4,3],[1,1/2,1/3,1,1,1],[x1,x2,x3,x4,x5,x6]|geometric=1);
542: [5648/4483,7844/4483,4440/4483,3318/4483,10088/4483,9009/4483]
1.3 ! takayama 543: // 2 x 3 分割表の期待値. 上と同じ問題.
1.1 takayama 544: @end example
545:
1.3 ! takayama 546: 3 x 3 分割表. 構造的0が一つ.
1.1 takayama 547: @example
548: /*
1.3 ! takayama 549: dojo, p.221 のデータ. 成績3以下の生徒は集めてひとつに.
1.1 takayama 550: 2 1 1
551: 8 3 3
552: 0 2 6
553:
554: row sum: 4,14,8
555: column sum: 10,6,10
1.3 ! takayama 556: 0 を一つ含むので, (3,6) 型の A から 7 列目を抜く.
1.1 takayama 557: */
558:
559: A=[[0,0,0,1,1,1, 0,0],
560: [0,0,0,0,0,0, 1,1],
561: [1,0,0,1,0,0, 0,0],
562: [0,1,0,0,1,0, 1,0],
563: [0,0,1,0,0,1, 0,1]];
564: B=[14,8,10,6,10];
565: hgm_ahg_expected_values_contiguity(A,B,[1,1/2,1/3,1,1/5,1/7,1,1],
1.3 ! takayama 566: [x1,x2,x3,x4,x5,x6,x7,x8]|geometric=1);
1.1 takayama 567:
1.3 ! takayama 568: // 答.
1.1 takayama 569: [14449864949304/9556267369631,
570: 10262588586540/9556267369631, 13512615942680/9556267369631,
571: 81112808747006/9556267369631,
572: 21816297744346/9556267369631, 30858636683482/9556267369631,
573:
574: 25258717886900/9556267369631,51191421070148/9556267369631]
575: @end example
576:
1.3 ! takayama 577: 3 x 3 分割表.
1.1 takayama 578: @example
579: /*
1.3 ! takayama 580: 上のデータで 0 を 1 に変更.
1.1 takayama 581: 2 1 1
582: 8 3 3
583: 1 2 6
584:
585: row sum: 4,14,9
586: column sum: 11,6,10
587: */
588: A=[[0,0,0,1,1,1,0,0,0],
589: [0,0,0,0,0,0,1,1,1],
590: [1,0,0,1,0,0,1,0,0],
591: [0,1,0,0,1,0,0,1,0],
592: [0,0,1,0,0,1,0,0,1]];
593: B=[14,9,11,6,10];
594: hgm_ahg_expected_values_contiguity(A,B,[1,1/2,1/3,1,1/5,1/7,1,1,1],
595: [x1,x2,x3,x4,x5,x6,x7,x8]|geometric=1);
596:
1.3 ! takayama 597: // 期待値, 答. x9 を指定していないので, 9番目の期待値は出力してない.
1.1 takayama 598: [207017568232262040/147000422096729819,
599: 163140751505489940/147000422096729819,217843368649167296/147000422096729819,
600: 1185482401011137878/147000422096729819,
601: 358095302885438604/147000422096729819,514428205457640984/147000422096729819,
602: 224504673820628091/147000422096729819,360766478189450370/147000422096729819]
603:
1.3 ! takayama 604: // Z やその微分の計算は hgm_ahg_contiguity 関数がおこなうが, これの簡易インターフェースは
! 605: // まだ書いてない.
1.1 takayama 606: @end example
607:
608:
609:
1.3 ! takayama 610: @comment --- 参照(リンク)を書く ---
1.1 takayama 611: @table @t
1.3 ! takayama 612: @item 参照
1.1 takayama 613: @ref{gtt_ekn.setup}
614: @ref{gtt_ekn.nc}
615: @end table
616:
1.3 ! takayama 617: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 618: @noindent
619: ChangeLog
620: @itemize @bullet
621: @item
1.3 ! takayama 622: 変更を受けたファイルは
1.1 takayama 623: OpenXM/src/asir-contrib/packages/src/gtt_ekn.rr 1.1.
624: @end itemize
625:
626:
627: @comment **********************************************************
1.3 ! takayama 628: @comment --- ◯◯◯◯ の説明
! 629: @comment --- 個々の関数の説明の開始 ---
! 630: @comment --- section 名を正確に ---
! 631: @node gtt_ekn.setup,,, 超幾何関数E(k,n)
1.1 takayama 632: @subsection @code{gtt_ekn.setup}
1.3 ! takayama 633: @comment --- 索引用キーワード
1.1 takayama 634: @findex gtt_ekn.setup
635:
636: @table @t
637: @item gtt_ekn.setup()
1.3 ! takayama 638: :: 分散計算用の環境設定をおこなう. 現在の環境を報告する.
1.1 takayama 639: @end table
640:
1.3 ! takayama 641: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 642: @table @var
643: @item return
644:
645: @end table
646:
1.3 ! takayama 647: @comment --- ここで関数の詳しい説明 ---
! 648: @comment --- @itemize〜@end itemize は箇条書き ---
! 649: @comment --- @bullet は黒点付き ---
! 650: @itemize @bullet
! 651: @item 使用するプロセスと素数の個数, 最小の素数を表示する. 準備されていない場合はその旨を表示.
! 652: @item このパッケージでの分散計算は複数のcpuを搭載した計算機で実行されることを想定している.
! 653: @item option nps (または number_of_processes)を与えると指定した数だけプロセスを用意する.
! 654: @item option nprm (または number_of_primes)を与えるとnprmが文字列の場合指定された素数リストのファイルを読み込む. nprmが自然数の場合さらにoption minp (minp =MINimum Prime)を与えるとminpより大きな素数をnprm個生成する. その際option fgp (または file_of_generated_primes)を与えると生成した素数リストをファイル名をfgpとして保存する.
! 655: @item 上記のoption を指定しなかった場合次のデフォルト値が用いられる. nps=1. nprm=10. fgp=0.
! 656: @item option report=1を与えると現在の環境の報告のみを行う. setup(|report=1)の別名としてreport関数を使用することもできる.
1.1 takayama 657: @end itemize
658:
1.3 ! takayama 659: @comment --- @example〜@end example は実行例の表示 ---
! 660: 例: 素数のリストを生成してファイル p.txt へ書き出す.
1.1 takayama 661: @example
662: gtt_ekn.setup(|nps=2,nprm=20,minp=10^10,fgp="p.txt")$
663: @end example
664:
665:
1.3 ! takayama 666: @comment --- 参照(リンク)を書く ---
1.1 takayama 667: @table @t
1.3 ! takayama 668: @item 参照
1.1 takayama 669: @ref{gtt_ekn.nc}
670: @ref{gtt_ekn.gmvector}
671: @end table
672:
1.3 ! takayama 673: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 674: @noindent
675: ChangeLog
676: @itemize @bullet
677: @item
1.3 ! takayama 678: 変更を受けたファイルは
1.1 takayama 679: OpenXM/src/asir-contrib/packages/src/gtt_ekn.rr 1.1,
680: gtt_ekn/g_mat_fac.rr
681:
682: @end itemize
683:
684: @comment **********************************************************
1.3 ! takayama 685: @comment --- ◯◯◯◯ の説明
! 686: @comment --- 個々の関数の説明の開始 ---
! 687: @comment --- section 名を正確に ---
! 688: @node gtt_ekn.upAlpha,,, 超幾何関数E(k,n)
1.1 takayama 689: @subsection @code{gtt_ekn.upAlpha}
1.3 ! takayama 690: @comment --- 索引用キーワード
1.1 takayama 691: @findex gtt_ekn.upAlpha
692:
693: @table @t
694: @item gtt_ekn.upAlpha(@var{i},@var{k},@var{n})
695: ::
696: @end table
697:
1.3 ! takayama 698: @comment --- 引数の簡単な説明 --- 以下まだ書いてない.
1.1 takayama 699: @table @var
1.3 ! takayama 700: @item i a_i を a_i+1 と変化させる contiguity relation.
! 701: @item k E(k+1,n+k+2)型の超幾何関数の k. 分割表では (k+1)×(n+1).
! 702: @item n E(k+1,n+k+2)型の超幾何関数の n. 分割表では (k+1)×(n+1).
! 703: @item return contiguity relation の pfaffian_basis についての行列表現を戻す. [GM2016] の Cor 6.3.
1.1 takayama 704: @end table
705:
1.3 ! takayama 706: @comment --- ここで関数の詳しい説明 ---
! 707: @comment --- @itemize〜@end itemize は箇条書き ---
! 708: @comment --- @bullet は黒点付き ---
1.1 takayama 709: @itemize @bullet
710: @item
1.3 ! takayama 711: upAlpha は [GM2016] の Cor 6.3 の行列 U_i を戻す.
! 712: @item 関連する各関数の簡潔な説明と例も加える.
! 713: @item a_i を a_i-1 と変化させたい場合は関数 downAlpha を用いる.
! 714: @item a_i と分割表の周辺和を見るには, 関数 marginaltoAlpha([行和,列和]) を用いる.
1.1 takayama 715: @item
1.3 ! takayama 716: pfaffian_basis は [GM2016] の4章のベクトル F に対応する偏微分を戻す.
1.1 takayama 717: @end itemize
718:
1.3 ! takayama 719: @comment --- @example〜@end example は実行例の表示 ---
! 720: 例: 以下の例は 2×2分割表(E(2,4)), 2×3分割表(E(2,5))の場合である.
! 721: [2225] までは出力を略している.
1.1 takayama 722: @example
723: [2221] gtt_ekn.marginaltoAlpha([[1,4],[2,3]]);
724: [[a_0,-4],[a_1,-1],[a_2,3],[a_3,2]]
1.3 ! takayama 725: [2222] gtt_ekn.upAlpha(1,1,1); // E(2,4) の a_1 方向の
! 726: // contiguity を表現する行列
! 727: [2223] gtt_ekn.upAlpha(2,1,1); // E(2,4) の a_2 方向
! 728: [2224] gtt_ekn.upAlpha(3,1,1); // E(2,4) の a_3 方向
1.1 takayama 729: [2225] function f(x_1_1);
730: [2232] gtt_ekn.pfaffian_basis(f(x_1_1),1,1);
731: [ f(x_1_1) ]
732: [ (f{1}(x_1_1)*x_1_1)/(a_2) ]
733: [2233] function f(x_1_1,x_1_2);
734: f() redefined.
1.3 ! takayama 735: [2234] gtt_ekn.pfaffian_basis(f(x_1_1,x_1_2),1,2); // E(2,5), 2*3 分割表
1.1 takayama 736: [ f(x_1_1,x_1_2) ]
737: [ (f{1,0}(x_1_1,x_1_2)*x_1_1)/(a_2) ]
738: [ (f{0,1}(x_1_1,x_1_2)*x_1_2)/(a_3) ]
739: @end example
740:
741:
1.3 ! takayama 742: @comment --- 参照(リンク)を書く ---
1.1 takayama 743: @table @t
1.3 ! takayama 744: @item 参照
1.1 takayama 745: @ref{gtt_ekn.nc}
746: @ref{gtt_ekn.gmvector}
747: @end table
748:
1.3 ! takayama 749: @comment --- ChangeLog を書く. ソースコードの位置. 変更日時 など CVSサーバを見るため
1.1 takayama 750: @noindent
751: ChangeLog
752: @itemize @bullet
753: @item
1.3 ! takayama 754: この関数は [GM2016]
! 755: で与えられたアルゴリズムに従い contiguity relation を導出する.
1.1 takayama 756: @item
1.3 ! takayama 757: 変更を受けたファイルは
1.1 takayama 758: OpenXM/src/asir-contrib/packages/src/gtt_ekn/ekn_pfaffian_8.rr 1.1.
759: @end itemize
760:
761:
762:
1.3 ! takayama 763: @comment --- おまじない ---
1.1 takayama 764: @node Index,,, Top
765: @unnumbered Index
766: @printindex fn
767: @printindex cp
768: @iftex
769: @vfill @eject
770: @end iftex
771: @summarycontents
772: @contents
773: @bye
1.3 ! takayama 774: @comment --- おまじない終り ---
1.1 takayama 775:
776:
1.3 ! takayama 777: // 2 x m 分割表において似た機能を有する関数の利用例を参考までに記載する;
! 778: // 正規化定数とその微分関連.
! 779: // その1.
1.1 takayama 780: [3077] A=tk_fd.marginal2abc([4,5],[2,4,3]);
781: [-4,[-4,-3],-1]
782: [3078] tk_fd.ahmat_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
783: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
784: [ 1 1 1 ]
785: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
786: [4483/124416,[[353/7776,1961/15552,185/1728],[553/20736,1261/15552,1001/13824]]]
1.3 ! takayama 787: // 戻値は [Z, [[d_11 Z, d_12 Z, d_13 Z],[d_21 Z, d_22 Z, d_23 Z]]] の値.
1.1 takayama 788:
1.3 ! takayama 789: // その2.
1.1 takayama 790: [3079] tk_fd.log_ahmat_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
791: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
792: [ 1 1 1 ]
793: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
794: [-3.32333832422461674639485797719209322217260539267246045320,
795: [[1.25987062235110417131385233102832924380994869507026544724,3.49944233772027660049074280615659156814633058219942003122,2.97122462636627258532232879768012491635065804149007361142],
796: [0.740129377648895828686147668971670756190051304929734552754,2.25027883113986169975462859692170421592683470890028998438,2.00959179121124247155922373410662502788311398616997546285]]]
1.3 ! takayama 797: // 戻値は [log(Z),
1.1 takayama 798: // [[d_11 log(Z), d_12 log(Z), d_13 log(Z)],
799: // [d_21 log(Z), d_22 log(Z), d_23 log(Z)]]]
1.3 ! takayama 800: // の近似値.
1.1 takayama 801:
1.3 ! takayama 802: // その3.
1.1 takayama 803: [3082] fd_hessian2(A[0],A[1],A[2],[1/2,1/3]);
804: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
805: [4483/124416,[ 1961/15552 185/1728 ],
806: [ 79/288 259/864 ]
807: [ 259/864 47/288 ]]
1.3 ! takayama 808: // 戻値は [F=F_D, gradient(F), Hessian(F)]
1.1 takayama 809:
1.3 ! takayama 810: // 参考.
! 811: // ygahvec で巾関数分の調整. 独立した関数はないようだ.
1.1 takayama 812:
813: //-----------------------------------------------------------------------
1.3 ! takayama 814: // 2 x m 分割表において似た機能を有する関数の利用例を参考までに記載する;
! 815: // 期待値関連.
1.1 takayama 816: [3079] A=tk_fd.marginal2abc([4,5],[2,4,3]);
817: [-4,[-4,-3],-1]
818: [3080] tk_fd.expectation_abc(A[0],A[1],A[2],[[1,1/2,1/3],[1,1,1]]);
819: RS=[ 4 5 ], CSnew=[ 2 4 3 ], Ynew=[ 1 1/2 1/3 ]
820: [ 1 1 1 ]
821: Computing Dmat(ca) for parameters B=[-4,-3],X=[ 1/2 1/3 ]
822: [[5648/4483,7844/4483,4440/4483],
823: [3318/4483,10088/4483,9009/4483]]
1.3 ! takayama 824: // 各セルの期待値.
1.1 takayama 825:
826: //-----------------------------------------------------------------------
1.3 ! takayama 827: // ot_hgm_ahg.rr の例. 実験的なため module 化されていない.
1.1 takayama 828: [3237] import("ot_hgm_ahg.rr");
1.3 ! takayama 829: // 2 x 2 分割表.
1.1 takayama 830: [3238] hgm_ahg_expected_values_contiguity([[0,0,1,1],[1,0,1,0],[0,1,0,1]],
831: [9,6,8],[1/2,1/3,1/5,1/7],[x1,x2,x3,x4]|geometric=1);
832: oohg_native=0, oohg_curl=1
833: [1376777025/625400597,1750225960/625400597,2375626557/625400597,3252978816/625400597]
1.3 ! takayama 834: // 2 x 2 分割表の期待値.
1.1 takayama 835:
1.3 ! takayama 836: // 2 x 3 分割表.
1.1 takayama 837: [3238] hgm_ahg_expected_values_contiguity(
838: [[0,0,0,1,1,1],[1,0,0,1,0,0],[0,1,0,0,1,0],[0,0,1,0,0,1]],
839: [5,2,4,3],[1,1/2,1/3,1,1,1],[x1,x2,x3,x4,x5,x6]|geometric=1);
840: [5648/4483,7844/4483,4440/4483,3318/4483,10088/4483,9009/4483]
1.3 ! takayama 841: // 2 x 3 分割表の期待値. 上と同じ問題.
1.1 takayama 842:
843: /*
1.3 ! takayama 844: dojo, p.221. 成績3以下の生徒は集めてひとつに.
1.1 takayama 845: 2 1 1
846: 8 3 3
847: 0 2 6
848:
849: row sum: 4,14,8
850: column sum: 10,6,10
1.3 ! takayama 851: 0 を一つ含むので, (3,6) 型の A から 7 列目を抜く.
1.1 takayama 852: */
1.3 ! takayama 853: // 3 x 3 分割表. 構造的0が一つ.
1.1 takayama 854:
855: A=[[0,0,0,1,1,1, 0,0],
856: [0,0,0,0,0,0, 1,1],
857: [1,0,0,1,0,0, 0,0],
858: [0,1,0,0,1,0, 1,0],
859: [0,0,1,0,0,1, 0,1]];
860: B=[14,8,10,6,10];
861: hgm_ahg_expected_values_contiguity(A,B,[1,1/2,1/3,1,1/5,1/7,1,1],[x1,x2,x3,x4,x5,x6,x7,x8]|geometric=1);
862:
1.3 ! takayama 863: // 答.
1.1 takayama 864: [14449864949304/9556267369631,10262588586540/9556267369631,13512615942680/9556267369631,
865: 81112808747006/9556267369631,21816297744346/9556267369631,30858636683482/9556267369631,
866: 25258717886900/9556267369631,51191421070148/9556267369631]
867:
868:
869: /*
1.3 ! takayama 870: 上のデータで 0 を 1 に変更.
1.1 takayama 871: 2 1 1
872: 8 3 3
873: 1 2 6
874:
875: row sum: 4,14,9
876: column sum: 11,6,10
877: */
1.3 ! takayama 878: // 3 x 3 分割表.
1.1 takayama 879: A=[[0,0,0,1,1,1,0,0,0],
880: [0,0,0,0,0,0,1,1,1],
881: [1,0,0,1,0,0,1,0,0],
882: [0,1,0,0,1,0,0,1,0],
883: [0,0,1,0,0,1,0,0,1]];
884: B=[14,9,11,6,10];
885: hgm_ahg_expected_values_contiguity(A,B,[1,1/2,1/3,1,1/5,1/7,1,1,1],[x1,x2,x3,x4,x5,x6,x7,x8]|geometric=1);
886:
1.3 ! takayama 887: // 期待値, 答.
1.1 takayama 888: [207017568232262040/147000422096729819,163140751505489940/147000422096729819,217843368649167296/147000422096729819,
889: 1185482401011137878/147000422096729819,358095302885438604/147000422096729819,514428205457640984/147000422096729819,
890: 224504673820628091/147000422096729819,360766478189450370/147000422096729819]
891:
1.3 ! takayama 892: // Z やその微分の計算は hgm_ahg_contiguity 関数がおこなうが, これの簡易インターフェースは
! 893: // まだ書いてない.
1.1 takayama 894:
895:
1.3 ! takayama 896: 4. x_ij は [GM2016] の1章で,
! 897: たとえば 3x3 の時 [[1,1,1],[x_11,x_12,1],[x_21,x_22,1]]
! 898: となっているが, [GM2016] の Prop 7.1 の対応では,
! 899: p = [[1,x_11,x_12],[1,x_21,x_22],[1,1,1]] となっているので注意.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>