|
|
polyder |
Вычисление производных от полиномов. |
polyfit |
Аппроксимация данных полиномом. |
polyval |
Вычисление значений полиномов в заданных точках. |
polyvalm |
Вычисление значений матричного полинома. |
residue |
Разложение на простые дроби (вычисление вычетов). |
roots |
Вычисление корней полинома. |
Представление полиномов
MATLAB представляет полиномы как векторы-строки, содержащие коэффициенты полино-мов по убывающим степеням. Например, рассмотрим следующее уравнение
p(x) = x3 – 2x – 5
Это известный пример Валлиса (Wallis), использованный при первом представлении метода Ньютона во Французкой Академии. Мы будем использовать его в дальнейшем при рассмот-рении примеров использования различных функций. Для ввода данного полинома в MATLAB, следует записать
p = [1 0 -2 -5].
Корни полинома
Корни полинома вычисляются при помощи функци roots :
r = roots(p)
r =
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
MATLAB запоминает вычисленные корни как вектор-столбец. Функция poly выполняет об-ратную роль, то есть по заданным корням полинома вычисляет значения его коэффициентов (обратите внимание на значение второго коэффициента, который в идеале равен нулю).
p2 = poly(r)
p2 =
1 8.8818e-16 -2 -5
Функции poly и roots являются взаимно-обратными функциями, с точностью до упорядоче- ния коэффициентов, масштабирования и ошибок округления.
Характеристические полиномы
Функция poly вычисляет также коэффициенты характеристического полинома матрицы:
A = [1.2 3 -0.9; 5 1.75 6; 9 0 1];
poly(A)
ans =
1.0000 -3.9500 -1.8500 -163.2750
Корни данного полинома, вычисленные при помощи функции roots, являются собственными значениями (характеристическими числами) матрицы А. (При практических расчетах, для вычисления собственных значений матриц целесообразно вычислять их посредством функ-ции eig.)
Вычисление значений полинома
Функция polyval вычисляет значение полинома в заданных точках. Для вычисления p в точ-ке s = 5, следует записать
polyval(p,5)
ans =
110
Можно также вычислить значение матричного полинома. Так, вместо полинома Валлиса мо-жно записать:
p(X) = X3 - 2X – 5I
где X является квадратной матрицей, а I - единичной матрицей. Например, сформируем сле-дующую квадратную матрицу X
X = [2 4 5; -1 0 3; 7 1 5];
и вычислим значение заданного выше полинома p(X) на данной матрице.
Y = polyvalm(p, X)
Y =
377 179 439
111 81 136
490 253 639
Умножение и деление полиномов
Для умножения и деления полиномов предназначены соответственно функции conv и deconv. Рассмотрим полиномы a(s) = s2 + 2s + 3 и b(s) = 4s2 + 5s + 6. Для вычисления их произведения следует ввести
a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
MATLAB возвращает
c =
4 13 28 27 18
Для получения из с полинома b воспользуемся функцией deconv:
[q, r] = deconv(c, a)
q =
4 5 6
r =
0 0 0 0 0
где r – остаток после деления (в данном случае нулевой вектор). В общем случае для поли-номов q, r , c, a в функции deconv справедливо соотношение
c = conv(q, a) + r
Вычисление производных от полиномов
Функция polyder вычисляет производную любого полинома. Для получения производной от нашего полинома p = [1 0 -2 -5], введем
q = polyder(p)
q =
3 0 - 2
Функция polyder вычисляет также производные от произведения или частного двух полино-мов. Например, создадим два полинома a и b:
a = [1 3 5]; b = [2 4 6];
Вычислим производную произведения a*b вводом функции polyder с двумя входными аргу-ментами a и b и одним выходным:
c = polyder(a, b)
c =
8 30 56 38
Вычислим производную от частного a/b путем ввода функции polyder с двумя выходными аргументами:
[q, d] = polyder(a, b)
q =
-2 -8 -2
d =
4 16 40 48 36
где отношение двух полиномов q/d является результатом операции дифференцирования.
Аппроксимация кривых полиномами
Функция polyfit находит коэффициенты полинома заданной степени n , который аппрокси-мирует данные (или функцию y(x)) в смысле метода наименьших квадратов:
p = polyfit(x, y, n)
где x и y есть векторы, содержащие данные x и y, которые нужно аппроксимировать полино-мом. Например, рассмотрим совокупность данных x-y, полученную экспериментальным пу-тем
x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4].
Аппроксимация функциональной зависимости y(x) в виде полинома третьего порядка
p = polyfit(x,y,3)
дает коэффициенты полинома
p =
-0.1917 31.5821 -60.3262 35.3400
Рассчитаем теперь значения полинома, полученного при помощи функции polyfit, на более мелкой шкале (с шагом 0.1) и построим для сравнения графики (это делает функция plot) реальных данных и аппроксимирующей кривой.
x2 = 1 : 0.1 : 5;
y2 = polyval(p, x2);
plot(x, y, 'o', x2, y2); grid on
где функция grid on служит для нанесения координатной сетки, а экспериментальные дан-ные на графике отмечены маркерами о.
.
Как видно из рисунка, полином третьего порядка достаточно хорошо аппроксимирует наши данные.
Разложение на простые дроби
Функция residue вычисляет вычеты, полюса и многочлен целой части отношения двух поли-номов. Это особенно полезно при представлении систем управления в виде передаточных функций. Для полиномов a(s) и b(s), при отсутствии кратных корней имеем
где r есть вектор-столбец вычетов, p есть вектор-столбец полюсов, а k есть вектор-строка це-лой части дробно-рациональной функции. Рассмотрим передаточную функцию
Для полиномов числителя и знаменателя этой функции имеем:
b = [-4 8]; a = [1 6 8].
Введя
[r, p, k] = residue(b, a)
получим
r =
-12
8
p =
-4
-2
k =
[ ]
Функция residue с тремя входными (r, p, и k) и двумя выходными (b2, a2) аргументами вы-полняет обратную функцию свертки имеющегося разложения на простые дроби, в дробно-рациональную функцию отношения двух полиномов.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
При использовании материалов активная ссылка на источник обязательна.