Скачиваний:
17
Добавлен:
30.09.2023
Размер:
274.06 Кб
Скачать

Практикум 2. Матрицы и работа с ними в пакете MATLAB.

Цель работы знакомство с понятием матрицы и операциями над матрицами, обучение созданию массивов (матриц) и действиям с ними в пакете МATLAB.

Продолжительность работы - 2 часа.

Оборудование – работа выполняется в компьютерном классе с использованием пакета MATLAB.

Порядок выполнения

1.Знакомство со справочным материалом по математике

2.Знакомство со справочным материалом по пакету MATLAB.

3.Изучение примеров.

4.Самостоятельное выполнение упражнений. При выполнении упражнений в случае сообщения системы об ошибке рекомендуется самостоятельно найти ошибку и исправить команду; однако, если многократные попытки устранить

ошибку не привели к успеху, то можно и нужно проконсультироваться с преподавателем.

P.S. Отчитываться перед преподавателем о выполнении упражнений не требуется. Однако, следует учесть, что контрольная работа по модулю состоит из аналогов упражнений.

Справочный материал по математике

1. Понятие матрицы

Матрицей размерности n m называется прямоугольная таблица из чисел, состоящая из n строк и m столбцов. Традиционно в математике эту таблицу заключают

в круглые скобки. Например,

1

2

3

4

- матрица размерности 2 4 .

A =

0

1

3

2

 

 

 

 

 

Если матрица имеет размер 1 m , т.е. состоит только из одной строки, то ее называют вектором-строкой. Например, B = (1 3 1) - матрица размерности 1 3 , т.е. вектор-строка.

Если матрица имеет размер n 1, т.е. состоит только из одного столбца, то ее

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

 

1

- матрица размерности 2 1, т.е.

C =

 

 

 

2,1

 

вектор-столбец.

Если матрица имеет размер 1 1, т.е. состоит из одного столбца и одной строки, то ее называют скаляром. Например, D = (9) - матрица размерности 1 1, т.е. скаляр.

2. Действия над матрицами

Матрицу A любой размерности можно транспонировать – создать новую матрицу AT , сделав строки матрицы A столбцами с теми же номерами.

Матрицы A и B одинаковой размерности можно складывать: суммой A + B называется матрица той же размерности, каждый элемент которой равен сумме соответственных элементов матриц A и B .

1

Матрицу A можно умножать на число: произведением A матрицы A на числоназывается матрица, получающаяся из матрицы A умножением всех ее элементов на .

Если число столбцов матрицы A совпадает с числом строк матрицы B , то матрицу A можно умножать на матрицу B : произведением A B матрицы A на матрицу B называется матрица C , число строк которой совпадает с числом строк матрицы A , число столбцов – с числом столбцов матрицы B , а элемент, стоящий в i -ой строке и j -м столбце, равен сумме произведений соответственных элементов i -ой строки матрицы A на элементы j -ого столбца матрицы B .

Справочный материал по пакету MATLAB

1. Создание одномерных массивов (векторов)

(1) Для задания вектора-строки (т.е. матрицы размера 1 m ) используются квадратные скобки, в которых числовые данные отделяются друг от друга пробелами или запятыми:

>> B=[1 3 -1] B =

1

3

-1

>> B=[1, 3, -1]

 

B =

 

 

1

3

-1

(2)Для задания вектора-столбца (т.е. матрицы размера n 1) используются квадратные скобки, в которых числовые данные отделяются друг от друга точкой с запятой:

>> C=[-1;2.1] C =

-1.0000 2.1000

(3)Элементами матриц могут быть любые выражения, допустимые в MATLAB. >> S=[-1+2*3 sqrt(2) abs(-3)]

S =

5.0000 1.4142 3.0000

(4)Далее мы будем часто использовать векторы-строки, элементы которых образуют арифметическую прогрессию. Рассмотрим два способа их задания.

1-й способ

имя_переменной = [m1:d:m2] или

имя_переменной = m1:d:m2

Здесь m1 – первый элемент, d –

число, которое прибавляется к каждому

следующему элементу (разность арифметической прогрессии), m2 – последний элемент.

>> v=1:2:7 v =

1 3 5 7

Если введены только два числа m1:m2, то значение шага по умолчанию берется равным 1.

2-й способ

2

имя_переменной = linspace(k1,k2,n)

Здесь k1 – первый элемент, k2 – последний элемент, n – число элементов (MATLAB сам подсчитывает необходимый шаг).

>> v= linspace(1,7,4) v =

1 3 5 7

Если введены только два числа k1 и k2, то число элементов по умолчанию берется равным 100.

2. Создание двумерных массивов (матриц)

(1) Матрицу (двумерный массив) можно задать, комбинируя два типа разделителя (пробел или запятую для элементов строк и точку с запятой для элементов столбцов):

