КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Символьные операции с матрицами ⇐ ПредыдущаяСтр 3 из 3 Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера: >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 и матрицы М:
Основные векторные и матричные операции:
U и V;
Ход работы Предварительно изучив функции, выполнить следующие преобрзования: 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]).
|