Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Символьные операции с матрицами




Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:

>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(M1.M2);

>evalm(M1&*M2);

>evalm(M1/M2);

Заметим, что команда умножения матриц (&*)в пакете MATLAB7 (примеры из этого пакета), в MATLAB9.5 (или 13)заменяется текстовой точкой:

> evalm(M1.M2);

> evalm(M1^2);

> evalm(sin(M1));

> evalm(M1*z);

> evalm(M1+z);

Среди других функций для работы с матрицами полезно обратить внимание на функцию mар, которая применяет заданную операцию (например, функции дифференцирования diff и интегрирования int) к каждому элементу матрицы. Примеры такого рода даны ниже:

>M:=array(1..2,1..2,[[x,x^2],[x^3,x^4]];

>map(diff,M,x);

>map(int,%,x);

Ниже приводятся примеры операций с матрицами и векторами.

> V:=Matrix([[a,2],[d,4]]);

> M:=Matrix([[2,c],[2,d]]);

> v1:=<a|2>;

> v2:=<b|4>;

> v1.v2;

> evalm(M.M);

> M1:=evalm(M^(-1));

> S:=evalm(M1.M);

> simplify(S);

Обычно с матрицами приходится работать при решении задач линейной алгебры. Для этого необходимо использовать пакет расширения linalg, который вызывается командой:

with(linalg):

Если в конце выражения поставить (;), то появится длинный список функций, решающих задачи линейной алгебры. Список наиболее часто используемых приводится ниже.

Операции со структурой отдельного вектора V и матрицы М:

  • coldim(M) — возвращает число столбцов матрицы М;
  • rowdim(M) — возвращает число строк матрицы М;
  • vectdim(V) — возвращает размерность вектора V;
  • col(M,i) — возвращает i-й столбец матрицы М;
  • row(M,i) — возвращает i-ю строку матрицы М;
  • tninor(M,i, j) — возвращает минор матрицы М для элемента с индексами i и j;
  • delcols(M,i.. j) — удаляет столбцы матрицы М от i-roдо j-ro;
  • del rows (V,i..j) — удаляет строки матрицы М от i-й до j-й;
  • extend (М, т, n,х) — расширяет матрицу М на m строк и n столбцов с применением заполнителя х.

Основные векторные и матричные операции:

  • dotprod(U,V) — возвращает скалярное произведение векторов U и V;
  • crossprod(U,V) — возвращает векторное произведение векторов

U и V;

  • norm(V) или norm(M) — возвращает норму вектора или матрицы;
  • copyinto(A,B,i, j) — копирует матрицу А в В для элементов последовательно от i до j;
  • concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
  • stack(Ml,M2) — возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
  • matadd(A,B) и evalm(A+B) — возвращает сумму матриц А и В;
  • multlply(A,B) и evalm(A.B) — возвращает произведение матриц;
  • adjoint (М) или adj(M) — возвращает присоединенную матрицу, такую что M? adj(M) дает диагональную матрицу, определитель которой есть det(M);
  • charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
  • det(M) — возвращает детерминант (определитель) матрицы М;
  • Eigenvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
  • jordan(M) — возвращает матрицу М в форме Жордана;
  • hermite(M) — возвращает матрицу М в эрмитовой форме;
  • trace(M) — возвращает след матрицы М;
  • rank(M) — возвращает ранг матрицы М;
  • transpose(M) — возвращает транспонированную матрицу М;
  • inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
  • singularvals(A) — возвращает сингулярные значения массива или матрицы А.

Ход работы

Предварительно изучив функции, выполнить следующие преобрзования:

1.1.Задать вектора с использованием шаблона.

1.2. Вычислить их скалярное произведение.

 

1.3. Вычислить элементы нового вектора . Заметим, что понятие «вектор» в пакете аналогично определению «массив». Для выполнения этой операции воспользуемся оператором цикла for.

> A:=<cb^2|az^2|2*z|2*az>;

> B:=<4|5|4|8>;

> X:=array(1..4);

> for i to 4 do X[i]:=(A[i])^3*cos(B[i])^2 od;

> evalm(X);

Вектора A и B заданы. Прежде, чем вычислить по заданному правилу новый вектор, опишем его как массив заданной размерности с не определёнными значениями элементов. В операторе цикла выражение между do и od выполняется, пока переменная i изменяется (в данном примере по умолчанию) от1 до4 с шагом 1.

a. Загрузить пакет расширения linalg. Ввести в 2-х режимах (используя командную строку ввода и указанную пиктограмму) матрицы C и D.

2.2Построить транспонированные матрицы.

2.3. Вычислить матрицу, обратную C для 2-х случаев:

а) с использованием в качестве элементов матрицы целых чисел;

б) с заданным хотя бы одним элемента числом с десятичной точкой (2.).

2.4. Умножить матрицу C на обратную для случаев (а) и (б) п.

2.5. Построить характеристический полином для матриц C и D.

2.6. Найти характеристические числа.

2.7. Используя функцию цикла for, построить новую матрицу, где Y[i,j]=F(C[i,j]).


Поделиться:

Дата добавления: 2015-09-15; просмотров: 52; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.004 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты