Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4241, 4242(ТАУ-без MATLAB) / Романовский. ТАУ. ЛабПр. Ч.1 [2011]

.pdf
Скачиваний:
36
Добавлен:
17.04.2015
Размер:
705.72 Кб
Скачать

ставляют собой одномерные числовые массивы.

При создании вектора-строки используется конструкция, демонстрируемая следующим примером:

» a1 = [1.1, 2.2, 3.3]

a1 =

1.1000 2.2000 3.3000

В подобных конструкциях вместо запятых разрешается использовать пробелы. Однако рекомендуется всё же здесь применять именно запятые по причине большей наглядности. Так, например, в случае создания вектора-строки, в котором среди чисел встречаются комплексные числа, более читабельной будет конструкция, в которой в качестве разделителей между числами используются запятые. Пример:

» a2 = [1.1 + 2.2i, 22.2, 3.3 – 7i];

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

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

» a3 = [3.3; 2.2; 1.1]

a3 =

3.3000

2.2000

1.1000

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

»a2(3)

ans =

3.3000 - 7.0000i

»a3(1)

- 11 -

ans =

3.3000

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

Количество элементов одномерного массива всегда можно узнать при помощи функции length().

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

» A1 = [1, 2, 3; 9, 8, 7; 6, 5, 4]

A1 =

1

2

3

9

8

7

6

5

4

Матрицы представляют собой двухмерные числовые массивы. Как видно из примера, при формировании матриц запятая означа-

ет переход к следующему элементу строки создаваемой матрицы, а точка с запятой означает переход на следующую строку этой матрицы.

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

» A1(2, 3)

ans =

7

Для определения размеров матрицы по каждой размерности можно использовать функцию size(). Она возвращает вектор-строку из двух чисел, содержащих количество строк (первое число) и количество столбцов (второе число) интересующей матрицы.

Над числами, числовыми векторам и матрицами можно выполнять разнообразные операции. Ниже приведены некоторые из этих

- 12 -

операций:

1.«+» - сложение чисел, векторов и матриц.

2.«-» - вычитание чисел, векторов и матриц.

3.«*» - перемножение чисел, векторов и матриц.

4.«/» - деление чисел, векторов и матриц (матрицу на матрицу, разумеется, делить нельзя, однако можно разделить матрицу на число).

5.«'» - транспонирование векторов и матриц.

6.«\» - решение систем линейных алгебраических уравнений.

7.«^» - возведение чисел и матриц в степень.

Ниже приводятся примеры выполнения некоторых из этих операций над векторами и матрицами (с подавлением вывода результатов выполнения команд).

»A1 = [1, 2, 3; 9, 8, 7];

»A2 = [9, 8, 7; 1, 2, 3];

»A3 = A1 + A2;

»A4 = [1, 2; 9, 8; 3, 5];

»A5 = A4 * A1;

»A6 = A2';

Ниже приведён пример решения системы линейных алгебраических уравнений Ax + B = 0 (также с подавлением вывода результатов).

»A = [1, -2, -3; 9, 8, 2; -4, 5, 6];

»B = [2; 3; 1];

»

x = A\B;

% Решение.

 

»

C = A*x;

% Проверка

решения: C должно

 

 

% равняться B.

Разумеется, для обработки матриц существует большое количество самых разных функций. Ниже приводятся примеры вызова только некоторых из этих функций с поясняющими комментариями.

»A = zeros(2, 3); % Создание матрицы нулей

%размерами 2 x 3.

»B = ones(3, 2); % Создание матрицы единиц

%размерами 3 x 2.

» I = eye(3);

% Создание единичной матрицы 3 x 3.

» C = rand(3, 3);

% Создание матрицы из

 

%

случайных чисел со значениями

 

% в диапазоне от 0 до 1.

» d = det(C);

% Вычисление определителя

 

%

матрицы C.

» r = rank(C);

% Вычисление ранга матрицы C.

- 13 -

»

D = inv(C);

% Вычисление

матрицы, обратной

 

 

%

к матрице C.

»

p = eig(C);

%

Вычисление

собственных чисел

%матрицы C.

1.1.3.Работа с полиномами

Среда MATLAB имеет встроенные средства для работы с полиномами. Полином представляет собой степенную функцию вида

F ( p) = an pn + an−1 pn−1 + K + a1 p + a0 .

Здесь p - это некоторая независимая переменная; ai - числовые коэффициенты, где i = 1, n .

Если степенную функцию F ( p) приравнять нулю, то получится степенное уравнение

an pn + an−1 pn−1 + K + a1 p + a0 = 0 .

