Аппроксимация кривых полиномами
4 16 40 48 36
8 30 56 38
3 0 - 2
Вычисление производных от полиномов
0 0 0 0 0
4 5 6
4 13 28 27 18
Умножение и деление полиномов
490 253 639
111 81 136
377 179 439
Polyval(p,5)
ans =
Можно также вычислить значение матричного полинома. Так, вместо полинома Валлиса мо-жно записать:
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 =
Для умножения и деления полиномов предназначены соответственно функции 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 =
Для получения из сполинома bвоспользуемся функцией deconv:
[q, r] = deconv(c, a)
q =
r =
гдеr– остаток после деления (в данном случае нулевой вектор). В общем случае для поли-номов q, r , c, aв функции deconvсправедливо соотношение
c = conv(q, a) + r
Функция polyderвычисляет производную любого полинома. Для получения производной от нашего полинома p = [1 0 -2 -5], введем
q = polyder(p)
q =
Функция polyderвычисляет также производные от произведения или частного двух полино-мов. Например, создадим два полинома aиb:
a = [1 3 5]; b = [2 4 6];
Вычислим производную произведения a*b вводом функции polyder с двумя входными аргу-ментами aиb и одним выходным:
c = polyder(a, b)
c =
Вычислим производную от частного a/b путем ввода функции polyder с двумя выходными аргументами:
[q, d] = polyder(a, b)
q =
-2 -8 -2
d =
где отношение двух полиномов 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служит для нанесения координатной сетки, а экспериментальные дан-ные на графике отмечены маркерами о.
.
Как видно из рисунка, полином третьего порядка достаточно хорошо аппроксимирует наши данные.