Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mip_04b.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
254.98 Кб
Скачать

Факультет ПМ-ПУ СПбГУ

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

Полиномы в среде MATLAB представляются в виде векторов-строк , содержащих коэффициенты полиномов, начиная с коэффициента при старшей степени. Например, полином представляется в виде вектора . Для ввода этого полинома в рабочее пространство можно использовать команду

>> P=[3 2 6 5]

P =

3 2 6 5

Система допускает следующие операции с полиномами.

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

>> P

P =

3 2 6 5

>> Q=[0 0 1 1]

Q =

0 0 1 1

>> N=P+Q

N =

3 2 7 6

2. Умножение полиномов. Обеспечивается функцией conv с двумя аргументами полиномами сомножителями, например

>> N=conv(P,[1 1])

N =

3 5 8 11 5

3. Деление полиномов. Выполняется с помощью функции deconv, которая имеет два полинома аргумента (делимое и делитель) и возвращает также два полинома: частное и остаток от деления. В качестве примера, разделим полученный выше полином N(s) на полином P(s):

>> [C,R]=deconv(N,P)

C =

1.0000 1.0000

R =

1.0e-015 *

0 0 0 0 0.8882

Поскольку первый полином делится на второй нацело, остаток от деления получился нулевым.

Если делимое по степени меньше делителя, то нулевым будет частное, а остаток совпадет с делимым:

>> [C,R]=deconv([1 1],P)

C =

0

R =

  1. 1

4. Вычисление значения полинома в комплексной точке. Обеспечивается функцией polyval, которая имеет два аргумента: полином и комплексную точку, в которой он вычисляется. Например, найдем значение полинома P(s) в точке :

>> s=1+2j;

>> d=polyval(P,s)

d =

-28.0000 +14.0000i

Вычислим также значение этого же полинома в нулевой точке:

>> d=polyval(P,0)

d =

5

что совпадает со свободным членом.

Заметим, что второй аргумент функции может быть матрицей. Тогда она возвратит матрицу той же размерности, компоненты которой будут равны значениям полинома в точках, определяемых компонентами второго аргумента:

>> T=[1 2;0 -1]

T =

1 2

0 -1

>> D=polyval(P,T)

D =

16 49

5 -2

5. Построение производной от полинома. Как известно, производная от полинома имеет вид

. Её формирование в системе выполняет функция polyder с одним аргументом, например:

>> F=polyder(P)

F =

9 4 6

6. Формирование полинома по его корням. Это действие можно выполнить с использованием функции poly с единственным аргументом – вектором, содержащим заданные комплексные корни, например:

>> R=poly([1 2 3])

R =

1 -6 11 -6

7. Поиск корней полинома. Обратная операция по отношению к предшествующей реализуется с помощью функции roots. Аргументом при ее вызове является полином, а найденные корни возвращаются в виде компонентов выходного вектора-столбца:

>> k=roots(R)

k =

3.0000

2.0000

1.0000

8. Построение характеристического полинома матрицы. Так же, как и при формировании полинома по корням, обеспечивается вызовом функции roots. Однако в данном случае аргументом служит квадратная матрица, например:

>> A=rand(5);

>> R=poly(A)

R =

1.0000 -3.3679 1.0610 0.3260 -0.1872 0.0181

9. Разложение дробно-рациональной функции на простейшие дроби. Дробно-рациональная функция – это отношение двух полиномов:

,

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

,

где ( ) – корни полинома , ( ) – постоянные комплексные числа.

Указанное разложение можно выполнить с помощью функции residue. В качестве двух её аргументов выступают полиномы A(s) и B(s), а возвращает эта функция три вектора: вектор-столбец r коэффициентов в числителях, вектор-столбец p корней полинома A(s) и вектор k коэффициентов полинома . Приведем пример вызова этой функции:

>> A=poly([1 2 3 4]);

>> B=poly([5 6 7 8 9]);

>> [r,p,K]=residue(B,A)

r =

1.0e+003 *

-0.0200

0.3600

-1.2600

1.1200

p =

4.0000

3.0000

2.0000

1.0000

K =

1 -25

Если степень полинома B меньше, чем степень полинома A, т.е. если дробь является правильной, то вектор k будет возвращен пустым:

>> A=poly([1 2 3]);

>> B=poly([1 2]);

>> [r,p,K]=residue(B,A)

r =

1.0000

0.0000

-0.0000

p =

3.0000

2.0000

1.0000

K =

[]

Задание для самостоятельной работы:

1. Ввести полином . Найти его корни, вычислить значение полинома в комплексных точках , , , найти его производную.

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

3. Задать произвольный набор пяти попарно сопряжённых комплексных или действительных чисел. Построить полином, для которого эти числа являются корнями. Сформировать любую матрицу, для которой найденный полином является характеристическим.

4. Разложить дробно-рациональную функцию

на простейшие дроби. Найти корни частного от деления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]