Имя_переменной = [элементы 1-й строки; элементы 2-й строки; …; элементы последней строки]

>> A=[1 2 3 4;0 1 3 2]

 

 

A =

 

 

 

1

2

3

4

0

1

3

2

>> B=[1:4;0 1 3 sqrt(4)]

 

 

B =

 

 

 

1

2

3

4

0

1

3

2

(3) В MATLAB все числовые данные представляются в виде матриц. Поэтому любое число по умолчанию рассматривается как матрица размера 1 1.

>>n=3

n = 3

>>m=[3] m =

3

>>whos A n m

Name

Size

Bytes Class Attributes

A

2x4

64 double

m

1x1

8 double

n

1x1

8 double

3. Обращение к элементам массива и их изменения

(1) Для доступа к отдельным элементам матриц указываются их индексы – номер строки и номер столбца, в которых этот элемент размещен.

>> A=[1 2 3 4;0 1 3 2]

 

 

A =

 

 

 

1

2

3

4

0

1

3

2

>> x=A(2,4)

 

 

 

x =

 

 

 

2

(2) Для доступа к отдельному элементу вектор-строки или вектор-столбца можно указать только один индекс.

3

>> B=[1 2 4] B =

1

2

4

>>x=B(3)

x =

4

>>x=B(1,3)

x =

4

(3) Можно обратиться сразу к некоторому диапазону элементов массива

A(:,s)

 

Обращение ко всем элементам, стоящим в s-м столбце

 

 

 

A(s,:)

 

Обращение ко всем элементам, стоящим в s-й строке

 

 

 

A(:,s:q)

 

Обращение ко всем элементам, стоящим в столбцах с s по q

 

 

 

A(s:q,:)

 

Обращение ко всем элементам, стоящим в строках с s по q

 

 

 

A(s:q,t:h)

 

Обращение к элементам в строках с s по q и в столбцах с t по h

 

 

>> A=[4 5 6;7 8 9;10 11 12]

A =

 

 

4

5

6

7

8

9

10

11

12

>>B=A(:,2) B =

5

8

11

>>C=A(2:3,1:2) C =

7 8

10 11

4. Изменение массивов (1) Транспонирование

Операция транспонирования матрицы A реализуется командой A ’:

>>A=[1 2 3;4 5 6]

A =

 

 

1

2

3

4

5

6

>> A'

 

 

ans =

 

 

14

25

36

(2)Добавление строк и столбцов к массивам

Рассмотрим примеры:

>> clear

4

A =

 

 

 

1

2

3

 

4

5

6

 

>> B=[A;7 8 9]

 

B =

 

 

 

1

2

3

 

4

5

6

 

7

8

9

 

>> C=[A;B]

 

C =

 

 

 

1

2

3

 

4

5

6

 

1

2

3

 

4

5

6

 

7

8

9

 

>> G=[A A(:,2)]

G =

 

 

 

1

2

3

2

4

5

6

5

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

Элемент или диапазон элементов может быть удален из массива путем присвоения пустого множества этим элементам ([]):

>> V=[1 2 3 4;5 6 7 8; 9 10 11 12] V =

1

2

3

4

5

6

7

8

9

10

11

12

>> V(:,2)=[]

 

V =

 

 

 

1

3

4

 

5

7

8

 

9

11

12

 

5. Некоторые встроенные функции для анализа матриц

Функция

Описание

 

 

Пример

 

 

 

 

 

 

 

length (A)

Возвращает число элементов вектора A

>> clear

 

 

 

 

 

>> A=[1 2 3 1 7]

 

 

 

A =

 

 

 

 

 

 

1

2

3

1

7

 

 

>> length(A)

 

 

 

 

ans =

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

size (A)

Возвращает вектор-строку [m,n], где m –

>> size(A)

 

 

 

число строк, n – число столбцов матрицы A.

ans =

 

 

 

 

 

 

1

5

 

 

 

 

 

 

 

 

 

 

5

mean(A)

 

Возвращает среднее арифметическое

>> mean(A)

 

 

 

 

элементов вектора A.

ans =

 

 

 

 

 

 

 

 

2.8000

 

 

 

 

 

 

 

 

 

 

 

max(A)

 

Если A – вектор, то возвращает самый

>> max(A)

 

 

 

 

 

большой элемент в A. Если A – матрица, то

ans =

 

 

 

 

 

 

возвращает вектор строку из самых

7

 

 

 

 

 

 

больших элементов каждого столбца.

 

 

 

 

 

 

 

 

 

 

 

 

 

min(A)

 

Если A – вектор, то возвращает самый

>> min(A)

 

 

 

 

 

маленький элемент в A. Если A – матрица,

ans =

 

 

 

 

 

 

то возвращает вектор строку из самых

1

 

 

 

 

 

 

