Матрицы, векторы и основные операции с ними
Определение (задание) матриц и векторовПрежде всего, надо знать, как создавать матрицы и векторы в Maple. Есть много способов, но рекомендуется близкий к тому, как это делает MatLab. Матрица A , содержащая 1, 2, 3, 4, получается так:
- A:=Matrix([[1,2],[3,4]]);
Для ссылок на элементы матрицы применяются обозначения вида A[row,column], т. е.:
- A[1,2];
Если надо только определить матрицу B , но не присваивать ей значения, пишется:
- B:=Matrix(1..2,1..2);
Как только В определена, присвоить ей значения можно любым способом, в том числе и вручную:
- B[1,1]:=2;B[1,2]:=3;B[2,1]:=7;B[2,2]:=4;
Можно посмотреть на В, чтобы удостовериться в том, что все правильно:
- B;
Детали – см. справку, задав ?Matrix.
Можно создать векторы-столбцы или строки с помощью команды Vector:
По умолчанию создается вектор-столбец.
- b:=Vector([5,6]);
Для создания вектора-строки (row) надо сказать об этом Maple:
- b:=Vector[row]([5,6]);
Если надо заполнить векторы числами из строк или столбцов матрицы – примените команды Column и Row. Например, чтобы заполнить с вторым столбцом матрицы А, надо написать:
- c:=Column(A,2);
Для заполнения с первой строкой А:
- c:=Row(A,1);
Вот еще удобный способ для определения матриц и векторов-столбцов без специальной команды, с помощью синтаксической конструкции ColumnRow<...>:
- s:=<1,2,3>;
А поскольку матрица представляется как набор векторов-столбцов, то её можно определить таким же способом:
- R:=<<1,2,3>|<4,5,6>|<7,8,10>>;
Об этой форме представления надо знать, поскольку она часто используется в Maple help.
Определить матрицы в Maple можно с помощью MatrixPalette – палитры слева от рабочего листа. Использование элементов ее интерфейса очевидно, термины в основном понятны (на всякий случай: skewsymmetric – кососимметрическая). Установите курсор в пустую группу (лучше делать это на отдельном листе, как обычно) и выберите нужные опции в окне палитры. Можно вручную заполнить элементы матрицы m[x, x], можно использовать шаблон для матриц определенного вида. После этого она готова для присваивания с помощью :=.
В Maple матрицы и векторы могут содержать и числа, и формулы:
- d:=Matrix([[x11,x12],[x21,x22]]);
или
- e:=Matrix([[x^2*y,y*x],[sin(x),1/x]]);
Теперь предположим, что надо задать значения х и у и затем посмотреть на матрицы в представлении с плавающей запятой.
- x:=1;y:=2;
- e;
Уже было известно, что надо применить evalf:
- evalf(e);
Не получилось...
Проблема в том, что е – это не выражение, а матрица выражений, поэтому Maple нужны две команды eval: evalm внутри, чтобы сослаться непосредственно на элементы е и evalf снаружи и запустить расчеты с плавающей запятой.
- evalf(evalm(e));
Спросите ?evalm, чтобы увидеть о чем эта команда, или
Запомните, что для получения численного ответа
надо применять десятичные точки в числах.
Функция evalm вычисляет выражения, включая матричные. Она выполняет суммирование, умножение, возведение в целую степень, в том числе для матриц, и показывает отображение функций на матрицы.
Учтите, что, прежде чем передавать аргументы в evalm, Maple может выполнить упрощения, которые будут действительны для матриц. Например, evalm(A^0) возвратит 1, а не единичную матрицу.
Неприсвоенные имена рассматриваются либо как символьные матрицы, либо как скаляры, в зависимости от их использования в выражении.
Для обозначения некоммутативного умножения матриц используйте оператор &*. Произведение матриц ABC может быть введено как A&*B&*C или как &*(A,B,C), причем последнее более эффективно. Применяется автоматическое упрощение, такое как сбор констант и степеней. Не используйте *, чтобы обозначить чистое умножение матриц, поскольку это вернет ошибку. Операндами &* должны быть матрицы (или имена) за исключением 0. Невычисленное произведение матриц рассматривается как матрицы. Оператор &* имеет то же старшинство, что и оператор *.
Используйте 0, чтобы обозначить нулевой скаляр или матрицу. Применяйте &*() для обозначения единичной матрицы. Возможно, удобно применять alias(Id=&*()).
Если в сумме есть матрица и константа, то Maple рассматривает константу как умноженную на единичную матрицу. Следовательно, матричные полиномы можно вводить в точности так, как скалярные полиномы.