Рассмотрим полином вида Pn(x)=p1xn+p2xn-1+...+pnx+an+1. Соответственно будем обозначать Р - n+1-мерный вектор коэффициентов, Х - массив значений аргумента.
При вычислении значений полинома для элементов массива можно использовать функцию polyval(P,X):
>>polyval([1 2 5],[0 3 1])
ans =
>> polyval([1 2 5],[0 3 1; 1 1 1])
ans =
С помощью функции polyvalm(P,X) можно вычислять значения матричного полинома для квадратной матрицы Х:
>> polyvalm([1 2 5],[0 3 1; 1 1 1; 0 0 2])
ans =
Умножение полиномовСm+n(x)=Pm(x) x Qn(x) выполняется командой C=conv(P,Q) -
Деление полиномов можно реализовать командой [C,R]=deconv(A,B), где С -частное и R - остаток от деления А на В.
>> conv([1 2 3],[5 6])
ans =
[c,r]=deconv([1 2 3],[5 6])
c =
0.2000
0.1600
r =
2.0400
Вычисление производных от полинома, произведения и отношения полиномов производится соответственно командами dp=polyder(P), dc=polyder(A,B) и [f,g]=polyder(A,B):
polyder([1 -2 3 4 5])
ans =
-6
>> polyder([1 2 3],[5 6])
ans =
>> [f,g]=polyder([1 2 3],[5 6])
f =
-3
g =
Вычисление корней полинома реализуется функцией roots(P), а построение полинома по его корням - функцией poly(R).
>> r=roots([1 3 5 7]) r = -2.1795 -0.4102 + 1.7445 i -0.4102 - 1.7445 i
>>poly(r)
ans =
1.0000
3.0000
5.0000
7.0000
Функция poly(А) обеспечивает построение характеристического полинома |lE-A|=0 (см. проблему собственных значений):
>> A= magic(3)
A =
>>P=poly(A)
P =
1.0e+002 *
0.0100
-0.1500
-0.2400
3.6000
В приложениях, особенно связанных с преобразованием Лапласа при решении дифференциальных уравнений, оперируют с отношениями полиномов и представлениями их в виде простых дробей:
,
где sk - простые корни полинома Qn(s); если некоторый корень sj имеет кратность m, то соответствующее слагаемое представляется в виде,
Команда [r,s,f] =residue(P,Q) дает разложение отношения полиномов на простые дроби (в случае близких корней возможна значительная погрешность). В случае кратного корня пользуются функцией rj=resi2(P,Q,sj,m,j), где j -номер вычисляемого коэффициента (по умолчанию j=m); по умолчанию m=1 (простой корень).
Команда [P,Q] =residue(r,s,f) выполняет обратное действие свертки разложения в отношение полиномов.
Выполнив действия
[r,s,f]=residue([1 -6 11 -6],[1 -5 4 0])
r =
0.5000
-1.5000
s =
f =
>> [A,B]=residue([0.5 0 -1.5],[4 1 0],[1])
A =
-6
-6
B =
-5
видим, что
В случае кратного корня
>>P=poly([1 2 3 ])
P =
-6
-6
>> Q=poly([0 0 0 6])
Q =
-6
>> [r,s,f]=residue(P,Q)
r =
0.2778
0.7222
-1.6667
1.0000
s =
f =
[]
>>r1=resi2(P,Q,0,3,1)
r1 = 0.7222
>>r2=resi2(P,Q,0,3,2)
r2 = -1.6667
>>r3=resi2(P,Q,0,3,3)
r3 = 1
видим разложение:
наверх
следующая глава
8. Анализ и обработка данных
8.1. Обработка статистических данных 8.2. Численное дифференцирование 8.3. Аппроксимация и интерполяция 8.4. Численное интегрирование 8.5. Нули и экстремумы функций 8.6. Обыкновенные дифференциальные уравнения
8.1 Обработка статистических данных
Никакой анализ статистических данных не может обойтись без предварительной их обработки:
max (A), min(A) - поиск экстремальных элементов по столбцам массива А;
max(A,B), min(A,B) - формирование массива с элементами, равными экстремальным из соответствующих элементов массивов;
max(A,[ ],dim), min(A,[ ],dim) - вектор экстремальных элементов по измерению dim;
[C,I]=max(...), [C,I]=min(...) - дополнительно выводится строка индексов экстремальных элементов;
median(X), median (X,dim) - медианы массива;
mean(X), mean (X,dim) -средние значения;
std(X), std(X,flag), std(X,flag,dim) - стандартное отклонение (flag=0 -несмещенная оценка s; flag=1 - смещенная оценка s):
; ;
cov(X, Y), cov(X,Y, flag) - ковариация для для массивов Х и Y (каждый столбец - переменная, строка - наблюдение)
, f=n или n-1;
cov(X), cov(X,flag) - ковариация для столбцов массива Х;
corrcoef (X), corrcoef (X,Y) -коэффициенты корреляции:
.
8.2. Численное дифференцирование
Как известно, численное дифференцирование строится на использовании аппарата конечных разностей и соответствующего многообразия аппроксимаций. Здесь полезны функции:
diff(X), diff(X, n), diff(X, n, dim) - вычисление конечных разностей (первых, n-го порядка или по указанному измерению); если Х -массив, берутся разности между столбцами:
>> F=
[ 0
0.0998
0.1987
0.2955
0.3894
0.4794]
>> D=diff(F)
D =
0.0998
0.0988
0.0969
0.0939
0.0900
>> D2=diff(F,2)
D2 =
-0.0010
-0.0020
-0.0030
-0.0039
Для задач оптимизации градиентными методами полезны функции:
gradient(F), gradient(F,h), gradient(F,h1,h2,...) -приближенная оценка градиента функции n переменных с автоматическим выбором шага или с указанным шагом (одинаковым или разным по переменным):
>> [x,y]=meshgrid(-2:0.2:2, -2:0.2:2);
% выбор сетки узлов
>> z=x.*exp(-x.^2-y.^2);
% вычисление значений на сетке
>> [px,py]=gradient(z,.2,.2);
% поиск градиента в узлах сетки
>> contour(z), hold on,quiver(px,py), hold off % рис.8.1
studopediasu.com - Студопедия (2013 - 2026) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление