И другие программы этой серии
Выражения с оператором : могут использоваться в качестве аргументов функ
ций для получения множественных их значений. Например, в приводимом ниже
примере вычислены функции Бесселя порядка от 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
4.7124
0.4000
6.2832
0.2000
0
Таким образом, оператор : является весьма удобным средством задания регу
лярной последовательности чисел. Он широко используется при работе со сред
ствами построения графиков. В дальнейшем мы расширим представление о воз
можностях этого оператора.
1.4.10. Функции пользователя
Хотя ядро новых версий системы MATLAB содержит уже более 1000 встроенных
функций (не считая функций, определенных в десятках пакетов расширения),
всегда может понадобиться какая то нужная пользователю функция. Язык про
граммирования системы MATLAB предоставляет ряд возможностей для задания
функций пользователя. Одна из таких возможностей заключается в применении
функции inline, аргументом которой надо в апострофах задать выражение, за
дающее функцию одной или нескольких переменных. В приведенном ниже при
мере задана функция двух переменных – суммы квадратов sin(x) и cos(y):
>> sc2=inline(\'sin(x).^2+cos(y)^.2\')
sc2 =
Inline function:
sc2(x,y) = sin(x).^2+cos(y).^2
Как отмечалось, принадлежность MATLAB к матричным системам вносит
коррективы в назначение операторов и приводит, при неумелом их использова
нии, к казусам. Рассмотрим следующий характерный пример:
>> x=0:5
x=0
1
>> cos(x)
ans = 1.0000
>> sin(x)/x
ans = -0.0862
2
0.5403
3
4
-0.4161
5
-0.9900
-0.6536
0.2837
Вычисление массива косинусов здесь прошло корректно. А вот вычисление
массива значений функции sin(x)/x дает неожиданный, на первый взгляд, эффект
– вместо массива с шестью элементами вычислено единственное значение!
Причина «парадокса» здесь в том, что оператор / вычисляет отношение двух
матриц, векторов или массивов.