> M:=convert(M2,matrix);
> type(M,matrix);
Таким образом, используя функцию преобразования данных convert, можно преобразовывать одномерные списки в векторы, а двумерные — в матрицы. Функция type используется в следующих формах:
type(V,vector) — тестирует аргумент V и возвращает true, если V — вектор, и false в ином случае;
type(M.matrix) — тестирует аргумент М и возвращает true, если М — матрица, и false в ином случае.
Здесь параметры vector и matrix используются для указания того, какой тип объекта проверяется. Обратите внимание на то, что матрицы отображаются иначе, чем двумерные списки — без двойных квадратных скобок. Отображение вектора подобно отображению одномерного списка, поэтому здесь особенно важен контроль типов данных.
6.1.6. Операции с векторами
Важное достоинство систем компьютерной алгебры, к которым относится и Maple, заключается в возможности выполнения аналитических (символьных)
Приведем примеры операций над векторами (файл vectop):
> V:=array(1..4,[1,2,3,4]);
> [V[1], V[2], V[4]];
> V[1]:=a: V[3]:=b:
> evalm(V);
> evalm(V+2);
> evalm(2*V);
> evalm(V**V);
> evalm(a*V);
В этих примерах используется функция evalm(M), осуществляющая вычисление матрицы или вектора М.
6.1.7. Операции над матрицами с численными элементами
Над матрицами с численными элементами в Maple можно выполнять разнообразные операции. Ниже приведены основные из них:
> М:=array(1..2,1..2,[[1,2],[3,4]]);
> evalm(2*М);
> evalm(2+М);
> evalm(M^2);
> evalm(М^(-1));
> evalm(М-М);
> evalm(М+М);
> evalm(М*М);
> evalm(M/M);
> evalm(M^0);
Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций.
6.1.8. Символьные операции с матрицами
Одной из привлекательных возможностей СКА является возможность проведения символьных операций с матрицами. Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера в системе Maple:
> M1:=array(1..2,1..2, [[a1,b1], [c1,d1]]);
> M2:=array(1..2,1..2,[[a2,b2],[c2,d2]]);
> evalm(M1+M2)
> evalm(M1-M2)
> evalm(Ml&*M2);
> evalm(M1/М2);
> evalm(M1&/М2);
Приведем еще ряд гримеров выполнения символьных операций с одной матрицей:
> evalm(M1^2);
> evalm(sin(M1));