Это уравнение можно решить. Количество его решений всегда равно n , а сами эти решения pi ( i = 1, n ) называются корнями полинома F ( p) .

В среде MATLAB полиномы хранятся в виде векторов-строк, в которых содержатся коэффициенты полином в порядке убывания их индексов. Например, для полинома

P ( p) = 2 p4 + 3 p2 + 5 p + 4

1

соответствующая вектор-строка будет выглядеть так:

» P1 = [2, 0, 3, 5, 4];

Для работы с полиномами в среде MATLAB также существует ряд функций. Ниже приводятся примеры вызова некоторых из этих функций с поясняющими комментариями:

»Y = polyval(P1, X);

»P3 = conv(P1, P2);

»[Y1, Y2] = deconv(P1, P2);

»DP = polyder(P1);

»R1 = roots(P1);

%Вычисление полинома при

%заданном значении

%независимой переменной.

%Вычисление произведения

%двух полиномов.

%Деление двух полиномов.

%Вычисление производной

%полинома.

%Вычисление корней

%полинома.

- 14 -

»

P1

= poly(R1);

% Вычисление коэффициентов

 

 

 

%

полинома

по его

 

 

 

%

заданным

корням.

»

F1

= poly(A1);

% Вычисление коэффициентов

%характеристического

%полинома матрицы.

Впримерах функция деления полиномов возвращает два векторастроки. Первый вектор-строка Y1 содержит частное от деления, а вто-

рой вектор-строка Y2 содержит остаток от деления.

Функция poly() может вызываться двумя способами. Если её аргументом является вектор-строка, то она рассматривает её элементы, как корни полинома, коэффициенты которого следует определить. Если же её аргументом является квадратная матрица, то она определяет коэффициенты характеристического полинома этой матрицы. Характеристическим полиномом некоторой квадратной матрицы является полином, для которого справедливо равенство:

F ( p) = det( pI A) ,

где I – единичная матрица с размерами матрицы A .

1.2.ЗАДАНИЯ

1.В таблице Табл. 1.1 по вариантам приведены две квадратные матрицы A1 и A2 . Следует создать их в командном окне среды

MATLAB и выполнить над ними операции сложения, вычитания, перемножения, транспонирования, деления на число, возведения в степень числа.

2. В таблице Табл. 1.1 также приведена матрица B . Средствами среды решить линейные матричные уравнения A1x + B = 0 и

A2 x + B = 0 .

3. Для заданных матриц A1 и A2 средствами среды MATLAB

найти их определители, ранги, обратные матрицы, а также их собственные числа.

4. В таблице Табл. 1.1 также приведены два полинома P и

P .

1

2

Средствами среды MATLAB вычислить значения полиномов, подста-

вив значение x , равное 1; вычислить произведение полиномов P и P ;

 

 

 

 

1

2

разделить полином P на полином P ; вычислить производные поли-

 

 

1

2

 

 

номов P и P ;

вычислить корни полиномов P и P ; по найденным

1

2

 

1

2

 

корням вычислить коэффициенты полиномов, сравнить эти коэффици-

енты с коэффициентами полиномов P и P ; вычислить коэффициенты

1

2

- 15 -

характеристических полиномов матриц A1 и A2 .

Табл. 1.1. Варианты заданий.

 

A

 

A

 

 

 

B

P

P

 

1

 

2

 

 

 

1

2

 

1

6 4

1 6

4

 

3

2 p4 + 4 p2 +

3 p5 − 4 p2 +

1

 

 

 

 

 

 

 

7

2 8

7 2

− 8

 

4

+ 5 p + 1

+ 2 p + 5

 

 

 

 

5 6

 

 

 

 

5

6 3

 

3

 

2

 

 

 

10

5 4

1 4

4

 

1

2 p3 + 2 p2 +

2 p4 + 4 p2 +

2

 

 

 

 

 

 

 

− 7

2 0

7 20

8

 

2

+ 5 p + 1

+ 5 p

 

5

6 3

5 2

1

 

2

 

 

 

 

1

− 6 4

 

1 6

4

− 3

2 p4 − 4 p2

2 p5 − 2 p2 +

3

 

 

 

− 5 2

 

 

 

 

7

2 1

 

1

 

 

4

− 5 p + 1

+ 5 p

 

5

− 6 3

5 6

3

 

 

2

 

 

 

 

 

1

6 4

0 − 6

4

 

 

3

2 p3 + 10 p2 +

p4 + 3 p3 +

4

 

 

 

 

 

 

 

 

7

1 8

7 − 2

8

 

− 4

+ 5 p

+ 5 p + 1

 

− 5

8 3

5 6

3

 

 

2

 

 

 

 

 

1

