2

数値微分タスクに commons-math ライブラリを使用しようとしています。DerivativeStructures を使用して、機能すると思われる非常に単純な関数を作成しました。どうやら私が間違っていたようです。

public static void main(String[] args) {
    DerivativeStructure x0 = new DerivativeStructure(2, 2, 2.0);
    DerivativeStructure y0 = new DerivativeStructure(2, 2, 4.0);
    DerivativeStructure xi = x0.pow(2);
    DerivativeStructure yi = y0.pow(2);
    DerivativeStructure f = xi.add(yi);

    System.out.println(f.getValue());
    System.out.println(f.getPartialDerivative(1, 0)); // (?)
    System.out.println(f.getPartialDerivative(0, 1)); // (?)
}

ポイント(2.0、4.0)で多変量関数f(x)= x ^ 2 + y ^ 2の1次および2次偏導関数を取得しようとしています。結果として、df/dx では 4.0、df/dy では 8.0 が 1 次パーシャルとして期待されます。2 次パーシャルの場合は 2.0。しかし、私は正しい f(x,y) 値を取得していますが、この javadoc からは少しもわかりません。ここでスタックオーバーフローに関するいくつかの質問を見ましたが、commons-math の不透明なドキュメントについていくつかのコメントがありましたが、多変量関数の実際の例はありませんでした。一変量私は解決できますが、これはできません...

ヒントをいただければ幸いです。

4

1 に答える 1

2

あなたのコードでは、2 つの独立した変数 x0、y0DerivativeStructureを実際には指定していませんが、1 つだけを指定していますpp独立変数ごとに、独立変数のベクトルに異なるインデックスを与える必要があります。あなたがする必要があるのは:

DerivativeStructure x0 = new DerivativeStructure(2, 2, 0, 2.0);
DerivativeStructure y0 = new DerivativeStructure(2, 2, 1, 4.0);

3 番目のパラメーター 0 と 1 は、pベクトル内の 2 つの異なるインデックスを示しているため、2 つの異なる独立変数を示しています。を作成するときにこのパラメーターを省略するとDerivativeStructure、0 が想定されるため、コードでは x0、y0 は独立していません。

参考文献

于 2016-12-31T13:54:13.320 に答える