2016-12-31 1 views
2

일부 수치 차별화 작업을 위해 commons-math 라이브러리를 사용하려고합니다. 필자는 DerivativeStructures를 사용하여 매우 간단한 함수를 만들었습니다. 명백하게 나는 틀렸다.커먼즈 미분 미분 결과는 0입니다.

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)); // (?) 
} 

I는 1, 2 차 상기 다 변수 함수 f (X)의 편미분을 얻으려고 = X^2 + y^2 시점에서 (2.0, 4.0). 결과적으로 나는 df/dx에 대해 4.0을, df/dy에 대해 8.0을 첫 번째 부분 partials로 기대합니다. 2.0 두 번째 부분 부분입니다. 그러나 나는 올바른 f (x, y) 값을 얻고 있으며이 javadoc에서 조금이라도 생각조차하지 못합니다. 여기에 stackoverflow에 대한 몇 가지 질문을 평행 수학에 대한 불투명 한 설명서에 대한 의견이 있지만 다 변수 함수에 대한 작동 예제는 아닙니다. 단 변량 나는 운동 할 수 있지만,이 ...

어떤 조언을 부탁드립니다!

답변

2

코드에서 실제로는 2 개의 독립 변수 x0, y0을 지정하지 않고 단지 1을 사용합니다. DerivativeStructure x0, y0은 실제로는 변수 p의 암시 적 벡터에 따라 함수 자체로 간주됩니다. 각각의 독립 변수에 대해 서로 다른 색인을 p 독립 변수 벡터에 입력해야합니다. 당신이해야 할 것은 : 세 번째 매개 변수 (들) 0과 1이 p 벡터, 따라서 두 개의 서로 다른 독립 변수에 2 개 개의 다른 인덱스를 나타냅니다

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

. DerivativeStructure을 만들 때이 매개 변수를 생략하면 코드 0에서 0이 가정되므로 y0는 독립적이지 않습니다.

Further Reading