2016-12-31 7 views
2

Я пытаюсь использовать commons-math library для какой-то задачи численного дифференцирования. Я построил очень простую функцию, используя DerivativeStructures, которая, как я думал, будет работать; видимо, я ошибся.commons-math результат дифференциации 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)); // (?) 
} 

Я пытаюсь получить 1-й и 2-го порядка в частных производных многомерная функция f (х) = х^2 + у^2 в точке (2,0, 4,0). В результате я ожидал бы 4.0 для df/dx и 8.0 для df/dy как частичный порядок первого порядка. 2.0 для частичных заказов второго порядка. Однако я получаю правильное значение f (x, y), и у меня даже нет ни малейшего представления об этом javadoc. Я видел пару вопросов здесь, в stackoverflow с некоторыми комментариями о непрозрачной документации для commons-math, но не рабочий пример для многомерных функций. Univariate Я могу разработать, но не это ...

Любые советы будут оценены!

ответ

2

В коде вы не указали 2 независимых переменных x0, y0, но только 1. С DerivativeStructure x0 y0 фактически рассматриваются как функции в зависимости от неявного вектора переменных p. Для каждой независимой переменной вам нужно указать другой индекс в вектор независимых переменных. Что вам нужно сделать, это:

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

Если третий параметр (s) 0 и 1 указывают на 2 различных индексов в p векторе поэтому два различных независимых переменных. Если вы опустите этот параметр при создании DerivativeStructure, то 0 предполагается, что в вашем коде x0 y0 не являются независимыми.

Further Reading