маленьких элементов каждого столбца.

 

 

 

 

 

 

 

 

 

 

 

 

 

sum(A)

 

Если A – вектор, то возвращает сумму его

>> sum(A)

 

 

 

 

 

элементов.

ans =

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

prod(A)

 

Если A – вектор, то возвращает

>> prod(A)

 

 

 

 

 

произведение его элементов.

ans =

 

 

 

 

 

 

 

 

42

 

 

 

 

 

 

 

 

 

 

 

 

sort(A)

 

Если A – вектор, то возвращает элементы

>> sort(A)

 

 

 

 

 

вектора в порядке возрастания.

ans =

 

 

 

 

 

 

 

 

1

1

2

3

7

 

 

 

 

 

6. Поэлементное умножение и деление массивов одинаковой размерности

 

 

 

 

 

 

 

Функция

 

Описание

 

Пример

 

 

 

 

 

 

 

A.*B

 

Умножение каждого элемента массива A

>> A=[1 2;3 4]

 

 

поэлементное

 

на соответствующий элемент массива В.

A =

 

 

 

 

умножение

 

 

1

2

 

 

 

 

 

 

 

3

4

 

 

 

 

 

 

 

>> B=[5 6;7 8]

 

 

 

 

 

 

B =

 

 

 

 

 

 

 

 

5

6

 

 

 

 

 

 

 

7

8

 

 

 

 

 

 

 

>> A.*B

 

 

 

 

 

 

 

ans =

 

 

 

 

 

 

 

 

5

12

 

 

 

 

 

 

 

21

32

 

 

 

 

 

 

 

 

 

 

A./B

 

Деление каждого элемента массива A на

>> A./B

 

 

 

поэлементное

 

соответствующий элемент массива В.

ans =

 

 

 

 

деление

 

 

0.2000

0.3333

 

 

 

 

 

0.4286

0.5000

 

 

 

 

 

 

 

 

7. Операции с массивами и скалярами

 

 

 

 

 

 

 

 

 

 

 

Функция

 

Описание

 

Пример

 

 

 

 

 

 

 

 

A+c

 

Прибавление ко всем элементам массива

>> A+3

 

 

 

 

 

 

A числа c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

ans =

 

 

 

 

4

5

 

 

 

6

7

 

 

 

 

 

A-c

Вычитание из всех элементов массива A

>> A-3

 

 

числа c

ans =

 

 

 

 

-2

-1

 

 

 

0

1

 

 

 

 

A.*c

Умножение всех элементов массива A на

>> A=[1 2;3 4];

или

число c

>> A.*3

 

A*c

 

ans =

 

 

 

 

3

6

 

 

 

9

12

 

 

 

>> 3*A

 

 

 

ans =

 

 

 

 

3

6

 

 

 

9

12

 

 

 

 

 

A./c

Деление всех элементов массива A на

>> A./3

 

или

число c

ans =

 

 

A/c

 

0.3333

0.6667

 

 

1.0000

1.3333

 

 

>> A/3

 

 

 

ans =

 

 

 

 

0.3333

0.6667

 

 

1.0000

1.3333

 

 

 

 

A.^c

Возведение в степень c всех элементов

>> A.^2

 

поэлементное

массива

ans =

 

 

возведение в

 

1

4

 

степень

 

9

16

 

 

 

 

 

 

8. Сложение, вычитание и умножение массивов по правилам линейной алгебры

Функция

Описание

 

Пример

 

 

 

A+B

Сложение матриц в соответствии с

>> A=[1 2;3 4]

 

правилами линейной алгебры (условие

A =

 

 

выполнения: размерность матриц должна

1

2

 

совпадать)

3

4

 

 

>> B=[5 6;7 8]

 

 

B =

 

 

 

5

6

 

 

7

8

 

 

>> A+B

 

 

ans =

 

 

 

6

8

 

 

 

 

7

 

 

10

12

 

 

 

A-B

Вычитание матриц в соответствии с

>> A-B

 

правилами линейной алгебры (условие

ans =

 

 

выполнения: размерность матриц должна

-4

-4

 

совпадать)

-4

-4

 

 

 

A*B

Умножение матриц в соответствии с

>> A*B

 

правилами линейной алгебры (условие

ans =

 

 

выполнения: число столбцов первого

19

22

 

множителя должно быть равно числу

43

50

 

строк второго множителя)

 

 

 

 

 

 

8. Вычисление значений математических функций одновременно для разных аргументов

Очень важная особенность функций в MATLAB - обработка аргументов, заданных

матрицами.

 

 

 

 

 

 

 

 

 

 

 

Например,

 

 

 

 

 

 

 

 

 

 

>> A=[1 3 4;6 1 0]

 

 

 

 

 

 

 

 

 

A =

 

 

 

 

 

 

 

 

 

 

 

 