6 4

1 6

2

 

 

3

2 p4 + 4 p2

p4 + p2 +

5

 

 

 

 

 

 

 

 

7

0 8

7 − 2

8

 

 

4

p + 10

+ 3 p + 3

 

5

6 − 3

1 6

3

− 2

 

 

 

 

1

6 3

1 − 6

4

 

 

3

2 p4 + 4 p2 +

2 p4 + 4 p2 +

6

 

 

 

 

 

 

 

 

7

1 2

7 10

8

5

+ 5 p + 1

+ 5 p + 1

 

5

− 6 3

 

5 7

3

 

− 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

6 2

1 6

4

 

 

3

2 p4 + 9 p2

p4 + 3 p2

7

 

 

 

 

 

 

 

7

− 1 8

17 2

8

 

− 3

−1p + 5

p + 1

 

3

6 3

5 6

3

 

 

2

 

 

 

 

- 16 -

 

1 1

4

1

6 4

 

− 2

p3 p2 +

3 p4 − 4 p2

8

 

 

 

 

 

 

 

7 1

3

17

2 0

 

 

4

+ 35 p + 3

− 5 p − 1

 

 

 

 

 

 

 

 

 

5 2

− 3

5

2 3

 

− 1

 

 

 

1 − 6

4

1

− 6 4

 

 

1

p3 + p2

3 p4 + 40 p2 +

9

 

 

 

 

 

 

 

 

7 2

4

2

2 1

 

− 2

− 2 p + 1

+ p + 1

 

5 26

3

5

3 3

 

 

2

 

 

 

 

 

− 1 6

4

1

− 6 4

 

3

2 p4 + p2 +

10 p5 − 4 p3 +

10

 

 

 

 

 

 

 

10 2

8

7

1 8

2

+ p + 10

+ 7 p − 1

 

50 6

3

5

2 3

2

 

 

 

 

1 − 6

4

1

6 − 4

 

 

3

2 p4 − 4 p2

3 p5 + 4 p2

11

 

 

 

 

 

 

 

 

7 2

8

7

2 8

 

− 4

− 5 p + 1

− 2 p + 5

 

5 − 6

3

5

6 3

 

 

2

 

 

 

 

 

10 5

4

1

− 4 4

 

 

1

2 p3 − 2 p2

2 p4 − 4 p2

12

 

 

 

 

 

 

 

 

7 2

0

7

20 8

 

− 2

− 5 p + 1

− 5 p

 

− 5 6

3

5

− 2 1

 

− 2

 

 

 

 

1 6

4

 

1

6 4

 

− 3

2 p4 + 4 p2

2 p5 + 2 p2

13

 

 

 

− 5

 

 

 

 

7 2

1

 

2 1

 

− 4

− 5 p −1

− 5 p

 

5 − 6

3

− 5

6 3

 

 

2

 

 

 

 

 

− 1 6

4

0

− 6 4

 

 

3

2 p3 −10 p2 +

p4 + 3 p3

14

 

 

 

 

 

 

 

 

7 1

8

7

2 8

 

− 4

+ 5 p

− 5 p − 1

 

5 8

3

5

− 7 3

 

− 2

 

 

 

 

1 6

4

1

− 6 2

 

− 3

− 2 p4 + 4 p2

p4 p2 +

15

 

 

 

 

 

 

 

 

7 0

− 8

7

− 2 8

 

 

4

p + 10

+ 3 p − 3

 

5 6

− 3

1

6 3

 

− 2

 

 

 

- 17 -

 

1 6

3

1 6

4

 

3

2 p4 − 4 p2

2 p4 + 3 p2

16

 

− 1

 

 

 

 

 

 

7

2

7 10

8

 

− 5

− 5 p + 1

 

− 2 p + 1

 

 

− 6

 

 

− 7

 

 

 

 

 

5

3

5

3

 

−1

 

 

 

 

1 − 6

2

− 1 6

4

 

3

2 p4 − 9 p2 +

p4 − 3 p2 +

17

 

− 1

 

 

 

 

 

 

7

8

17 2

8

 

− 3

+ 1p − 5

 

+ p + 1

 

3 6

3

5 6

3

 

− 2

 

 

 

 

 

 

1 1

4

1 6

4

 

− 2

p3 p2

 

3 p4 − 4 p2 +

18

 

 

 

 

 

 

 

 

 

7 1

− 3

17 2

0

 

− 3

− 35 p + 2

 

+ 65 p − 1

 

5 2

− 3

− 5 2

3

 

1

 

 

 

 

 

 

1 − 6

4

1 − 6

4

 

1

p3 + 3 p2 +

3 p4 − 40 p2 +

