Главная страница

Учебное пособие для студентов высших учебных заведений


Скачать 5.41 Mb.
НазваниеУчебное пособие для студентов высших учебных заведений
Дата10.03.2022
Размер5.41 Mb.
Формат файлаpdf
Имя файлаmatlab.pdf
ТипУчебное пособие
#390741
страница6 из 44
1   2   3   4   5   6   7   8   9   ...   44
conv(P1, P2).
Аналогично, функция deconv(P1, P2) осуществляет деление полинома P1 на полином P2, т. е. обратную свертку векторов P1 и P2. Она определяет коэффици- енты полинома, который является частным от деления P1 на P2.
Пример:
» p1 = [1,2,3]; p2 = [1,2,3,4,5,6];
» p = conv(p1,p2)
p = 1 4 10 16 22 28 27 18
» deconv(p,p1)
ans = 1 2 3 4 5 6
В общем случае деление двух полиномов приводит к получению двух по- линомов - полинома-результата (частного) и полинома-остатка. Чтобы получить оба этого полинома, следует оформить обращение к функции таким образом:
[Q,R] = deconv(B,A) .
Тогда результат будет выдан в виде вектора Q с остатком в виде вектора R таким образом, что будет выполненное соотношение
B = conv(A,Q) + R.
Система MatLAB имеет функцию roots(P), которая вычисляет вектор,
элементы которого являются корнями заданного полинома Р.
Пусть нужно найти корни полинома:
20 94 80 31 8
)
(
2 3
4 5
+
+
+
+
+
=
x
x
x
x
x
x
P
Ниже показано, как просто это сделать:
» p = [1,8,31,80,94,20];

1.4. Функции прикладной численной математики
48
» disp(roots(p))
-1.0000 + 3.0000i
-1.0000 - 3.0000i
-3.7321
-2. 0000
-0. 2679
Обратная операция - построение вектора р коэффициентов полинома по за- данному вектору его корней - осуществляется функцией poly:
p = poly(r).
Здесь r - заданный вектор значений корней, p - вычисленный вектор коэф- фициентов полинома. Приведем пример:
» p = [1,8,31,80,94,20]
p = 1 8 31 80 94 20
» r = roots(p)
r =
-1.0000 + 3.0000i
-1.0000 - 3.0000i
-3.7321
-2. 0000
-0. 2679
» p1 = poly(r)
p1 =8. 0000 31. 0000 80. 0000 94. 0000 20. 0000
Заметим, что получаемый вектор не показывает старшего коэффициента,
который по умолчанию полагается равным единице.
Эта же функция в случае, если аргументом ее является некоторая квадрат- ная матрица А размером (n*n), строит вектор характеристического полинома
этой матрицы. Обращение
p = poly(A) формирует вектор p коэффициентов характеристического полинома p(s) = det(s*E - A) = p1*sn + ... + pn*s + pn
+1
, где Е - обозначение единичной матрицы размером (n*n).
Рассмотрим пример:
» A = [1 2 3; 5 6 0; -1 2 3]
A =
1 2 3 5 6 0
-1 2 3
» p = poly(A)
p =
1. 0000 -10. 0000 20. 0000 -36. 0000
Для вычисления значения полинома по заданному значению его аргумен-
та в MatLAB предусмотрена функция polyval. Обращение к ней осуществляется по схеме:
y = polyval(p,x), где p - заданный вектор коэффициентов полинома, а x - заданное значение аргу- мента. Пример:
» y = polyval(p,2)
y = 936
Если в качестве аргумента полинома указана матрица Х, то функция
polyval(p,X) вычисляет матрицу Y, каждый элемент которой является значением

1.4. Функции прикладной численной математики
49
указанного полинома при значении аргумента, равном соответствующему элемен- ту матрицы Х, например: p = 1 8 31 80 94 20
» X = [1 2 3; 0 -1 3; 2 2 -1]
X =
1 2 3 0 -1 3 2 2 -1
» disp(polyval(p,X))
234 936 2750 20 -18 2750 936 936 -18
В этом случае функция вычисляет значение полинома для каждого элемента матрицы Х, и поэтому размеры исходной и конечной матриц одинаковы size(Y) = size(X).
Вычисление производной от полинома осуществляется функцией polyder.
Эта функция создает вектор коэффициентов полинома, представляющего собой производную от заданного полинома. Она имеет три вида обращений:
dp = polyder(p) по заданному полиному р вычисляет вектор dp, элементы которого являются коэффициентами полинома-производной от заданного:
» dp = polyder(p)
dp = 5 32 93 160 94;
dp = polyder(p1,p2) вычисляет вектор dp, элементы которого являются ко- эффициентами полинома-производной от произведения двух полиномов р1 и р2:
» p1 = [1,8,31,80,94,20];
» p2 = [1,2,16];
» p = conv(p1,p2)
p = 1 10 63 270 750 1488 1544 320
» dp = polyder(p)
dp = 7 60 315 1080 2250 2976 1544
» dp1 = polyder(p1,p2)
dp1 = 7 60 315 1080 2250 2976 1544;
[q,p] = polyder(p1,p2) вычисляет производную от отношения (p1/p2) двух полиномов р1 и р2 и выдает результат в виде отношения (q/p) полиномов q и p:
» p1 = [1,8,31,80,94,20];
» p2 = [1,2,16];
» [q,p] = polyder(p1,p2)
q = 3 24 159 636 1554 2520 1464 p = 1 4 36 64 256
» z = deconv (q,p)
z = 3 12 3
» y = deconv(p1,p2)
y = 1 6 3 -22
» z1 = polyder(y)
z1 = 3 12 3.
1.4.2. Обработка данных измерений
Система MatLAB дает пользователю дополнительные возможности для об- работки данных, которые заданы в векторной или матричной форме.

1.4. Функции прикладной численной математики
50
Допустим, что есть некоторая зависимость y(x), заданная рядом точек
x 2 4 6 8 10
y 5.5 6.3 6.8 8 8.6
Ее можно задать в командном окне MatLAB как матрицу xydata, содержа- щую две строки - значения x и значения y:
>> xydata =[2 4 6 8 10; 5.5 6.3 6.8 8 8.6]
xydata =
2. 0000 4. 0000 6. 0000 8. 0000 10. 0000 5. 5000 6. 3000 6. 8000 8. 0000 8. 6000
На примере этой зависимости рассмотрим основные средства для обработки данных.
Функция size(xydata) предназначена для определения числа строк и столб- цов матрицы xydata. Она формирует вектор [n, p], содержащий эти величины:
>> size(xydata)
ans =
2 5
Обращение к ней вида
>> [n, p] = size(xydata);
позволяет сохранить в памяти машины и использовать потом при дальнейших вы- числениях данные о числе строк n и столбцов p этой матрицы:
>> n, p
n = 2 p = 5
С помощью этой функции можно установить длину и тип (строка или стол- бец) вектора:
» v = xydata(:)
v =
2.0000 5.5000 4.0000 6.3000 6.0000 6.8000 8.0000 8.0000 10. 0000 8. 6000
» n = size(v)
n = 10 1
» v1 = v'
v1 = 2. 0000 5. 5000 4. 0000 6. 3000 6. 0000 6. 8000 8. 0000 8. 0000 10. 0000 8. 6000
» size(v')
ans = 1 10
Функция max(V), где V - некоторый вектор, выдает значение максимально- го элемента этого вектора. Аналогично, функция min(V) извлекает минимальный элемент вектора V. Функции mean(V) и std(V) определяют, соответственно, сред- нее значение и среднеквадратичное отклонение от него значений элементов век- тора V.
Функция сортировки sort(V) формирует вектор, элементы которого распо- ложены в порядке возрастания их значений.

1.4. Функции прикладной численной математики
51
Функция sum(V) вычисляет сумму элементов вектора V.
Функция prod(V) выдает произведение всех элементов вектора V.
Функция cumsum(V) формирует вектор того же типа и размера, любой эле- мент которого является суммой всех предшествующих элементов вектора V (век- тор кумулятивной суммы).
Функция cumprod(V) создает вектор, элементы которого являются произве- дением всех предшествующих элементов вектора V.
Функция diff(V) создает вектор, который имеет размер на единицу меньший размера вектора V, элементы которого являются разностью между соседними элементами вектора V.
Применение описанных функций проиллюстрировано ниже.
» v = [ 1, 0.1, 0.5, 0.1, 0.1,0.4 ];
» disp(size(v))
1 6
» disp(max(v))
1
» disp(min(v))
0. 1000
» disp(mean(v))
0. 3667
» disp(std(v))
0. 3559
» disp(sort(v))
0. 1000 0. 1000 0. 1000 0. 4000 0. 5000 1. 0000
» disp(sum(v))
2. 2000
» disp(prod(v))
2. 0000e-004
» disp(cumsum(v))
1. 0000 1. 1000 1. 6000 1. 7000 1. 8000 2. 2000
» disp(cumprod(v))
1. 0000 0. 1000 0. 0500 0. 0050 0. 0005 0. 0002
» disp(diff(v))
-0. 9000 0. 4000 -0. 4000 0 0. 3000
Если указать второй выходной параметр, то можно получить дополни-
тельную информацию об индексе первого элемента, значение которого является
максимальным или минимальным:
>> [M,n]=max(v)
M = 1 n = 1
>> [N,m]=min(v)
N = 0.1000 m = 2
Интегрирование методом трапеций осуществляет процедура trapz. Об- ращение к ней вида trapz(x,y) приводит к вычислению площади под графиком функции y(x), в котором соседние точки, заданные векторами х і у, соединены отрезками прямых. Если первый вектор х не указан в обращении, по умолчанию допускается, что шаг интегрирования равняется единице (т. е. вектор х представ- ляет собой вектор из номеров элементов вектора у).

1.4. Функции прикладной численной математики
52
Пример. Вычислим интеграл от функции y = sin(x) в диапазоне от 0 до
π
Его точное значение равно 2. Возьмем равномерную сетку из 100 элементов. То- гда вычисления сведутся к совокупности операций:
» x = 0 : pi/100 : pi;
» y = sin(x);
» disp(trapz(x,y))
1. 9998
Те же функции size, max, min, mean, std, sort, sum, prod, cumsum, cumprod,
diff могут быть применены и к матрицам. Основным отличием использования в качестве аргументов этих функций именно матриц является то, что соответст- вующие описанные выше операции ведутся не по отношению к строкам матриц, а к каждому из столбцов заданной матрицы. Т. е. каждый столбец матрицы А рас- сматривается как переменная, а каждая строка - как отдельное наблюдение. Так, в результате применения функций max, min, mean, std получаются векторы-строки с количеством элементов, которое равняется количеству столбцов заданной мат- рицы. Каждый элемент содержит, соответственно, максимальные, минимальное, среднее или среднеквадратичное значения элементов соответствующего столбца заданной матрицы.
Приведем примеры. Пусть имеем 3 величины y1, y2 и y3, измеренные при некоторых пяти значениях аргумента (они не указаны). Тогда данные измерений образуют 3 вектора по 5 элементов:
>> y1 = [ 5.5 6.3 6.8 8 8.6];
>> y2 = [-1. 2 0.5 -0. 6 1 0.1];
>> y3 = [ 3.4 5.6 0 8.4 10.3] ;
.
Сформируем из них матрицу измерений так, чтобы векторы y1, y2 и y3 об- разовывали столбцы этой матрицы:
» A = [ y1', y2', y3']
A =
5.5000 -1.2000 3.4000 6.3000 0.5000 5.6000 6.8000 -0.6000 0 8. 0000 1. 0000 8. 4000 8. 6000 0. 1000 10. 3000
Применим к этой матрице измерений описанные функции. Получим
» size(A)
ans = 5 3
» max(A)
ans = 8. 6000 1. 0000 10. 3000
» min(A)
ans = 5. 5000 -1. 2000 0
» mean(A)
ans = 7. 0400 -0. 0400 5. 5400
» std(A)
ans = 1. 2582 0. 8735 4. 0655
Если при обращении к функциям max и min указать второй выходной па-
раметр, то он даст информацию о номерах строк, где находятся в соответст-
вующем столбце первые элементы с максимальным (или минимальным) значе-
нием. Например:
>> [M,n]=max(A)

1.4. Функции прикладной численной математики
53
M = 8.6000 1.0000 10.3000 n = 5 4 5
>> [N,m]=min(A)
N = 5.5000 -1.2000 0 m = 1 1 3
Функция sort сортирует элементы любого из столбцов матрицы. Результа- том является матрица того же размера.
Функция sum и prod формируют вектор-строку, каждый элемент которого является суммой или произведением элементов соответствующего столбца исход- ной матрицы.
Функции cumsum, cumprod образуют матрицы того же размера, элементы каждого столбца которых являются суммой или произведением элементов этого же столбца начальной матрицы, начиная с соответствующего элемента и выше.
Наконец, функция diff создает из заданной матрицы размером (m*n) матри- цу размером ((m-1)*n), элементы которой являются разностью между элементами соседних строк начальной матрицы.
Применяя эти процедуры к принятой матрице измерений, получим:
» sort(A)
ans =
5.5000 -1.2000 0 6.3000 -0.6000 3.4000 6.8000 0.1000 5.6000 8. 0000 0. 5000 8. 4000 8. 6000 1. 0000 10. 3000
» sum(A)
ans = 35. 2000 -0. 2000 27. 7000
» prod(A)
ans = 1. 0e+004 *
1. 6211 0. 0000 0
» cumsum(A)
ans =
5.5000 -1.2000 3.4000 11.8000 -0.7000 9.0000 18.6000 -1.3000 9.0000 26. 6000 -0. 3000 17. 4000 35. 2000 -0. 2000 27. 7000
» cumprod(A)
ans = 1.0e+004 *
0.0006 -0.0001 0.0003 0.0035 -0.0001 0.0019 0.0236 0.0000 0 0. 1885 0. 0000 0 1. 6211 0. 0000 0
» diff(A)
ans =
0.8000 1.7000 2.2000 0. 5000 -1. 1000 -5. 6000 1. 2000 1. 6000 8. 4000 0.6000 -0. 9000 1. 9000
Рассмотрим некоторые другие функции, предоставляемые пользователю системой MatLAB.
Функция cov(A) вычисляет матрицу ковариаций измерений. При этом по- лучают квадратную симметричную матрицу с количеством строк и столбцов, рав-

1.4. Функции прикладной численной математики
54
ным количеству измеренных величин, т. е. количеству столбцов матрицы измере- ний. Например, при применении к принятой матрице измерений она дает такой результат:
» cov(A)
ans =
1. 5830 0. 6845 3. 6880 0. 6845 0. 7630 2. 3145 3.6880 2. 3145 16. 5280
На диагонали матрицы ковариаций размещены дисперсии измеренных ве- личин, а вне ее - взаимные корреляционные моменты этих величин.
Функция corrcoeff(A) вычисляет матрицу коэффициентов корреляции при тех же условиях. Элементы матрицы S = corrcoef(A) связаны с элементами матри- цы ковариаций C=cov(A) таким соотношением:
S k l
C k l
C k k C l l
( , )
( , )
( , )
( , )
=

Пример:
» corrcoef(A)
ans =
1. 0000 0. 6228 0. 7210 0. 6228 1. 0000 0. 6518 0.7210 0. 6518 1. 0000
1.4.3. Функции линейной алгебры
Традиционно к линейной алгебре относят такие задачи, как обращение и псевдообращение матрицы, спектральное и сингулярное разложения матриц, вы- числение собственных значений и векторов, сингулярных чисел матриц, вычисле- ние функций от матриц. Ознакомимся с некоторыми основными функциями
MatLAB в этой области.
Функция k = cond(A) вычисляет и выдает число обусловленности матрицы относительно операции обращения, которое равняется отношению максимального сингулярного числа матрицы к минимальному.
Функция k = norm(v,p) вычисляет р-норму вектора v по формуле: k = sum(abs(v) . p)(1/p), где р - целое положительное число. Если аргумент р при обращении к функции не указан, вычисляется 2-норма.
Функция k = norm(А,p) вычисляет р-норму матрицы, где р = 1,2, 'fro' или inf. Если аргумент р не указан, вычисляется 2-норма. При этом справедливы такие соотношения:
norm(A,1) = max(sum(abs(A)));
norm(A,inf) = max(sum(abs(A')));
norm(A,’fro') = sqrt(sum(diag(A'*A)));
norm(A) = norm(A,2) =
σ
max
(A).
Функция rd = rcond(А) вычисляет величину, обратную значению числа обусловленности матрицы А относительно 1-нормы. Если матрица А хорошо обу-

1.4. Функции прикладной численной математики
55
словлена, значение rd близко к единице. Если же она плохо обусловленная, rd приближается к нулю.
Функция r = rank(A) вычисляет ранг матрицы, который определяется как количество сингулярных чисел матрицы, превышающие порог
max(size(A))*norm(A)*eps.
Приведем примеры применения этих функций:
A =
1 2 3
0 1 5
7 4 1
» disp(cond(A))
13. 8032
» disp(norm(A,1))
9
» disp(norm(A))
8. 6950
» disp(rcond(A))
0. 0692
» disp(rank(A))
3
Процедура d = det(A) вычисляет определитель квадратной матрицы на ос- нове треугольного разложения методом исключения Гаусса.
Функция t = trace(A) вычисляет след матрицы А, равный сумме ее диаго- нальных элементов.
Q = null(A) вычисляет ортонормированный базис нуль-пространства мат- рицы А.
Q = orth(A) выдает ортонормированный базис матрицы А.
Процедура R = rref(A) осуществляет приведение матрицы к треугольному
виду на основе метода исключения Гаусса с частичным выбором ведущего эле- мента.
Примеры:
» disp(det(A))
30
» disp(trace(A))
3
» disp(null(A))
» disp(orth(A))
0. 3395 0. 4082 -0. 8474 0. 2793 0. 8165 0. 5053 0.8982 -0. 4082 0. 1632
» disp(rref(A))
1 0 0 0 1 0 0 0 1
Функция R=chol(A) осуществляет разложение Холецького для действи- тельных симметричных и комплексных эрмитовых матриц. Например:
» A = [ 1 2 3; 2 15 8; 3 8 400]
A =
1 2 3 2 15 8 3 8 400

1   2   3   4   5   6   7   8   9   ...   44


написать администратору сайта