Создание и вычисление многочленов¶
В этом демонстрационном примере рассмотрены базовые операции с многочленами: создание, вычисление и нахождение корней.
Для работы с многочленами - их созданием, вычислением, нахождением корней и математическими операциями над ними в Engee можно воспользоваться библиотекой Polynomials.jl
. Загрузим и подключим её для данного примера.
import Pkg
Pkg.add("Polynomials")
using Polynomials;
Создание многочлена¶
Для того, чтобы создать многочлен вида
$4 \cdot x^2 - 4 \cdot x + 1$ воспользуемся функцией Polynomial()
, которой передадим вектор его коэффициентов, начиная со свободного члена.
Polynomial([1, -4, 4])
Также создать многочлен можно, передав в функцию переменную коэффициентов - в виде вектора или матрицы $1 \times (n+1)$. Результат работы функции (многочлен) можно передать переменной для дальнейших операций.
p = [4 0 0 -3 2 33];
y = Polynomial(p)
Функция создания многочлена может быть рассчитана поэлементно. Результатом такого вызова будет вектор многочленов, а в функцию необходимо будет передать вектор, состоящий из векторов коэффициентов.
P1 = [1, 2, 3, 0, 1];
P2 = [1, 0, -1];
P3 = [0, -1, 4, -2];
P = [P1, P2, P3];
Y = Polynomial.(P)
По умолчанию, переменной многочленов является x
. Для изменения переменной необходимо задать её явно:
Polynomial([1,2,3], :t)
Создать многочлен можно по значениям его корней, используя при этом функцию fromroots()
. Форма задания многочлена $(x-4) \cdot (x-1) \cdot (x-2)$ будет воспроизведиться в следующем виде.
u = fromroots([4,1,2])
Вычисление многочлена¶
Вычисление многочленов производится при помощи нотации вызова. Рассчитаем ранее созданный многочлен $y=4-3 \cdot x^3 + 2 \cdot x^4 + 33 \cdot x^5$ в точке $x = 1$.
y(1)
Для вычисления многочлена, созданного при помощи поэлементного вызова, необходимо обращаться к элементу созданного вектора. Например, вычислим многочлен $Y_2 = -x^2+1$ в точке $x = 0,1$.
Y[2](0.1)
Нахождение корней многочлена¶
Для нахождения корней многочлена используется функция roots()
. Ей необходимо передать многочлен - например, через функцию создания:
roots(Polynomial([1, 0, -1]))
Вычислим корни функции, созданной ранее по значениям корней: $u = (x-4) \cdot (x-1) \cdot (x-2)$.
roots(u)
Как видно из результата вычисления функции, полученные значения корней не равны заданным, что объясняется погрешностью при расчёте чисел с плавающей точкой.
Результатом вычисления функции нахождения корней может быть вектор комплексных чисел. Например, вычислим корни для ранее заданного многочлена $y=4-3 \cdot x^3 + 2 \cdot x^4 + 33 \cdot x^5$.
roots(y)
Также корни можно вычислить поэлементно, для вектора многочленов $Y$:
roots.(Y)
Вывод¶
В этом примере мы рассмотрели основные подходы базовых операций с многочленами: создания, вычисления и нахождения корней. Для более детального изучения темы и улучшения навыков работы с многочленами в Engee рекомендуем обратиться к соответствующим разделам документации: Библиотека Polynomials.jl.