Сообщество Engee

Полиномы - дифференцирование и интегрирование

Автор
avatar-alexevsalexevs
Notebook

Дифференцирование и интегрирование многочленов

В этом примере показано применение функций derivative() и integrate() из библиотеки Polynomials.jl для аналитического нахождения производных и интегралов многочленов.

Подключим библиотеку Polynomials.jl:

In [ ]:
using Polynomials

Дифференцирование многочленов

Зададим многочлен

In [ ]:
p = Polynomial([7, 0, -4, 1])
Out[0]:
7 - 4∙x2 + x3

Найдём первую производную многочлена :

In [ ]:
q_1 = derivative(p)
Out[0]:
-8∙x + 3∙x2

Найдём вторую производную многочлена :

In [ ]:
q_2 = derivative(p, 2)
Out[0]:
-8 + 6∙x

Найдём производную рационального выражения , где и - многочлены:

In [ ]:
a = Polynomial([5, 3, 1]);
b = Polynomial([6, 4, 2]);
ab = a // b
Out[0]:
(5 + 3*x + x^2) // (6 + 4*x + 2*x^2)

Первая производная такого выражения будет равна:

В случае, если функция derivative() при вычислении производной рациональной функции возвращает одно значение, то полученное значение также будет рациональной функцией:

In [ ]:
c = derivative(ab)
Out[0]:
(-2 - 8*x - 2*x^2) // (36 + 48*x + 40*x^2 + 16*x^3 + 4*x^4)

Если же функция derivative() при вычислении производной рациональной функции возвращает два значения, то мы получим многочлены числителя и знаменателя результирующего выражения:

In [ ]:
c_n, c_d = derivative(ab)
[c_n, c_d]
Out[0]:
2-element Vector{Polynomial{Int64, :x}}:
 Polynomial(-2 - 8*x - 2*x^2)
 Polynomial(36 + 48*x + 40*x^2 + 16*x^3 + 4*x^4)

Интегрирование многочленов

Найдем интеграл многочлена

In [ ]:
s_0 = integrate(q_1)
Out[0]:
-4.0∙x2 + 1.0∙x3

Найдём интеграл этого же многочлена, но с добавлением свободного коэффициента:

In [ ]:
s = integrate(q_1, 7)
Out[0]:
7.0 - 4.0∙x2 + 1.0∙x3

Вывод

В этом демонстрационном примере были рассмотрены способы дифференцирования и интегрирования многочленов средствами библиотеки Polynomials.jl.