- •Глава 2. Основные понятия и конструкции системы
- •2.1. Алфавит и синтаксис Maple-языка
- •2.2. Последовательности выражений
- •2.3. Операторы оценивания выражений
- •2.4. Извлечение операндов выражений
- •2.5. Наборы и операции с наборами
- •2.6. Списки и операции со списками
- •2.7. Типы объектов и выражений
- •2.8. Преобразование типов выражений
- •2.9. Имена переменных
- •2.10. Типы переменных
- •2.11. Оператор присваивания
- •2.12. Отмена операции присваивания
- •2.13. Ограничение значений переменных
- •2.14. Операторы
- •2.15. Математические функции
- •2.16. Операции с формулами и выражениями
- •2.17. Операции с полиномами
- •2.18. Массивы, векторы и матрицы
- •2.19. Строковые переменные
- •Упражнения
- •Глава 3. Операции и функции математического анализа
- •3.1. Вычисление сумм и рядов
- •3.2. Вычисление произведений членов некоторой последовательности
- •3.3. Вычисление производных
- •3.4. Вычисление пределов
- •3.5. Интегрирование выражений
- •3.6. Разложение функций в ряды
- •3.7. Нахождение экстремумов, максимумов и минимумов функций
- •3.8. Анализ функций на непрерывность
- •Упражнения
- •Глава 4. Решение уравнений и неравенств
- •4.1. Основные понятия и конструкции
- •4.2. Решение одиночных уравнений
- •4.3. Решение систем алгебраических уравнений
- •4.4. Присваивание значений полученных решений
- •4.5. Поиск корней полиномов
- •4.6. Решение тригонометрических уравнений
- •4.7. Решение неравенств
- •4.8. Решение функциональных уравнений
- •4.9. Решение рекуррентных уравнений
- •4.10. Численное решение уравнений и систем
- •4.11. Решение дифференциальных уравнений
- •Упражнения
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
