Сложение и вычитание полиномов выполняется по обычным правилам сложения матриц, поэтому предварительно полиномы должны быть приведены к одинаковой размерности путем добавления нулей слева к полиному меньшей степени (например, p = [0 0 p]).
Умножение полиномов обеспечивается функцией conv с двумя аргументами полиномами сомножителями.
Деление полиномов выполняется с помощью функции deconv, которая имеет два полинома аргумента (делимое и делитель) и возвращает также два полинома: частное и остаток от деления.
Вычисление значения полинома в точке обеспечивается функцией polyval, которая имеет два аргумента: вектор коэффициентов полинома и точку, в которой он вычисляется. Второй аргумент функции может быть матрицей. Тогда она возвратит матрицу той же размерности, компоненты которой будут равны значениям полинома в точках, определяемых компонентами второго аргумента. В общем случае аргументы могут принимать комплексные значения.
Построение производной от полинома выполняется функцией polyder с
одним аргументом.
Формирование полинома по его корням можно выполнить с использова-
нием функции poly с единственным аргументом – вектором, содержащим заданные корни, в общем случае комплексные. Функция poly также позволяет определить характеристический полином квадратной матрицы, если она указана в качестве аргумента функции.
Поиск корней полинома реализуется с помощью функции roots. Аргументом при ее вызове является полином, а найденные корни возвращаются в виде компонентов выходного вектора-столбца.
Графика в системе MATLAB
Одно из достоинств системы MATLAB – большое количество графических средств, начиная от команд построения простых графиков функций одной переменной и кончая комбинированными и презентационными графиками с элементами анимации. Здесь будут рассмотрены простейшие функции.
Вывод графика на экран в декартовой системе осуществляется командой plot. Эта команда может использоваться в нескольких вариантах.
При вызове функции с двумя аргументами plot(X, Y), где X, Y – векторы одинаковой размерности, будет построен график зависимости Y(X) в отдель-
31
ном специальном окне, называемом figure. В окне расположен ряд элементов, которые используются для размещения выводимых графических образов, а также ряд интерфейсных инструментов, с помощью которых можно манипулировать размещенным в окне изображением.
Вызов функции с несколькими параметрами в виде plot(x1,y1,x2,y2, …) приведет к построению нескольких графиков в одних декартовых осях, каждый из которых задан вектором аргументов и вектором значений. При этом графики различаются по цветам согласно принятой по умолчанию последовательности: синий – зеленый – красный и т.д.
Общий формат функции plot(x1, y1, S1, x2, y2, S2…) позволяет управлять типом линии, ее цветом и типом маркера за счет символьной константы S. Возможные значения константы можно посмотреть в таблице с помощью команды help plot. Пример использования функции plot для управления графиком:
x1 = 0:0.01:10;
x2 = 0:10;
y1 = sin(x1);
y2 = sin(x2);
plot (x1,y1, 'r--', x2, y2, 'k*'), grid
В примере первый график построен красным цветом и пунктирной линии, второй выводится в виде изолированных черных звездочек.
Далее рассмотрим ряд вспомогательных графических функций: grid (grid on| off) – координатная сетка (см. рис. П1);
1 |
|
|
. |
|
|
0,8 |
|
|
. |
|
|
0,6 |
|
|
. |
|
|
0,4 |
|
|
. |
|
|
0,2 |
|
|
0 |
|
|
- . |
|
|
–0,2 |
|
|
- . |
|
|
–0,4 |
|
|
- . |
|
|
–0,6 |
|
|
- . |
|
|
–0,8 |
|
|
–1- 00 1 2 3 4 |
5 6 7 8 |
9 10 |
|
Рис. П1 |
|
|
32 |
|
figure (n) – смена текущего графического окна, n – номер окна. Также данная функция может применяться для создания новых графических окон; hold (hold on| off) – наложение графиков в осях текущего графического окна. Наложение будет производиться до тех пор, пока не встретится коман-
да hold off или пользователь не сменит текущее графическое окно; title(‘текст’) – добавление заголовка к графику; xlabel(‘текст’), ylabel(‘текст’) – добавление подписей к осям;
loglog(), semilogx(), semilogy() – построение графиков в логарифмиче-
ских или полулогарифмических осях. Функции используются вместо plot по аналогичным правилам.
Для построения графиков в логарифмических и полулогарифмических осях имеет смысл задавать векторы в виде логарифмической, а не равномерно возрастающей последовательности. Это выполняется командой logspace(x1, x2, N), где искомый вектор меняется в диапазоне от 10x1 до 10x2 и содержит N точек.
Основные элементы языка программирования MATLAB
В языке программирования MATLAB чаще всего рассматриваются следующие элементы:
–константы и переменные;
–выражения;
–комментарии;
–операторы;
–скрипты (сценарии)
–функции пользователя.
Рассматриваемая система программирования является типичным интерпретатором. Это означает, что каждая инструкция (оператор или команда) программы распознается и тут же исполняется. При этом MATLAB не создает конечных исполняемых модулей. И, как следствие, для выполнения программ необходима среда MATLAB. Однако следует отметить, что для программ на языке MATLAB созданы компиляторы, транслирующие их в коды на языках программирования C и C++.
Константы в программах бывают трех типов: а) числовые;
б) строковые – любая цепочка символов, заключенная в апострофы;
в) логические – folse и true, причем система понимает эти два зарезервированных слова как числа 1 и 0 соответственно.
33
Переменные в программах не подлежат предварительному описанию. Они всегда описываются по контексту и относятся к тому или иному типу данных автоматически в зависимости от присваиваемых ими значений. Каждая переменная имеет имя, присваиваемое программистом, которое, как и в командах, должно состоять из латинских букв, цифр и знака подчеркивания, причем первый символ – обязательно буква.
Перед использованием в правой части операторов присваивания имя соответствующей переменной должно быть известно в программе, точнее говоря, оно должно находиться в рабочем пространстве. Этого можно достичь двумя путями: заданием значения новой переменной в командном окне или предварительным присваиванием ему значений в предшествующих операторах программного кода.
Выражения. Как и в любых других языках, выражения в программе на MATLAB – это имена переменных, констант и функций, объединенные знаками допустимых операций. В языке принято выделять следующие типы выражений:
1.Арифметические выражения. Формируются с использованием числовых переменных и констант и знаков арифметических операций тех же, что мы рассматривали для командной строки.
2.Строковые выражения. Строковые выражения допустимы только в двух вариантах: указание отдельной строковой константы или вызов функций, оперирующих со строками.
3.Выражения отношений. Эти выражения формируются с использованием следующих операций:
< меньше; <= меньше или равно; > больше; >= больше или равно; == равно; ~= не равно.
По отношению к однотипным массивам указанные операции применяются поэлементно.
4.Логические выражения. Формируются с использованием следующих операций:
& логическое «И»; | логическое «ИЛИ»; ~ логическое «НЕ»; Комментарии в программном коде – это произвольные цепочки симво-
лов, расположенные после знака «%» до конца текущей строки.
34
Основные операторы языка
1.Оператор присваивания. Является простейшим оператором языка. Его смысл полностью эквивалентен аналогичным операторам таких языков, как Си и Паскаль, однако допускается при вызове функции присваивание значений нескольким переменных. Тогда они должны быть перечислены через запятую в квадратных скобках, например [m, n] = size(A).
В зависимости от типа выражения в правой части, операторы присваивания делятся на арифметические, строковые, отношений и логические.
2.Условный оператор if в общем случае осуществляет проверку нескольких условий и записывается следующим образом:
if условие1 операторы1
elseif условие2
операторы2 elseif условие3
операторы3
….. else
операторы4 end
Альтернативные ветви не являются обязательными частями оператора.
3.Оператор цикла типа for … end используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого оператора имеет вид:
for v=М
операторы end
Параметр М – это чаще всего вектор. В большинстве случаев он пред-
ставляется с использованием оператора «:» в виде s:d:e, где s – начальное значение управляющей переменной цикла (v), d – приращение этой переменной, e – конечное значение управляющей переменной. На каждом шаге цикла переменная v последовательно принимает значения, соответствующие компонентам вектора М. Цикл выполняется до тех пор, пока v<=d.
Возможен также вариант, когда М не вектор, а матрица. Тогда цикл будет работать иначе: на каждом шаге управляющая переменная будет вектором, последовательно совпадающим со столбцами матрицы М. В этом случае в цикле будет столько шагов, сколько имеется столбцов в указанной матрице.
35