> L:=[1,2,3,4];
> map(proc(x,y) x*y+1 end,[1, 2, 3, 4], 2);
> map(int,L,x);
> map(F, [1, 2, 3], x, y, z);
Из этих примеров нетрудно заметить, что если второй параметр функции map — список, то функция (первый параметр) прикладывается к каждому элементу списка, так что возвращается также список. Из последнего примера видно, что если за вторым параметром идет перечисление аргументов, то они включаются в список параметров функции.
Функции map2 отличается иным расположением параметров. Ее действие наглядно поясняют следующие примеры:
> map2(w, g, {а,b,с});
> map2(op,1,[a+b+i,c+d+k, e+f+j]);
> map2(ор,3,[a+b+i,c+d+k,e+f+j]);
> map2(diff,[sin(х),cos(х),x^n],х);
При решении некоторых задач оптимизации возникает необходимость в создании выражений с множителями Лагранжа. Для этого можно использовать список из трех элементов выражения, заключенный в угловые скобки:
> е := <х^2, -sqrt(16-х^2), 5>;
Примеры на работу с выражениями, имеющими множители Лагранжа можно найти в файле демонстрационным L4lagra.mse.
3.6.3. Подстановки с помощью функций add, mul и seq
Заметим, что операции, подобные описанным выше, Maple реализует и с рядом других функций. Ограничимся примерами на подстановки с помощью функций сложения add, умножения mul и создания последовательностей seq:
> add(i,i=[a,b,c]);
> addi=[a,b,c]);
> add(i^2,i=[1,2,3]);
> mul(x-i,i=0..4);
> mul(х^i,i=0..4);
> seq(w(i),i={a,b,c});
> seq(w(x, y, z), i={1,2,3});
> seq(int(x^i,x),i={1,2,3,4});
3.6.4. Подстановки с помощью функций subs и subsop
• subs(x=a,e) — в выражении е заменяет подвыражение х на подвыражение а;
• subs(s1,…,sn,e) — в выражении е заменяет одни подвыражения на другие, выбирая их из списков s1, sn вида х=а;
• subsop(eq1, eq2, …, eqi, …, eqn, e) — в выражении e заменяет указанные в eqi операнды другими, указанными в правой части равенств eqi вида ni=ei, где ni — номер операнда, ei — выражение для замены.
Все эти функции возвращают измененное после подстановки выражение. Ниже показаны примеры применения функций подстановок:
> subs(а=b,b^2-2*а*b-b^2);
> subs (а=2,b=1,b^2-2*а*b-b^2);
> normal(%);
> subs(a=x,b=y,c=z,[a,b,с]);
> subs({x=y,y=x),[x,y]);
> subs(a=sin(x),b=cos(x),а^2+b*b);
> simplify(%);
> subsop(1=x,a+b+c);
> subsop(2=x,a+b+c);
> subsop(3=x,a+b+c);
> subsop(3=x,a+b/c);
Error, improper op or subscript selector
> subsop(1=sin(x),(1+cos(x))/b);
> subsop(2=sin(x),(1+cos(x))/b);
> subsop(1=sin(x),2=sin(x),(1+cos(x))/b);