Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava_2a70_2014.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

§ 2.23. Операции над полиномами

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

Как известно, полином (или многочлен) – это выражение вида

,

где – постоянные коэффициенты.

В MATLAB полином задается и хранится в виде вектора, элементами которого являются коэффициенты полинома

.

Так, например, для задания полинома следует ввести команду:

>> p=[5 -4 2 -1 8]

p =

5 -4 2 -1 8

2.23.1. Вычисление значения полинома.

Для вычисления значения полинома от некоторого аргумента предназначена функция polyval, имеющая следующий синтаксис:

y=polyval(p,x)

где p – вектор коэффициентов полинома; x – значение аргумента.

В частности, для рассматриваемого полинома можем вычислить

>> polyval(p,2)

ans =

62

Заметим, что в качестве аргумента может быть задан вектор или матрица. В этом случае значение полинома будет вычислено для каждого элемента данного вектора или матрицы, в результате чего будет сформирован вектор или матрица того же размера, что и аргумент x. Например:

>> p=[2 0 4 6];

>> x=[1 3; 2 7];

>> y=polyval(p,x)

y =

12 72

30 720

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

Вычислить все корни полинома можно с помощью функции roots, уже рассмотренной ранее в параграфе 2.20 (причем число корней полинома всегда совпадает со степенью полинома).

Вычислив корни полинома, можно восстановить коэффициенты приведенного полинома (т.е. полинома, у которого коэффициент при старшей степени равен 1). Для этих целей в MATLAB имеет функция poly:

>> p=[2 -6 6 -6 4];

>> r=roots(p)

r =

2.0000 + 0.0000i

0.0000 + 1.0000i

0.0000 - 1.0000i

1.0000 + 0.0000i

>> p1=poly(r)

p1 =

1.0000 -3.0000 3.0000 -3.0000 2.0000

Для того, чтобы получить коэффициенты исходного полинома, следует умножить полученные вектор коэффициентов на коэффициент при старшей степени полинома (в рассматриваемом примере он равен 2):

>> p1*2

ans =

2.0000 -6.0000 6.0000 -6.0000 4.0000

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

Для выполнения операций умножения и деления полиномов в системе MATLAB имеются функции conv и deconv. Функция conv вычисляет так называемую свертку векторов (построение расширенного вектора коэффициентов по заданным векторам коэффициентов полиномов-сомножителей), а функция deconv производит обратную свертку векторов (вычисление векторов коэффициентов полиномов, являющихся частным и остатком от деления одного полинома на другой.

Функция conv имеет следующий синтаксис:

w=conv(u,v)

где w – вектор коэффициентов полинома, полученного в результат перемножения полиномов, заданных векторами u и v. Например, имеем:

>> u=[1 2 3 4 5];

>> v=[1 3 5];

>> w=conv(u,v)

w =

1 5 14 23 32 35 25

Синтаксис функции deconv следующий:

[q,r]=deconv(u,v)

где q и r – векторы коэффициентов полинома-результата (частного) и полинома-остатка, полученных в результате деления полиномов, заданных векторами u и v. Рассмотрим пример:

>> u=[1 2 3 4 5];

>> v=[1 3 5];

>> [q,r]=deconv(u,v)

q =

1 -1 1

r =

0 0 0 6 0

Для того, чтобы определить только лишь частное, следует обратиться к функции deconv следующим образом:

>> q=deconv(u,v)

q =

1 -1 1

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