
- •1.4. Операции с полиномами
- •2. Элементарная графика в системе matlab
- •3. Основы программирования на языке matlab
- •3.1. Начальные положения
- •3.2. Основные действия, выполняемые с помощью редактора
- •3.3. Основные элементы языка
- •3.4. Основные операторы языка
- •If условие1
- •If условие
- •3.5. Два вида m-файлов: скрипты и функции
Факультет ПМ-ПУ СПбГУ
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
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. Разложить дробно-рациональную функцию
на простейшие дроби. Найти корни частного от деления.