Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алфавит и синтаксис Maple.doc
Скачиваний:
76
Добавлен:
27.04.2019
Размер:
848 Кб
Скачать
☆

2.3. Операторы оценивания выражений

В математике степень преобразования выражений зависит от условий конкретной задачи и потребностей конкретного человека. Например, если важна аналитическая форма преобразованных выражений, содержащих тригонометрические функции, вычисления конкретных численных значений могут вообще не производиться. При операциях с матрицами, как правило, операции производятся с именами матриц, а уже в самом конце, возможно, подставляют значения матричных коэффициентов. Традиционные языки программирования ориентированы на реализацию численных алгоритмов. Поэтому все выражения преобразовываются (эволюционируют) до их численных значений. В системе Maple аналитические формы представления выражений считаются более ценными.

После ввода выражения система оценивает необходимое число преобразований получаемого результата. Значения скалярных переменных будет выведено в группе вывода. Для переменных более сложных типов выводятся не их значения, а просто повторяются имена переменных.

Пример:

> sin(1); sin(1.);

sin(1)

.8414709848

> a+b;

a + b

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

eval(array) – возвращает содержимое массива array;

evalf(expr,n) – вычисляет значение выражения expr, результат представляется числом с плавающей точкой;

evalhf(expr) – вычисляет значение выражения expr, используя арифметику данного компьютера, применяется для ускорения вычислений с плавающей точкой;

evalm(mexpr) – вычисляет значение выражения mexpr с матрицами в качестве операндов и допустимыми операторами &, *, +, -, ^;

evalc(cexpr) – вычисляет значение комплексного выражения cexpr;

evalb(bexpr) – вычисляет значения логических выражений.

Примеры:

> evalf(sin(1));

.8414709848

> evalhf(sin(1));

.8414709848078965

> 1+2=5;

3 = 5

> evalb(%);

false

> z:=sin(1)+I*cos(1);

z := sin(1) + I cos(1)

> evalc(%);

sin(1) + I cos(1)

2.4. Извлечение операндов выражений

Во внутреннем представлении Maple любой объект делится на подобъекты и т. д. вплоть до базисных элементов. Подобъекты разделяются по уровням. Например, выражение 2x2+3y состоит из подобъектов первого уровня 2x2 и 3y. Подобъект 2x2, в свою очередь, состоит из элементов 2 и x2, а подобъект 3y - из элементов 3 и y. Для определения количества подобъектов первого уровня выражения expr используется функция nops(expr), а команда op(expr), может использоваться, чтобы отобразить эти подобъекты в виде последовательности выражений.

Пример:

> object:=3*x^2+2*x-3;

> nops(object);

3

> op(object);

Применяя функции nops и op вложенно, можно получать подобъекты различных уровней.

Пример:

> object:=x^3*exp(1)-34/Pi;

> op(1,object);

> op(1,op(1,object));

> op(nops(object),object);

Если объект - индексная переменная, то nops возвращает количество индексов, op(i,expr) - i-й индекс, op(0,expr.) - имя индексной переменной.

Пример:

> nops(A[i,j]); nops(A[i][j]);

2

1

> op(1,A[i,j]); op(1,A[i][j]);

i

j

> op(0,A[i][j]); op(0,A[i,j]);

A[i]

A

Если объект - функция-процедура, то nops возвращает количество аргументов, op(i,…)-i-й аргумент, op(…)-имя функции.

Примеры:

> nops(F(x,y,z)); op(1..3,F(x,y,z)); op(0,F(x,y,z));

3

x, y, z

F