Classiclll's Blog

an old boy

さらにEqSysも妄想中

さらにEqSysも妄想中


EqSys:方程式系のモデル

/*[class] Mat 5/20/2008 by Classiclll
 多価関数 F : R^n -> R^m および、方程式系 F(x) = [0] の抽象モデル
 利用するには、EqSysから継承して、抽象メソッド
   valueAt(x) :ベクトルxにおける値を評価する
   gradAt(x) :ベクトルxにおけるグラディエントを評価する
 の実装が必要。(domとrngへの正しい値の設定も忘れずに)
 陽にナブラを評価できない(=微分不可能な)関数の場合、
   gradAt(x):nullを返す
   diffAt(x, d):オーバーライドして、[{Fi(x+d)-Fi(x)}/dj]を定義する
 ように実装する。
 (現在のところ実装予定の解法はニュートン法のみ)

抽象クラス

abstract class EqSys {

    private int dom=0, rng=0;
    int domDim() 			 	 //dimension of the domain (n)
    int rngDim() 				 //dimension of the range (m)
    
    abstract double valueAt(Vec x);  //value of the equation (R^n -> R^m) system.
    abstract Vec gradAt(Vec x);  //gradient vec of the EqSys.
    
    Vec diffAt(Vec x, Vec d)   	  // overwride if needed
    Vec solveByNewton(Vec x0)    // find the solution by the newton, start from x0
  }