Корни полиномов

Это приложение было создано для решения проблемы расчета реальных корней данного полинома уникальным образом.

Описание

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

Описание кода

Командная линия Java.

Концепция этого алгоритма включает следующие этапы:

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

Тем не менее, есть улов 22: мы должны сначала вычислить ноли производной функции, чтобы определить нули самого полиномиала!

Решение: Мы применяем рекурсию до тех пор, пока не достигнем полиномиала, который позволяет легко рассчитать его нули. Этот процесс может быть повторен до тех пор, пока мы не выработаем аффиновую функцию.


Недостатки:

  • Если степень полинома (n) велика, то производное может дать очень большое число (как n!), что может осложнить расчеты.
  • Сложность операций будет зависеть от размера цифр, которые могут быть представлены как функция log(n)!

Для реалистичных степеней, найденных в реальной жизни, не должно быть проблем


Алгоритм был разработан без допущения каких-либо данных о плавающей точке, используя вместо этого Java generals

Приложение поддерживает использование Double или BigDecimal, но версия Float может быть легко внедрена

Это доказательство концепции. Программирование только для Большого Decimal было бы достаточно, но использование общих алгоритмов делает алгоритмы круче и более иллюстративными для начинающих


Я еще не тщательно проверил приложение, и есть вероятность, что оно может быть отточено, чтобы повысить точность и функциональность в большем числе сценариев.

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

Окна

Полиномические корни (2023 год)

Загрузка

Версия

image

Полиномические корневые калькуляторы являются основным элементом в области компьютерной науки.

Я представляю свою версию решения проблемы.

Это не очень эффективное решение, поскольку вычислительная сложность в наихудшем случае - O(G)2), где G представляет полиномиальную степень.

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


Алгоритм основан на вычислении корней полиномиала при условии, что корни его производной функции известны.

При этом предположении легко рассчитать корни, потому что мы можем определить предел дальности корней.(См.:Свойства полиномических корней)

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

Но... нам нужна функция, чтобы рассчитать корни производной функции!

Нет проблем. Мы используем рекурсию для расчета корней полинома. Рекурсивная функция имеет случай прекращения сценария полиномия градуса ноль (константа), который, как мы полагаем, не имеет корней.

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


Такой способ работы может потребовать точности в наших расчетах, но это не проблема, если мы используем класс Java BigDecimal.

Загрузка