- •Лекция 9 основы работы с системой компьютерной алгебры maxima
- •1. Структура Maxima
- •2. Установка и запуск программы
- •3. Интерфейс wxMaxima
- •4. Ввод простейших команд
- •5. Списки
- •5.1. Функции для элементарных операций со списками
- •5.2. Функции, оперирующие с элементами списков
- •7. Матрицы и простейшие операции с ними
- •6. Массивы
- •8. Математические функции
- •9. Вычисление и преобразование аналитических выражений
- •10. Преобразование рациональных выражений
- •11. Преобразование тригонометрических выражений
- •12. Преобразование степенных и логарифмических выражений
- •12. Пользовательские функции
- •12. Решение задач элементарной математики
- •12.1 Нахождение корней уравнений и систем алгебраических уравнений
- •13. Построение графиков и поверхностей
- •13.2 Построение графиков функций, заданных параметрически
- •12.3 Построение кривых в полярной системе координат
- •13.4 Построение трёхмерных графиков
5. Списки
Списки - базовые строительные блоки для Maxima и Lisp. Все прочие типы данных (массивы, хэш-таблицы, числа) представляются как списки. Чтобы задать список, достаточно записать его элементы через запятую и ограничить запись квадратными скобками. Список может быть пустым или состоять из одного элемента
Элементом списка может и другой список
Ссылка на элемент списка производится по номеру элемента списка:
5.1. Функции для элементарных операций со списками
Функция length возвращает число элементов списка (при этом элементы списка сами могут быть достаточно сложными конструкциями):
Функция copylist(expr) возвращает копию списка expr:
Функция makelist создаёт список, каждый элемент которого генерируется из некоторого выражения. Возможны два варианта вызова этой функции:
makelist (expr, i, i_0, i_1)
makelist (expr, x, list)
Вызов
makelist (expr, i, i_0, i_1)
возвращает список, j-й элемент которого равен ev(expr,i = j), при этом индекс j меняется от i0 до i1. Вызов
makelist (expr, x, list)
возвращает список, j-й элемент которого равен ev(expr,x = list[j]), при этом индекс j меняется от 1 до length (list). Примеры:
Во многом аналогичные действия выполняет функция createlist(form,x1,list1,...,xn,listn). Эта функция строит список путём вычисления выражения form, зависящего от x1, к каждому элементу списка list1 (аналогично form, зависящая и от x2, применяется к list2 и т.д.). Пример:
Функция append позволяет склеивать списки. При вызове
append (list_1, ..., list_n)
возвращается один список, в котором за элементами list_1 следуют элементы list2 и т.д. вплоть до list_n. Пример:
Создать новый список, компонуя элементы двух списков поочередно в порядке следования, позволяет функция join(l,m). Новый список содержит l1, затем m1, затем l2, m2 и т.д. Пример:
Длина полученного списка ограничивается минимальной длиной списков l и m.
Функция cons (expr, list) создаёт новый список, первым элементом которого будет expr, а остальные - элементы списка list.
Функция endcons (expr, list) также создаёт новый список, первые элементы которого - элементы списка list, а последний - новый элемент expr. Пример:
Функция reverse меняет порядок элементов в списке на обратный
Функция member(expr1,expr2) возвращает true если expr1 является элементом списка expr2, и false в противном случае. Пример:
Функция rest(expr) выделяет остаток после удаления первого элемента списка expr. Можно удалить первые n элементов, используя вызов rest(expr,n). Функция last(expr) выделяет последний элемент списка expr (аналогично first - первый элемент списка). Примеры:
Суммирование и перемножение списков (как и прочих выражений) осуществляется функциями sum и product. Функция sum(expr,i,in,ik) суммирует значения выражения expr при изменении индекса i от in до ik. Функция product(expr,i,in,ik) перемножает значения выражения expr при изменении индекса i от in до ik. Пример:
5.2. Функции, оперирующие с элементами списков
Функция map(f,expr1,...,exprn) позволяет применить функцию (оператор, символ операции) f к частям выражений expr1, expr2, ...,exprn. При использовании со списками применяет f к каждому элементу списка. Следует обратить внимание, что f - именно имя функции (без указания переменных, от которых она зависит). Примеры:
Функция f может быть и заданной пользователем, например:
Функция apply применяет заданную функцию ко всему списку (список становится списком аргументов функции; при вызове (F,[x1,...,xn] вычисляется выражение F(arg1,...,argn)). Следует учитывать, что apply не распознаёт ординарные функции и функции от массива. Пример:
Чтобы найти максимальный или минимальный элемент набора чисел, надо вызвать функции "max"или "min". Однако, обе функции в качестве аргумента ожидают несколько чисел, а не список, составленный из чисел. Применять подобные функции к спискам и позволяет функция "apply":
