Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MATLAB-1.doc
Скачиваний:
0
Добавлен:
18.11.2019
Размер:
295.42 Кб
Скачать

1.2. Общие рекомендации по выполнению заданий практикума

При выполнении лабораторных работ для удобства фиксации проводимых действий и получаемых результатов необходимо придерживаться следующих требований по технологическому использованию рабочего места (компьютера) и подготовке материалов для отчетной документации [3]:

  1. Для индивидуализации собственного рабочего пространства пользователю необходимо создать иерархическую систему папок: а) папку с фамилией (номером студенческого билета) студента, б) в ней – набор папок с идентификацией очередной лабораторной работы (например, labwork1, labwork2, …), куда следует заносить только относящиеся к ней материалы. По умолчанию текущей папкой (окно Current Directory) пользователя, хранящей используемые и создаваемые файлы, является папка системы Matlab с именем «work», – в ней создать указанную иерархию папок. Это можно сделать стандартными средствами операционной системы или непосредственно в Matlab с помощью команды «mkdir» создания папки (например, mkdir Stud17, mkdir labwork1). При работе в Matlab пользователь должен настроиться на соответствующую папку, для чего необходимо воспользоваться командой «cd» смены папки при проходе по дереву папок: cd Stud17 – перейти из текущей папки во вложенную (спуск на уровень), cd … – выйти из текущей папки «наверх» (подъем на уровень).

  2. Сформировать протокол выполненных команд и полученных в текстовом виде результатов. Команда diary обеспечивает копирование в файл текстовой информации, вводимой и выводимой в окне команд: diary('имя файла') – задать имя файла, в который осуществляется запись, diary off блокирует запись в файл, diary on – ее возобновляет.

  3. Получаемые графические изображения следует сохранять отдельно как рисунки, которые должны быть включены в отчетную документацию.

Данные, с которыми работает пользователь, можно сохранить, удалить или загрузить. Для сохранения данных на диске надо записать команду save:

»save data_a a

которая позволяет сохранить в файле с именем «data_a.mat» переменную a.

Для сохранения всех переменных нужно задать следующую команду:

»save data_all

Чтобы удалить переменную (очистить память), следует записать:

»clear a

Использование только clear позволяет удалить все переменные сразу.

Чтобы загрузить сохраненные ранее на диске переменные, используется команда load с указанием имени файла, например «data_a.mat», в котором были сохранены переменные:

»load data_a

После этого все сохраненные ранее данные будут доступны.

2. Матрицы

2.1. Основные понятия

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

или .

Одномерный массив называют вектором. Матрица, состоящая из одной строки, называется вектором-строкой, из одного столбца – вектором-столбцом. Если m = n, то матрица квадратная, а число n – ее порядок. Квадратная матрица, у которой лишь диагональные элементы отличны от нуля, называется диагональной и обозначается . Если все , получают скалярную матрицу. При a = 1 матрица единичная и обозначается I или E. Матрица, все элементы которой равны нулю, называется нулевой.

Числа и переменные в Matlab рассматриваются как матрицы размера 1  1 (векторизация). Векторизация обеспечивает упрощение записи операций, производимых одновременно над всеми элементами векторов и матриц, повышение скорости их выполнения. Matlab допускает задание и использование и многомерных массивов.

Для задания матрицы используется команда присваивания. Например, следующими командами формируются матрицы: а) »a = [1 2 1; 4 5 4] – матрица размера 2  3 с соответствующими элементами; б) »b = [7 8 9] – вектор-строка; в) »c = [2; 2; 3.5] – вектор-столбец; г) »d = zeros(3, 5) – матрица размера 3  5 с нулевыми элементами. Результаты* приведены в табл. 2.1.

Таблица 2.1

Матрица

размера 2  3

Вектор-строка

Вектор-столбец

Матрица размера 3  5

с нулевыми элементами

»a = [1 2 1; 4 5 4]

a =

1 2 1

4 5 4

»b = [7 8 9]

b =

7 8 9

»c = [2; 2; 3.5]

c =

2.0000

2.0000

3.5000

»d = zeros(3, 5)

d =

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

Две записи для вектора – b = [l 2 3 4] и b = [1,2,3,4] – идентичны, векторы задаются списком своих элементов, разделяемых пробелами или запятыми.

Массив формируется прямым (построчным) перечислением его элементов (например, a = [1 3 5 7; 4 5 6 7] – 2 строки и 4 столбца, b = [1; 3; 5; 7] – столбец с 4 элементами) или заданием диапазона значений в формате [нач.знач. : шаг : кон.знач.] с указанным или единичным (по умолчанию) шагом – [1:2:7], [4:7], [ [1:2:7]; [4:7] ].

Доступ к элементам или блокам элементов массива производится указанием индексов или массива индексов:

a(2, k) – элемент второй строки и k-го столбца;

a(:, k) – k-й столбец;

a(1:3; 1:4) – подматрица из первых 3 строк и 4 столбцов матрицы;

c(:, :, 12) – 12-я страница трехмерного массива.

