logo
цос / Лаб_раб_ №1

1.3.1. Операции с полиномами

В системе MatLAB предусмотрены некоторые дополнительные возможности математического оперирования с полиномами. Полином (многочлен) как функция определяется выражением:

P(x)= a n · x n +... +a2 ·x2+ a1 ·x+ a0

В системе MatLAB полином задается и сохраняется в виде вектора, элементами которого являются коэффициенты полинома от an до a0 в указанном порядке:

P = [an ... a2 a1 a0 ] .

Введение полинома в MatLAB осуществляется так же, как и ввод вектора длиной n+1, где n - порядок полинома.

Умножение полиномов. Произведением двух полиномов степеней n и m соответственно, как известно, называют полином степени n+m, коэффициенты которого определяют простым перемножением этих двух полиномов. Фактически операция умножения двух полиномов сводится к построению расширенного вектора коэффициентов по заданным векторам коэффициентов полиномов-сомножителей. Эту операцию в математике называют сверткой векторов (а сам вектор, получаемый в результате такой процедуры - вектором-сверткой двух векторов). В MatLAB ее осуществляет функция conv(P1, P2).

Аналогично, функция deconv(P1, P2) осуществляет деление полинома P1 на полином P2, т. е. обратную свертку векторов P1 и P2. Она определяет коэффициенты полинома, который является частным от деления P1 на P2.

Пример:

» p1 = [1,2,3]; p2 = [1,2,3,4,5,6];

» p = conv(p1,p2)

p = 1 4 10 16 22 28 27 18

» deconv(p,p1)

ans = 1 2 3 4 5 6

В общем случае деление двух полиномов приводит к получению двух полиномов - полинома-результата (частного) и полинома-остатка. Чтобы получить оба этого полинома, следует оформить обращение к функции таким образом:

[Q,R] = deconv(B,A) .

Тогда результат будет выдан в виде вектора Q с остатком в виде вектора R таким образом, что будет выполненное соотношение

B = conv(A,Q) + R.

Система MatLAB имеет функцию roots(P), которая вычисляет вектор,элементы которого являются корнями заданного полинома Р.

Пусть нужно найти корни полинома:

P(x) = x5 + 8x4 + 31x3 + 80x2 + 94x + 20.

Ниже показано, как просто это сделать:

» p = [1,8,31,80,94,20]; » disp(roots(p))

-1.0000 + 3.0000i

-1.0000 - 3.0000i

-3.7321

-2. 0000

-0. 2679

Обратная операция - построение вектора р коэффициентов полинома по заданному вектору его корней - осуществляется функцией poly: p = poly(r).

Здесь r - заданный вектор значений корней, p - вычисленный вектор коэффициентов полинома. Приведем пример:

» p = [1,8,31,80,94,20]

p = 1 8 31 80 94 20

» r = roots(p)

r =

-1.0000 + 3.0000i

-1.0000 - 3.0000i

-3.7321

-2. 0000

-0. 2679

» p1 = poly(r)

p1 =8. 0000 31. 0000 80. 0000 94. 0000 20. 0000

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

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4