Применение оператора: (двоеточие)
Очень часто необходимо произвести формирование упорядоченных числовых последовательностей. Такие последовательности нужны для создания векторов или значений абсциссы при построении графиков. Для этого в MATLAB используется оператор : (двоеточие):
Начальное_значение:Шаг:Конечное_значение
Данная конструкция порождает возрастающую последовательность чисел, которая начинается с начального значения, идет с заданным шагом и завершается конечным значением. Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем начальное значение, – выдается сообщение об ошибке. Примеры применения оператора: даны ниже:
>
>
1
:
5
ans
=
12345
>
>
i
=
0
:
2
:
10
i
=
0
2
4
6
8
10
>
>
j
=
10
:
-
2
:
2
j
=
10
8
6
4
2
>
>
V
=
0
:pi
/
2
:
2
*
pi;
>
>
V
V
=
0
1.5708
3.1416
4.7124
6.2832
>
>
X
=
l:
-
0.2
:
0
X
=
1.0000
0.8000
0.6000
0.4000
0.2000
0
>
>
5
:
2
ans
=
Empty matrix:
1
-
by
-
0
Как отмечалось, принадлежность MATLAB к матричным системам вносит коррективы в назначение операторов и приводит при неумелом их использовании к казусам. Рассмотрим следующий характерный пример:
>
>
x
=
0
:
5
x
=
0
1
2
3
4
5
>
>
cos(x)
ans
=
1.0000
0.5403
-
0.4161
-
0.9900
-
0.6536
0.2837
>
>
sin(x)
/
x
ans
=
-
0.0862
Вычисление массива косинусов здесь прошло корректно. А вот вычисление массива значений функции sin(x)/x дает неожиданный, на первый взгляд, эффект – вместо массива с шестью элементами вычислено единственное значение!
Причина "парадокса" здесь в том, что оператор / вычисляет отношение двух матриц, векторов или многомерных массивов. Если они одной размерности, то результат будет одним числом, что в данном случае и выдала система. Чтобы действительно получить вектор значений sin(x)/x, надо использовать специальный оператор поэлементного деления массивов – . /. Тогда будет получен массив чисел:
>
>
sin(x).
/
x
Warning: Divide by zero.
ans
=
NaN
0.8415
0.4546
0.0470
-
0.1892
-
0.1918
Впрочем, и тут без особенностей не обошлось. Так, при х=0 значение sin(x)/x дает устранимую неопределенность вида 0/0=1. Однако, как и всякая численная система, MATLAB классифицирует попытку деления на 0 как ошибку и выводит соответствующее предупреждение. А вместо ожидаемого численного значения выводится символьная константа NaN, означающая, что неопределенность 0/0 – это все же не обычное число.
Выражения с оператором: могут использоваться в качестве аргументов функций для получения множественных их значений. Например, в приводимом ниже примере вычислены функции Бесселя порядка от 0 до 5 со значением аргумента 0.5:
>
>
bessel(
0
:
1
:
5.1
/
2
)
ans
=
0.9385
0.2423
0.0306
0.0026
0.0002
0.0000
А в следующем примере вычислено шесть значений функции Бесселя нулевого порядка для значений аргумента от 0 до 5 с шагом 1:
>
>
bessel(
0.0
:
1
:
5
)
ans
=
1.0000
0.7652
0.2239
-
0.2601
-
0.3971
-
0.1776
Таким образом, оператор : является весьма удобным средством задания регулярной последовательности чисел. Он широко используется при работе со средствами построения графиков. В дальнейшем мы расширим представление о возможностях этого оператора.