Массивы хранятся в памяти по столбцам, поэтому с многомерным массивом можно работать как с одномерным, например: A(:) – вектор-столбец из всех элементов массива А; A(13:17) – столбец из элементов с номерами от 13 до 17. Итак:

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

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

  • при указании списка индексов использовать круглые скобки и разделительные запятые (указание индекса символом «:» соответствует заданию всех значений по соответствующему индексу).

При работе с массивами можно пользоваться списками: означает «от i до k с шагом j», – то же с шагом 1, например, или d = 0 : 8.

В Matlab предусмотрен ряд особых функций для задания векторов и матриц, например: а) нулей – zeros(n), zeros(m, n), zeros(m, n, p,…), zeros(size(A)) (соответственно массивы одномерный, двумерный, многомерный и соразмерный с массивом A); б) единиц – ones(n), ones(m, n), ones (size(A)) и др.

Функция magic(n) задает так называемый магический квадрат – матрицу размера , у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу. Пример представлен в табл. 2.2.

Таблица 2.2

Магический квадрат 3  3

Сумма по столбцам и строкам

Сумма по диагоналям

»b = magic(3)

b =

8 1 6

3 5 7

4 9 2

»sum(b)

ans =

15 15 15

»sum(b')

ans =

15 15 15

»sum(diag(b))

ans =

15

»sum(diag(b'))

ans =

15

Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1): rand(n, m) – возвращает матрицу размера n  m; rand(n) – квадратную матрицу:

»rand(3) % матрица размера 33

ans =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

Можно выполнять операции не только с действительными, но и с комплексными числами. Мнимая единица представляется символами i, j*. В табл. 2.3 приведена последовательность действий с комплексными значениями.

Таблица 2.3

Ввод числа a

Ввод числа b

Произведение двух

комплексных чисел

Экспонента от

произведения

»a = 5 + 2i

a =

5.0000 + 2.0000i

»b = 3 – 3i

b =

3.0000 – 3.0000i

»с = a*b

с =

21.0000 – 9.0000i

»exp(с)

ans =

–1.2016e+009 – 5.4351e+008i

Перестановка в матрице строк со столбцами даст транспонированную матрицу A', или AT. Если элементы матрицы комплексно-сопряженные, то это комплексно-сопряженная матрица А. Если элементы транспонированной матрицы A' комплексно-сопряженные, то матрица А* называется сопряженной с А. Определитель квадратной матрицы А обозначается или det A. В табл. 2.4 представлены примеры операций с матрицами.

Таблица 2.4

Ввод матрицы A

Ввод матрицы B

Транспони-

рование A

Определи-

тель B

Собственные числа матрицы B

»A = [5 6 4;7 10 5]

A =

5 6 4

7 10 5

»B = [5 6 4;7 10 5; 3 6 9]

B =

5 6 4

7 10 5

3 6 9

»A'

ans =

5 7

6 10

4 5

»det(B)

ans =

60

»eig(B)

ans =

18.7965

0.7104

4.4931

Некоторые типы матриц естественно возникают при решении разных задач [4], имеют специальные названия и соответствуют некоторому определяющему условию: 1) симметричная , 2) кососимметричная , 3) ортогональная , или , 4) стохастическая для , 5) эрмитова , 6) унитарная , или .

Не менее важны специальные типы матриц, используемые в качестве вспомогательных (тестовые матрицы, матрицы Адамара, Гильберта и др.). Приведем некоторые из них:

1) Н = hadamard(n) – формирует матрицу Адамара порядка n. Матрица Адамара – это квадратная матрица размера n, составленная из двух значений 1 и –1, столбцы которой ортогональны, так что справедливо соотношение Н'*Н = n*I, где = eye(n, n) – единичная квадратная матрица размера  n:

»H2 = hadamard(2)

H2 =

1 1

1 –1

Матрицы Адамара применяются в различных областях, включая комбинаторику, численный анализ, обработку сигналов. Матрица Адамара размера  n при > 2 существует, если n делится на 4 без остатка. Алгоритм Matlab вносит дополнительные ограничения, вычисляя матрицы Адамара только для тех n, когда или n, или n/12, или n/20 являются степенями по основанию 2.

2) hilb(n) – возвращает матрицу Гильберта порядка n. Матрица Гильберта является примером плохо обусловленной матрицы. Элементы матрицы Гильберта определяются как H(i, j) = l/(+ j  1).

Таблица 2.5

Матрица Гильберта

Инверсная матрица

Произведение прямой и инверсной матриц

»H = hilb(2)

H =

1.0000 0.5000

0.5000 0.3333

»H1 = invhilb(2)

H1 =

4 –6

–6 12

»H * H1

ans =

1 0

0 1

3) invhilb(n) – возвращает матрицу, обратную матрице Гильберта порядка n (< 15). Для > 15 функция invhilb(n) возвращает приближенную матрицу. Получение матриц представлено в табл. 2.5. Точная обратная матрица – это матрица с очень большими целочисленными значениями, которые могут быть представлены как числа с плавающей запятой без погрешности округления до тех пор, пока порядок матрицы n не превышает 15.

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