1

3

4

 

 

 

 

 

 

 

 

 

 

6

1

0

 

 

 

 

 

 

 

 

 

 

>> B=sin(A)

 

 

 

 

 

 

 

 

 

 

B =

 

 

 

 

 

 

 

 

 

 

 

 

0.84147

0.14112

-0.7568

 

 

 

 

 

 

-0.27942

0.84147

0

 

 

 

 

 

 

 

 

 

 

 

Примеры применений MATLAB

 

 

 

 

 

 

 

 

 

 

 

Пример

1.

Вычислить 1, 3, 5,..., 19 и найти среднее арифметическое

полученных чисел.

Решение.

>>A=1:19;

>>B=sqrt(A);

>>mean(A) ans =

10

Пример 2. Найти сумму 13 + 33 +53 +... + 213 .

Решение.

>>B=1:2:21;

>>B1=B.^3;

>>sum(B1) ans =

29161

8

Пример 3. Провести несколько вычислительных экспериментов на сравнение среднего арифметического нескольких положительных чисел со средним геометрическим этих чисел.

Справка. Пусть a1, a2 ,...., an 0 .

 

 

 

 

 

 

 

 

 

a1 + a2 + ... + an

- среднее арифметическое чисел a , a

 

,...., a

 

.

 

 

 

 

 

2

n

 

 

n

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- среднее геометрическое чисел a , a

 

 

 

.

 

 

n a a .... a

n

2

,...., a

n

 

1 2

1

 

 

 

 

 

 

Решение.

Создаем скрипт-файл для вычисления среднего арифметического и среднего геометрического по известным данным:

%сравнение среднего арифметического и среднего геометрического n чисел

X=mean(A);

l=length(A); Y=nthroot (prod(A),l);

Z=[Z X-Y] %вектор разности среднего арифметического и среднего геометрического

Сохраняем скрипт-файл под именем Ex_2_3.

В командном окне последовательно определяем различные наборы положительных чисел в форме вектор-строки и вызываем скрипт-файл:

>>A=1:25;

>>B=linspace(4,20,25);

>>Z=[];

>>Ex_2_3

Z =

2.8229

>>A=A+B;

>>Ex_2_3 Z =

2.8229 3.5569

>>A=A.*B;

>>Ex_2_3

Z =

2.8229 3.5569 123.9076

>>A=sqrt(A);

>>Ex_2_3

Z =

2.8229 3.5569 123.9076 2.0050

>>A=[A B];

>>Ex_2_3 Z =

2.8229 3.5569 123.9076 2.0050 1.7341

>>A(:)=1;

>>Ex_2_3

9

Z =

2.8229

3.5569

123.9076

2.0050

1.7341

0

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

a1 + a2 + ... + an

 

 

 

 

 

.

n a a

2

.... a

n

 

n

1

 

 

 

 

 

 

 

 

Важно! Отталкиваясь от результатов вычислительного эксперимента, можно лишь предположить, что среднее арифметическое больше либо равно среднему геометрического. Утверждать, что это так, исходя только из результатов вычислительного эксперимента, нельзя.

Упражнения

Упражнение 1.

 

1

5

9

13

 

1

2

3

4

 

 

 

2

6

10

14

 

 

Создайте в командном окне матрицы A =

,

B = 1

2

3

4

 

и

3

7

11

15

 

 

 

 

 

 

 

 

2

3

4

 

 

 

 

 

 

 

 

 

4

8

12

16

1

 

 

 

 

 

 

 

 

 

 

0

вектор-столбец С = −1 .

0

а)

Одной командой замените две последние строки матрицы A на первые две

строки матрицы B .

 

 

 

 

 

 

 

 

 

 

 

 

б) Одной командой замените третий столбец матрицы B столбцом С .

 

 

 

 

 

в)

Одной командой создайте новую матрицу D размера

 

7 4 , добавив снизу к

четырем строкам матрицы A три строки матрицы B .

 

 

 

 

 

 

 

 

 

 

 

г)

Последние три элемента второй строки матрицы

B

 

замените на первые три

элемента последней строки матрицы A .

 

 

 

 

 

 

 

 

 

 

 

 

д) Одной командой утройте все элементы второго столбца матрицы D .

 

 

 

 

Упражнение 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

1

3

 

 

1

2

3

4

 

 

Создайте в командном окне матрицы

,

 

2

3

4

 

и

A =

4

1

2

 

B = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

4

 

 

1 0

1

 

 

 

 

 

 

 

 

 

 

 

 

С =

4

.

 

 

 

 

 

 

 

 

 

 

 

 

2

1

 

 

 

 

 

 

 

 

 

 

 

 

а) Укажите пары матриц, которые можно поэлементно сложить, вычесть, умножить. Проделайте в командном окне соответствующие действия.

10