Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_rab_1-MKS.doc
Скачиваний:
2
Добавлен:
23.12.2018
Размер:
111.1 Кб
Скачать

Векторы, матрицы и магические квадраты

Простые правила вычислений распространяются и на гораздо более сложные вычисления, которые при использовании обычных языков программирования типа Бейсик или Паскаль требуют составления специальных программ. MATLAB - система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная - это вектор, матрица или массив. Все определяется конкретным значением переменной. Например, если задано Х=1, то это значит, что X - это вектор с единственным элементом, имеющим значение 1. Если нужно задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами. Так, например, присваивавание

V=[l 2 3] 

задает вектор V, имеющий три элемента со значениями 1, 2 и 3.

Создание вектора из 143 элементов, расположенных равномерно между 1.5 и30:

f=linspace(1.5,30,143)

В MATLAB матрица – это прямоугольный массив чисел. Особое значение придается матрицам 1х1, которые являются скалярами, и матрицам, имеющим один столбец или одну строку, - векторам.

При вводе матриц вы должны следовать нескольким основным условиям:

  • отделять элементы строки пробелами или запятыми;

  • использовать точку с запятой для обозначения каждой строки;

  • окружать весь список элементов квадратными скобками.

Рассмотрим пример матрицы художника и любителя математики времен Ренессанса Альбрехта Дюрера. Эта матрица известна как магический квадрат и во времена Дюрера считалось, что она обладает магическими свойствами.

Чтобы ввести матрицу Дюрера напишите:

А=[16 3 2 13;5 10 11 8;9 6 7 12;4 15 14 1]

Матрица автоматически запоминается средой MATLAB. И мы можем к ней легко обратиться как к А.

Работа с матрицами

MATLAB имеет функции, которые создают основные матрицы:

zeros(m,n) – все нули

ones(m,n) – все единицы

eye(m,n) – матрица с единицами по диагонали и нулями в остальных ячейках

rand – равномерное распределение случайных элементов

randn – нормальное распределение случайных элементов

Некоторые примеры:

Z=zeros(2,4)

F=5*ones(3,3)

eye(3,4)

N=fix(10*rand(1,10))

R=randn(4,4)

Операции суммирования элементов, транспонирования и диагонализации матрицы

Особые свойства магического квадрата связаны с различными способами суммирования его элементов. Если взять сумму элементов вдоль какой-либо строки или столбца, или вдоль какой-либо из двух главных диагоналей, всегда получается одно и тоже число.

Проверим одно из утверждений, используя MATLAB:

sum(A)

Когда переменная не определена, MATLAB использует переменную ans, коротко от answerответ, для хранения результатов вычисления. Мы подсчитали вектор-строку, содержащую сумму элементов столбцов матрицы А. действительно, каждый элемент имеет одинаковую сумму, магическую сумму, равную 34.

MATLAB предпочитает работать со столбцами матрицы, таким образом, лучший способ получить сумму в строках – это транспонировать нашу матрицу, подсчитать сумму в столбцах, а потом транспонировать результат. Операция транспонирования обозначается апострофом. Она зеркально отображает матрицу относительно главной диагонали и меняет строки на столбцы. Таким образом:

A’

sum(A’)’

Сумму элементов на главной диагонали можно легко получить с помощью функции diag(А). Данная функция создает матрицу, у которой вектор А является главной диагональю, все остальные элементы матрицы – нули.

diag(A)

sum(diag(A))

Другая диагональ, называемая антидиагональю, не так важна математически, поэтому MATLAB не имеет специальной функции для нее. Но функция fliplr зеркально отображает матрицу слева направо.

sum(diag(fliplr(A))

Таким образом, матрица Дюрера действительно магическая.

Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например:

V= [2+2/(3+4)* exp(5)* sqrt(l0)]

Удаление столбцов и строк матриц

Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки [ ]. Проделаем это с матрицей М:

М=[1 2 3; 4 5 6; 7 8 9]

Удалим второй столбец используя оператор двоеточия: 

М(:,2)=[ ]

А теперь, используя оператор двоеточия, удалим вторую строку:

М(2,:)=[ ]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]