Определить функцию, чтобы найти нули данного полинома - PullRequest
0 голосов
/ 14 октября 2019

завершите функцию FindRealZeros, которая принимает полином как список и возвращает список корней полинома в порядке возрастания, появляясь столько раз, сколько они повторяются

До сих пор я утверждалчто в функцию могут быть переданы только полиномы минимального порядка 1. Любая функция порядка 0 сразу же проваливает утверждение. Затем у полинома порядка 1 выводится корень.

проблема, с которой я сталкиваюсь, заключается в определении остальной части функции для порядков многочленов, больших 2., таких как и член x ^ 3.


def FindRealZeros(polynomial):



    assert len(polynomial) > 1.  
# Above i have made sure the polynomial is never just a constant or empty list such as [a], or y = a and [].




    assert EnsureStandardForm(polynomial)
# Above ensures that there are never additional zeros that does not satisfy the previous assertion.     



    if len(polynomial) == 2:     
#######################################################################
#   Here i am saying that if given a linear polynomai, ax + b, then return the root #
#               (given by the equation using the members of the list)               #
#######################################################################
        first_member = polynomial[0]
        second_member = polynomial[1]

        root = [(-first_member)/second_member]
        return root

Пока что код, который я реализовал, работает отлично. проблема в том, что я застрял на том, где заняться этим дальше. Я могу попытаться выяснить, как можно вычислить корни полинома 3-го, 4-го и т. Д., Но это не помогает мне, поскольку мне нужно иметь возможность создавать код для любого заданного полинома n-го порядка.

1 Ответ

0 голосов
/ 14 октября 2019

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

  • 1-й порядок: просто, вы просто даете решение
  • 2-й порядок: простой, есть формула для этого
  • 3-й порядок: все еще выполнимо, но становится сложнее (требуется полиномиальное деление!)
  • 4-й порядок и выше: больше не тривиально

Но вам повезло, что естьnumpy функция roots(), которая точно соответствует вашим потребностям.

...