Линейная алгебра

Искусство использования матриц и векторов для решения задач физики

Версия для печати

Матрицы, векторы и основные операции с ними

Определение (задание) матриц и векторов

Прежде всего, надо знать, как создавать матрицы и векторы в 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 (из справки Maple)

Функция evalm вычисляет выражения, включая матричные. Она выполняет суммирование, умножение, возведение в целую степень, в том числе для матриц, и показывает отображение функций на матрицы.

Учтите, что, прежде чем передавать аргументы в evalm, Maple может выполнить упрощения, которые будут действительны для матриц. Например, evalm(A^0) возвратит 1, а не единичную матрицу.

Неприсвоенные имена рассматриваются либо как символьные матрицы, либо как скаляры, в зависимости от их использования в выражении.

Для обозначения некоммутативного умножения матриц используйте оператор &*. Произведение матриц ABC может быть введено как A&*B&*C или как &*(A,B,C), причем последнее более эффективно. Применяется автоматическое упрощение, такое как сбор констант и степеней. Не используйте *, чтобы обозначить чистое умножение матриц, поскольку это вернет ошибку. Операндами &* должны быть матрицы (или имена) за исключением 0. Невычисленное произведение матриц рассматривается как матрицы. Оператор &* имеет то же старшинство, что и оператор *.

Используйте 0, чтобы обозначить нулевой скаляр или матрицу. Применяйте &*() для обозначения единичной матрицы. Возможно, удобно применять alias(Id=&*()).

Если в сумме есть матрица и константа, то Maple рассматривает константу как умноженную на единичную матрицу. Следовательно, матричные полиномы можно вводить в точности так, как скалярные полиномы.