Математические выражения в Scilab
Математические выражения состоят из чисел, констант, переменных, операторов, функций и спецзнаков. Числа могут быть целыми, дробными, с фиксированной и плавающей точкой. Примеры: -3 2.453 123.12е-3. Последнее число – это 123.12*10-3, т.е. 0,12312. Для разделения целой и десятичной части числа используется точка. Числа могут быть вещественными и комплексными. Кроме того, в Scilab существуют так называемые системные переменные и символьные константы: · %i – мнимая единица (% i = ); · %pi – число π=3,1415927; · %e – число е=2,71828184; · %eps – 2.22d-16; · %inf – значение машинной бесконечности; · ans – переменная, хранящая результат последней операции; · %nan – указание на нечисловой характер данных (n ot-a-number). Примеры: -- > 1/0 ! – error 27 division by zero -- > 0/0 ! – error 27 division by zero Системные переменные нельзя переопределить, например, переменной %eps нельзя присвоить другое значение: -- > % eps = 0.1 ! – error 13 redefining permanent variable
Символьная константа – это цепочка символов, заключенная в апострофы, например, ‘Hello’. В Scilab наглядность описания сложных выражений достигается с помощью текстовых комментариев, которые вводят с помощью символов //. Переменная в Scilab может иметь имя, содержащее сколько угодно символов, но система запоминает и идентифицирует только первые 24 символа. Имя должно начинаться с буквы и может содержать буквы, цифры и символ подчеркивания _. В памяти компьютера переменные занимают определенное место, называемое рабочим пространством (Workspace). Для очистки рабочего пространства используют функцию clear: · clear – уничтожение определений всех переменных; · clear x – уничтожение определения переменной x; · clear a, b, c – уничтожение определений нескольких переменных. Примеры: -- > v=[1 2 3 4 5]; -- > clear v -- > v !- - error 4 undefined variable: v
Большинство операций в Scilab являются матричными операциями, а соответствующие им операторы относятся к матричным операторам. Например, с помощью операторов умножения * и деления / вычисляют произведение и частное от деления двух массивов (векторов или матриц). Есть ряд спецоператоров, например, оператор \ используют для деления справа налево, а операторы .* и ./ – для поэлементного умножения и деления массивов. Примеры: -- > v1=[2 4 6 8]; v2=[1, 4, 12, 24]; p=v1/v2, t=v1.*v2, r=v1./v2, h=v1.\v2 p = 0.3826323 t = 2 16 72 192 r = 2. 1. 0.5 0.3333333 h = 0.5 1. 2. 3. Обратите внимание на результат операции: -->x=[1 2 3 4 5 6];y=1/x y = 0.0109890 0.0219780 0.0329670 0.0439560 0.0549451 0.0659341 В данном случае вычисляются не величины, обратные элементам вектора х, а каждый элемент вектора х делится на сумму квадратов всех элементов вектора. Результат же операции y=x^(-1) дает то, что надо: -->x=[1 2 3 4 5 6];y=x^ (-1) y = 1. 0.5 0.3333333 0.25 0.2 0.1666667 Функции – это имеющие уникальные имена подпрограммы, выполняющие определенные преобразования над своими аргументами и при этом возвращающие результаты этих преобразований. Функции (макросы) в Scilab похожи на те, что встречаются в других языках программирования. Функции могут иметь аргумент, сами являться аргументом другой функции, быть членом списка, участвовать в операциях сравнения, вызываться рекурсивно. Функция начинается со слова function и заканчивается словом endfunction. Первая строка функции может быть следующей: function var=my_name(x1,...,xk), где var - имя переменной, а xi - входные переменные.
Ниже приведен пример функции, вычисляющей сумму положительных элементов в массиве v. function g=f (v) s=0; n=length (v); for i=1:n if v (i)>0 then s=s+v(i); end end g=s; endfunction Для использования этой функции ее нужно сначала сохранить на диске в файле с именем f.sci,выполнить пункт меню Execute/Load into Scilab, а затем вызвать ее: --> x=[1 2 5 -3 7 -9 12]; t=f(x) t = 27 Если функция должна возвращать несколько значений, то ее надо определить в формате: function[y1, y2, …] = func(x1,x2,…)
|