PHC 函数
******

この節では PHC pack の ox サーバ ox_sm1_phc とのインタフェース関数を解説する. これらの関数はファイル  phc で定義されている. phc は $(OpenXM_HOME)/lib/asir-contrib にある.

          [file opening.texi not included]
     [255] phc.start();
     0
     [257] phc.phc([x^2+y^2-4,x*y-1]);
     The detailed output is in the file tmp.output.*
     The answer is in the variable Phc.
     0
     [260] Phc ;
     [[[-0.517638,0],[-1.93185,0]],
     [[1.93185,0],[0.517638,0]],
     [[-1.93185,0],[-0.517638,0]],
     [[0.517638,0],[1.93185,0]]]
     [261]

Author of PHC pack: Jan Verschelde.

参考書 1: Jan Verschelde, PHCpack: A general-purpose solver for polynomial systems by homotopy continuation".  ACM Transaction on Mathematical Softwares, 25(2): 251-276, 1999.

参考書 2: Cox, D., O'Shea, Little, J.,  Using Algebraic Geometry, Springer. Mixed volumes についての章を見よ.

函数一覧
====

phc.start
---------

phc.start()
     ::  Localhost で ox_sm1_phc を起動する.

return
     整数

  * Localhost で ox_sm1_phc を起動する. 起動された ox_sm1_phc の識別番号を戻す.

  * Xm_noX =1 としておくと, ox_sm1_phc 用の debug window が開かない.

  * 識別番号は Phc_proc に格納される.

     P = phc.start()

参照
     ox_launch, phc

phc.phc
-------

phc.phc(S|proc=P)
     ::  PHC pack に代数方程式系 S の解をすべてもとめてくれるように頼む.

return
     なし

p
     数

s
     リスト

  * 代数方程式系 S をホモトピー法で解くために PHC pack を呼ぶ. PHC pack を開発したのは Jan Verschelde である. オリジナルの配布元は www.mth.msu.edu/~jan である. PHC pack は代数方程式系を解くためにいろいろな戦略をえらぶことができるが, このインタフェース関数では, black-box solver しか用いていない. black-box solver は一般的な戦略ではあるが, 能率的ではない. この関数で代数方程式を解くのに失敗したら, オリジナルの PHC pack を用い, ほかの戦略を試してみるとよい.

  * PHC は作業ファイル tmp.phc.out.pid, tmp.input.*, tmp.output.* を生成する. ここで pid は ox_sm1_phc のプロセス番号である. ファイル tmp.output.* には PHC pack がどのように方程式系を解いたのかの詳しい情報がはいっている.

  * 変数の数と方程式の数 length(S) は等しくないといけない.

Algorithm: Jan Verschelde, PHCpack: A general-purpose solver for polynomial systems by homotopy continuation".  ACM Transaction on Mathematical Softwares, 25(2): 251-276, 1999.

     [232] P = phc.start();
     0
     [233] phc.phc([x^2+y^2-4,x*y-1]|proc=P);
     The detailed output is in the file tmp.output.*
     The answer is in the variable Phc.
     0
     [234] Phc;
     [[[-1.93185,0],[-0.517638,0]],
      [[0.517638,0],[1.93185,0]],
      [[-0.517638,0],[-1.93185,0]],
      [[1.93185,0],[0.517638,0]]]

      [[x=[real, imaginary], y=[real,imaginary]],  the first solution
       [x=[real, imaginary], y=[real,imaginary]],  the second solution
       ...

参照
     ox_launch, phc.start, $(OpenXM_HOME)/bin/lin_phcv2(original PHC pack binary for linux)