В наследство от функционального программирования, и Lisp в частности, Maxima получила списки как базовую форму представления данных. Списком является группа элементов, разделённых запятыми и заключённых в квадратные скобки (совсем как в Python). Список может быть пустым или содержать любые другие элементы, в том числе вложенные списки. Запись
list:[1,a,[x,y]]
определяет список list, состоящий из 3-х элементов, последний из который сам является списком. Обратиться к определённому элементу можно по индексу (начиная с 1):
list[2] - a
list[3] - [x,y]
list[3][1] - x
Возможно, вы не планируете использовать в работе списки, но многие функции в Maxima возвращают результат именно в виде списков, поэтому нужно иметь представление о том, как с ними обращаться.
Рассмотрим основные функции для работы со списками.
length(список) - определяет количество элементов (длину).
length(list) - 3
copylist(список) - создаёт копию.
append(список1, список2, ... ) - склеивает списки.
reverse(список) - меняет порядок следования элементов на обратный.
reverse(list) - [[x,y],a,1]
member(элемент,список) - возвращает true, если элемент входит в список, иначе false.
member(a,list) - true
Аналоги Lisp-а: )
first(список) - первый элемент ("car").
first(list) - 1
rest(список) - хвост, т.е. всё кроме первого элемента ("cdr").
rest(list) - [a,[x,y]]
last(список) - последний элемент.
cons(элемент,список) - добавить элемент в начало (создаёт новый список).
cons(t,list) - [t,1,a,[x,y]]
endcons(элемент,список) - добавить элемент в конец (создаёт новый список).
"Генераторы" списков.
makelist(выражение, i, a, b) - создание списка на основе заданного выражения при изменении переменной i от a до b.
makelist(a/i, i, 1, 4) - [a, a/2, a/3, a/4]
makelist(выражение, x, список) - создание списка на основе заданного выражения из исходного списка.
makelist(a/x, x, [1,2,3,4]) - [a, a/2, a/3, a/4]
create_list(выражение, x1, список1, x2, список2, ...) - создание списка на основе заданного выражения из нескольких исходных списков.
Действия над элементами списка.
product(выражение, i, a, b) - перемножает выражения при изменении i от a до b.
product(i+x, i, 0, 3) - x(x+1)(x+2)(x+3)
sum(выражение, i, a, b) - суммирует выражения при изменении i от a до b.
sum(x/i, i, 1, 3) - x+x/2+x/3+x/4
map(функция,выражение1,выражение2,...) - применяет функцию (оператор, операцию) к последовательности выражений.
map("=",[a,b],[1,-1]) - [a=1,b=-1]
apply(функция, список) - применяет функцию к заданному списку (преобразует список в аргументы функции).
apply(max,[1,5,20]) - 20
Комментариев нет:
Отправить комментарий