Самый эффективный способ вычисления интегралов/производных введенных функций в Java?

Теперь у меня есть идея, что я использую функцию как строку, вычисляю действительный интеграл вручную и задаю вопрос пользователю, что такое определенный интеграл, но это не реальное решение.

Мне было интересно, есть ли способ ввести функцию и вывести интеграл/производную (в зависимости от выбора пользователя). Моим первым шагом было каким-то образом поместить его в массив, но, учитывая множество типов функций, этого не произошло.

Я исследовал везде, и я не нашел ни метода, который действительно делает это без дополнительного кода, ни какого-либо кода, который действительно делает это, и точка.

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

Спасибо :)


person Community    schedule 31.01.2012    source источник


Ответы (2)


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

В качестве альтернативы, более простой задачей, чем символическое интегрирование, является [символическая дифференциация -- и, если дифференциал пользовательского ввода эквивалентен* выражению, которое его просили интегрировать, то его интеграл, вероятно, верен.

Вы также можете рассмотреть возможность использования существующей CAS**, такой как Mathematica, для реализации этого. Они уже реализовали большинство инструментов, которые вам нужны.

*: Имейте в виду, однако, что два математических выражения могут быть эквивалентны, не будучи идентичными, либо в тривиальных отношениях (например, термины в другом порядке), более сложные (например, большие выражения, факторизованные по-разному), либо фундаментально (например, тригональные функции заменены комплексными экспонентами или наоборот).

**: Система компьютерной алгебры

person Community    schedule 31.01.2012
comment
Я считаю, что у Matlab на самом деле есть Java API, не уверен, что он может решить проблему такого типа, поскольку я не пользователь, но он был очень популярен на математическом факультете, когда я учился в университете. - person haskovec; 26.04.2012

Javacalculus — это то, что вам нужно.

Удачи!

person aviad    schedule 31.01.2012