Есть ли встроенный API для решения сложных математических задач, таких как интеграция и дифференцирование? - PullRequest
3 голосов
/ 16 сентября 2010

Мне нужно реализовать алгоритм, который имеет интенсивный математический расчет.Есть ли уже поддержка в Java для этого?Или есть сторонние поставщики, которые предоставляют эту поддержку?

Ответы [ 3 ]

5 голосов
/ 16 сентября 2010

JavaCalc может соответствовать вашим потребностям

Цель
Основной целью этого проекта является разработка символической библиотеки для Java, которая может обрабатывать регулярные алгебраические выражения, а также стандартные функции исчисления. В частности, библиотека должна поддерживать:

• Разбор стандартных алгебраических выражений (синтаксического дерева) из строки.
• Упрощение алгебраических выражений (факторинг, общий знаменатель, тригонометрические тождества и т. Д.).
• Применение символических стандартных функций исчисления (дифференцирование, интегрирование) к алгебраическим выражениям.
• Общие инструменты исчисления (ряд Тейлора, пределы, числовые приближения).
• Графические инструменты (с использованием свинга).
• Если позволяет время, поддержка дифференциальных уравнений (символьный решатель, приближение Эйлера, преобразование Лапласа).

1 голос
/ 16 сентября 2010

Нет встроенных функций, отвечающих таким потребностям, однако вы можете проверить библиотеку, например commons-math

Надеюсь, это поможет.

0 голосов
/ 19 июля 2015

Если у вас есть веб-приложение и вы хотите, чтобы REST API обслуживался через HTTP, проверьте SaturnAPI . Вы можете написать свои собственные сценарии Matlab и Octave и разместить их там. Затем из вашего веб-приложения вы можете выполнять простые HTTP-запросы POST с входными данными для выполнения сценариев. Затем вы можете получить данные ответа HTTP в качестве вывода скрипта. Ниже приведен пример интеграции , которую можно разветвить. Вы также можете найти в Интернете примеры Matlab и Octave, которые соответствуют вашим потребностям, и использовать их в SaturnAPI.

%%%%%%%%%%%%%%%%%%%%%%%%%% Integrating Differential Equations %%%%%%%%%%%%%%%%%%%%%%%%%%
% (GNU License)
% SaturnAPI has built-in functions for solving nonlinear differential equations of the form
%
%     dx
%     -- = f (x, t)
%     dt
%
% with the initial condition
%
%     x(t = t0) = x0
%
% For SaturnAPI to integrate equations of this form, 
% you must first provide a definition of the function f(x,t). 
% Do this by entering the function body directly in the API script. 
% The example script below defines the right-hand side function xdot
% for an interesting pair of nonlinear differential equations. 
% It computes the integral and prints the last term to be sent as the HTTP response data. 
% SaturnParams is an array containing the initial condition
% For instance, SaturnParams='[1 ; 2]'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function xdot = f (x, t)

  r = 0.25;
  k = 1.4;
  a = 1.5;
  b = 0.16;
  c = 0.9;
  d = 0.8;

  xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
  xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);

endfunction

x0 = SaturnParams;
t = linspace (0, 50, 200)';
x = lsode ("f", x0, t);

printf("%f", x(length(x)));

Раскрытие: я работал над SaturnAPI

...