Подтвердить что ты не робот

Вычислить точную область под кривой в Java

Существуют ли какие-либо методы? У меня есть приложение, где мне нужна область под кривой, и мне дается формула, поэтому, если я смогу выполнить интеграцию под рукой, я должен сделать это программно? Я не могу найти имя метода, о котором я говорю, но это изображение демонстрирует его: http://www.mathwords.com/a/a_assets/area%20under%20curve%20ex1work.gif

Изменить: всем, кто отвечает, я уже реализовал прямоугольное, трапециевидное и правило Симпсона. Тем не менее, они принимают как полосы 10k +, чтобы быть точными, и не должен ли я быть в состоянии найти программно интегрированную версию функции? Если нет, для этого должна быть чертовски веская причина.

4b9b3361

Ответ 1

Численное интегрирование
Существует несколько методов, которые можно использовать. Для описания, посмотрите Численные рецепты: искусство научных вычислений.
Для Java есть библиотека Apace Commons, которую можно использовать. Процедуры интеграции находятся в разделе Численный анализ.

Символическая интеграция
Проверьте jScience. Функции модуль" обеспечивает поддержку довольно простого символического математического анализа (для решения алгебраических уравнений, интеграции, дифференцирования, вычисления выражений и т.д.). < ш > Если задан тип функции, в этом конкретном случае можно быстрее интегрировать, чем при использовании некоторой стандартной библиотеки.

Ответ 2

Чтобы вычислить его точно, вам понадобится библиотека система компьютерной алгебры для выполнения символических манипуляций. Такие системы довольно сложно реализовать, и я не знаком с высококачественными библиотеками с открытым исходным кодом для Java. Альтернатива, однако, если она соответствует вашим требованиям, заключалась бы в оценке площади под кривой с помощью трапецеидального правила. В зависимости от того, насколько точным вам нужен ваш результат, вы можете соответствующим образом изменить размер подразделений.

Ответ 3

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

Ответ 5

Вы можете использовать цифровую интеграцию используя некоторое правило, как уже упоминалось, Simpsons, Trapezoidal или Моделирование Монте-Карло. Он использует псевдослучайную генерацию.

Вы можете попробовать некоторые библиотеки для символической интеграции, но я не уверен, что вы можете получить символическое представление каждого интеграла.

Ответ 6

Одной из самых популярных форм цифровой интеграции является метод 4-го порядка (RK4) Рунге-Кутта. Он реализуется следующим образом:

double dx,  //step size 
       y ;  //initial value
for(i=0;i<number_of_iterations;i++){
    double k1=f(y);
    double k2=f(y+dx/2*k1);
    double k3=f(y+dx/2*k2);
    double k4=f(y+dx*k3);
    y+= dx/6*(k1+2*k2+2*k3+k4);
}

и будет сходиться намного быстрее, чем прямоугольник, трапеция и правило Симпсона. Это один из наиболее часто используемых методов интеграции в физическое моделирование.