19

 

− 2

 

 

− 2

 

 

 

7

4

2

1

 

− 2

+ 2 p + 1

 

+ p − 2

 

5 26

3

5 3

3

 

− 2

 

 

 

 

 

 

− 5 6

4

1 − 6

4

 

− 3

2 p4 + p2

 

10 p5 − 4 p3

20

 

 

 

 

 

 

 

 

 

10 2

8

7 1

8

 

2

− 2 p − 10

 

− 7 p + 1

 

22 5

3

5 − 2

3

 

2

 

 

 

 

 

 

1 6

− 4

1 6

4

 

− 3

− 2 p4 + 4 p2

3 p5 − 3 p2

21

 

 

 

 

− 2

 

 

 

7 2

8

7

8

 

− 3

− 5 p + 1

 

− 2 p + 5

 

5 6

− 3

5 − 6

3

 

2

 

 

 

 

 

 

10 5

4

1 − 3

4

 

1

− 2 p3 − 2 p2

+

− 2 p4 − 4 p2 +

22

 

 

 

 

 

 

 

 

− 8 2

0

7 20

8

 

− 4

+ 5 p + 1

 

+ 5 p

 

5 6

3

5 − 3

1

 

− 2

 

 

 

 

 

 

1 6

4

1 6

4

 

3

− 2 p4 + 3 p2

− 2 p5 + 4 p2

23

 

 

 

 

 

 

 

 

7 2

− 1

5 2

1

 

− 5

− 5 p + 1

 

− 5 p

 

5 6

− 3

− 6 6

3

 

2

 

 

 

 

 

- 18 -

 

− 1 6

4

0 6

4

 

3

− 3 p3 − 10 p

2 +

p4 + 3 p3

24

 

− 8 1

 

 

 

 

 

 

 

8

7 2

8

 

− 8

+ 5 p

 

− 5 p + 1

 

 

5 8

 

 

− 9

 

 

 

 

 

 

3

5

3

 

− 1

 

 

 

 

1 − 6

4

1 6

2

 

3

− 5 p4 + 4 p2 +

p4 − 2 p2 +

25

 

 

 

 

 

− 2

 

 

 

7 0

8

7

8

 

4

+ 2 p + 2

 

+ 2 p − 3

 

5 16

4

1 12

3

 

− 3

 

 

 

 

 

 

1 6

3

1 − 3

4

 

3

− 6 p4 − 4 p2

2 p4 − 3 p2

26

 

 

− 2

 

 

 

 

 

 

7

2

7 13

8

 

− 3

− 5 p + 1

 

− 2 p + 1

 

5 13

3

5 7

3

 

− 4

 

 

 

 

 

 

1 − 8

2

− 1 6

4

 

3

2 p4 −19 p2

+

p4 − 3 p2 +

27

 

 

− 1

 

 

 

 

 

 

7

8

27 2

8

 

− 5

+ 2 p − 5

 

+ p + 1

 

3 0

3

− 5 6

3

 

− 1

 

 

 

 

 

 

1 3

4

1 6

4

 

− 2

− 3 p3 + p2

3 p4 − 4 p2 +

28

 

 

 

 

 

 

 

 

 

7 1

− 5

27 2

0

 

− 9

− 35 p + 2

 

+ 25 p − 1

 

5 2

− 3

− 8 2

3

 

1

 

 

 

 

 

 

1 − 9

4

1 − 6

4

 

1

p3 + 6 p2

+

3 p4 − 45 p2 +

29

 

 

− 6

 

 

− 4

 

 

 

7

4

2

1

 

− 4

+ 2 p −1

 

+ p + 2

 

5 36

3

5 31

3

 

− 2

 

 

 

 

 

 

− 8 6

4

1 − 6

4

 

− 3

2 p4 + 2 p2

12 p5 − 3 p3

30

 

 

 

 

 

 

 

 

 

11 9

8

7 12

7

 

12

− 9 p −10

 

− 7 p + 1

 

23 5

3

5 − 2

3

 

2

 

 

 

 

 

1.3.КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Как создавать объекты в среде MATLAB? Как узнать содержимое этих объектов? Как очистить содержимое командного окна?

2.Правила именования объектов в среде MATLAB.

-19 -

3.Что такое рабочее пространство среды? Как сохранять и как восстанавливать рабочее пространство среды?

4.Создание векторов и матриц в среде MATLAB. Доступ к элементам векторов и матриц. Основные действия над векторами и матрицами.

5.Создание полиномов в среде MATLAB. Основные действия над полиномами.

- 20 -

Соседние файлы в папке 4241, 4242(ТАУ-без MATLAB)