Apache Commons Math: функция получения/интеграции

Я работаю с PolynomialFunction. Я вывожу/интегрирую свою функцию f следующим образом:

// derivation ...
new PolynomialFunction(vector).value(x).getPartialDerivative(derivationOrder)
// integration ...
UnivariateIntegrator integrator = new IterativeLegendreGaussIntegrator(pointsNumber, relativeAccuracy, absoluteAccuracy, minIterations, maxIterations);
integrator.integrate(128, f, from, to);

Но как получить результат вывода/интегрирования из функции f без указания реальных значений?

т.е. производное (8 + 3x + x^2) => 3 + 2x


person VB_    schedule 04.06.2015    source источник


Ответы (2)


Я не верю, что библиотека Apache Math Commons поддерживает символическое происхождение/интеграцию. Однако, если вы используете полиномы, как следует из вашего вопроса, это достаточно просто в вычислительном отношении. Если вы представляете многочлен в виде массива коэффициентов, как это делает Apache для своей PolynomialFunction, это довольно просто.

Производная:

  1. Умножьте каждый коэффициент на степень соответствующего монома (который оказывается индексом коэффициента).
  2. Удалите 0 в начале массива.

Интеграция:

  1. Разделите каждый коэффициент на степень соответствующего монома + 1 (индекс + 1).
  2. Добавьте неопределенную константу в начало массива (если вы не интегрируете от 0 до вашей переменной, и тогда вы можете сделать ее 0).

Сделать это для произвольной функции становится намного сложнее, а иногда даже невозможно. Есть программы, которые неплохо с этим справляются, например, SageMath. Я бы проконсультировался с текстом исчисления для получения дополнительной информации. Надеюсь, это поможет!

person user3846506    schedule 12.08.2015

Для полиномиальных функций вы можете получить производные напрямую (в виде полиномов), используя метод polynomialDerivative класса PolynomialFunction. Существует также более общая установка для дифференциации, описанная в анализе. раздел Руководства пользователя Commons Math.

person Phil Steitz    schedule 23.08.2015