Документация Engee
Notebook

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

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

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

In [ ]:
using Polynomials

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

Зададим многочлен $p(x) = x^3-4x^2+7$

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

Найдём первую производную многочлена $q_1(x)=p'(x)=3x^2-8x$:

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

Найдём вторую производную многочлена $q_2(x) = q_1'(x)= p''(x) = 6x-8$:

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

Найдём производную рационального выражения $\frac{a(x)}{b(x)}$, где $a(x)$ и $b(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)

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

$$c(x) = \left( \frac{a(x)}{b(x)} \right)' = \left( \frac{x^2+3x+5}{2x^2+4x+6} \right)' = \frac{-2x^2-8x-2}{4x^4+16x^3+40x^2+48x+36}$$

В случае, если функция 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() при вычислении производной рациональной функции возвращает два значения, то мы получим многочлены числителя и знаменателя результирующего выражения:

$$c(x) = \frac{c_n(x)}{c_d(x)} = \frac{-2x^2-8x-2}{4x^4+16x^3+40x^2+48x+36}$$ $$c_n(x) = -2x^2-8x-2$$ $$c_d(x) = 4x^4+16x^3+40x^2+48x+36$$

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)

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

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

$$s_0(x) = \int q_1(x) dx = \int \left(3x^2-8x\right) dx = x^3-4x^2 :$$

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

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

$$s(x) = \int q_1(x) dx +C= \int \left(3x^2-8x\right) dx +7 = x^3-4x^2+7$$

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

Вывод

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