Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MATLAB.pdf
Скачиваний:
193
Добавлен:
27.03.2015
Размер:
1.06 Mб
Скачать

-0.6925 0.7214 -0.7214 -0.6925

Как и в первом случае, матрица U*S*V' равна A с точностью до ошибок округления.

Полиномы и интерполяция

В этом разделе мы ознакомимся с основными функциями MATLAB-а, которые дают возможность осуществлять математические действия с полиномами и производить интерполяцию одно-, двух-, и многомерных данных.

Полиномы и действия над ними

Обзор полиномиальных функций

Функция

Описание

conv

Умножение полиномов.

deconv

Деление полиномов.

poly

Вычисление характеристического

 

полинома матрицы или определение

polyder

полинома с заданными корнями.

Вычисление производных от полиномов.

polyfit

Аппроксимация данных полиномом.

polyval

Вычисление значений полиномов в

polyvalm

заданных точках.

Вычисление значений матричного

residue

полинома.

Разложение на простые дроби

roots

(вычисление вычетов).

Вычисление корней полинома.

Представление полиномов

MATLAB представляет полиномы как векторы-строки, содержащие коэффициенты полиномов по убывающим степеням. Например, рассмотрим следующее уравнение

p(x) = x3 – 2x – 5

Это известный пример Валлиса (Wallis), использованный при первом представлении метода Ньютона во Французкой Академии. Мы будем использовать его в дальнейшем при рассмотрении примеров использования различных функций. Для ввода данного полинома в MATLAB, следует записать

p = [1 0 -2 -5].

41

Корни полинома

Корни полинома вычисляются при помощи функци 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

42

где 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

43

Функция 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;

44

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]