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

Учебно-Технологический_Практикум_УТС.Б_2

.pdf
Скачиваний:
24
Добавлен:
10.02.2015
Размер:
632.16 Кб
Скачать

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Московский государственный технический университет имени Н. Э. Баумана»

Калужский Филиал

____________________________________________________________

Адкин М.Ю.

АВТОМАТИЗАЦИЯ ВЫЧИСЛЕНИЙ И РАСЧЕТОВ СИСТЕМ УПРАВЛЕНИЯ.

Линейная алгебра и основы работы с векторами и матрицами в

MATLAB.

Методические указания к выполнению лабораторной работы № 2

по курсу

“Учебно-технологический практикум” для направления подготовки бакалавров

220400.62 «Управление в технических системах» (ЭИУ3-КФ)

Калуга

2012

УДК 681.3.06

Данные методические указания издаются в соответствии с учебным планом направления подготовки 220400.62.

Указания рассмотрены и одобрены: кафедрой “САУ“ ЭИУ3-КФ

протокол №

от

г.

 

 

Зав. кафедрой

 

 

Н.Д. Егупов

Методической комиссией факультета ЭИУК

протокол №

от

г.

 

 

Председатель методической комиссии

 

 

М.Ю. Адкин

Методической комиссией Калужского филиала

протокол №

от

г.

 

 

Председатель методической комиссии

 

 

О.Л. Перерва

Рецензенты:

 

 

 

 

д.т.н., проф. каф. ЭИУ3-КФ Корнюшин Ю.П.

 

 

к.т.н., доц. каф. ЭИУ2-КФ Донецков А.М.

Автор:

 

к.т.н. доц. каф. ЭИУ3-КФ. Адкин М.Ю.

 

 

Аннотация

Данные методические указания написаны на основе официальной документации пакета MATLAB, предназначены для выполнения лабораторной работы по курсу «Учебно-технологический практикум» студентами специальности 220400.62 1-го семестра обучения.Цель работы - знакомство студентов с элементами линейной алгебры и типовы-

ми приемами работы с векторами и матрицами в MATLAB.

 

© Калужский филиал МГТУ им. Н.Э. Баумана,

2012 г.

© Адкин М.Ю.

2012 г.

2

Лабораторная работа №2.

Тема работы: Линейная алгебра и работа с векторами и матрицами в MATLAB

Приборы и оборудование:

Компьютер совместимый с IBM PC, 128-512 Мб. ОЗУ

Операционная система WINDOWS XP,7,UNIX

Математический пакет MATLAB Version 5.*, 6.*, 7.*

Цель работы: знакомство студентов с элементами линейной алгебры и типовыми приемами работы с векторами и матрицами в

MATLAB.

Содержание работы:

1.Изучить теоретические положения лабораторной работы.

2.Выполнить задания и сделать выводы.

3.Оформить отчет.

Форма отчетности студентов:

Индивидуальный отчет в электронной форме с типовым титульным листом. Допустимый формат -DOC.

Содержание отчета:

1. Порядковый номер и текст задания или задачи.

2.Программа MATLAB решения задачи.

3. Результат выполнения задания, решения задачи.

4. Ответ или вывод в развернутой форме с необходимыми доказательствами.

Длительность работы : 6 академических часов.

Защита работы : Собеседование с преподавателем по контрольным вопросам, выполнение индивидуальных заданий.

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 ВЕКТОРА

Влабораторной работе приняты следующие обозначения:

вектора записываются строчными латинскими буквами - a,b, а матрицы - прописными латинскими буквами - A,B, жирным шрифтом;

элементы векторов и матриц - всегда строчные латинские буквы - определяются либо с помощью нижних индексов (математическая

3

форма записи) - ai , b j , aij , b jk , либо в форме записи пакета MATLAB - индексацией в круглых скобках: a(i), b( j), a(i, j), b( j, k) ;

если не указано особо вектором полагается вектор-столбец;

транспонированные вектора и матрицы определяются с помощью верхнего индекса 'т' - математическая форма записи, или с помощью верхнего индекса апостроф - форма записи пакета MATLAB.

1.1.1СКАЛЯРНОЕ ИЛИ ВНУТРЕННЕЕ ПРОИЗВЕДЕНИЕ ВЕКТОРОВ

Вектор можно скалярно умножить на другой вектор, если их размеры – число элементов в векторах - совпадают. Результатом скалярного произведения векторов является число. Формулы для вычисления произведения векторов размера N :

 

 

 

N

k

c

 

a * b * cos(ab), c

k

a *b

a b

 

 

 

k 1

 

,

т.е. - скалярное произведение векторов есть произведение модулей

этих векторов на косинус угла между векторами, или, поэлементно - сумма поэлементного произведения векторов.

Геометрический смысл скалярного произведения - площадь прямоугольника, сторонами которого являются модуль проекции первого вектора на второй и модуль второго вектора. Если между векторами прямой угол, проекция равна нулю, и , соответственно, нулю равно скалярное произведение. Такие вектора называют ортогональными. Примером ортогональной системы векторов могут служить ортогональные оси декартовой системы координат :

x

1

 

, y

 

 

 

0

 

0

 

 

1

 

 

.

Физический смысл скалярного произведения - работа, совершаемая постоянной силой по перемещению груза.

Из формулы определения скалярного произведения следует :

1.Формула для определения модуля вектора:

a a * a .

2.Формула для определения косинуса угла между векторами:

a *b cos( ) a * b .

4

1.1.2 ВЕКТОРНОЕ ПРОИЗВЕДЕНИЕ ВЕКТОРОВ

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

Обозначение векторного произведения: c a b a b ;

модуль вектора векторного произведения: c a * b * sin(ab) ;

векторное произведение двух ненулевых векторов в координатах:

a [a

, a

2

, a ],b [b

, b

, b ],

 

 

 

1

 

 

3

 

 

1

2

 

 

3

 

 

 

 

a

 

a

;

a

a

;

a

a

 

 

[a b]

 

2

3

3

 

1

1

 

2

 

 

b

 

b

 

b

b

 

b

b

 

 

 

 

2

3

 

3

 

1

 

1

2

 

Далее перечислены основные свойства векторного произведения.

a b b a ;

 

[( a) b] [a b];

 

[(a b) c] [a c] [b c];

[[a b] c] b a * c

a b * c ;

[a [b c]] b a * c

c a *b .

Для вычисления векторного произведения в MATLAB существует функция cross. Кроме функции cross векторное произведение можно вычислить поэлементно.

1.1.3 СМЕШАННОЕ ПРОИЗВЕДЕНИЕ ВЕКТОРОВ

Смешанное - скалярно - векторное произведение трех ненулевых некомпланарных векторов, есть число, абсолютная величина которого равна объему параллелепипеда, построенного на векторах, исходящих из одной точки. Это число положительное, если тройка векторов является правой и отрицательно, если тройка левая.

Обозначение смешанного произведения:

d

a,b, c

 

a * (b c) ;

смешанное произведение векторов, заданных своими координатами a [a1, a2 , a3 ],b [b1, b2 , b3 ],c [c1, c2 , c3 ],

a1

a2

a3

d a, b, c b1

b2

b3 .

c1

c2

c3

5

Основные

a,b, c

 

свойстваa b * c

смешанного произведения: b c * ac * a b b * a c .

1.1.4 ВНЕШНЕЕ ПРОИЗВЕДЕНИЕ ВЕКТОРОВ

Пусть a - вектор столбец размера N, b - вектор строка размера M. Тогда результатом внешнего произведения векторов a и b будет матрица C размера N x M, элементы которой вычисляются по формуле:

C ab

T

, c

a b

.

 

 

 

ij

i j

 

Замечание: внешнее произведение векторов является частным случаем произведения матриц.

1.2 МАТРИЦЫ

1.2.1 МАТРИЧНЫЕ АДДИТИВНЫЕ И МУЛЬТИПЛИКАТИВНЫЕ ОПЕРАТОРЫ MATLAB

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

Матричные операторы:

Оператор

Значение

 

 

+

Поэлементное сложение матриц

 

 

-

Поэлементное вычитание матриц

 

 

*

Матричное произведение

 

 

^

Возведение квадратной матрицы в степень

 

 

/

Прямое матричное деление - правое

 

 

\

Обратное матричное деление - левое

 

 

.'

Транспонирование матрицы

 

 

'

Сопряжение матрицы

 

 

Оператор сопряжения и транспонирования для вещественных матриц дает один и тот же результат. Однако для матриц, имеющих ком-

6

плексные элементы результаты будут различны: оператор сопряжения не только поменяет строки и столбцы матрицы, но и заменит комплексные элементы на комплексно-сопряженные:

>>A=[1+2i 2+4i; 3-2i 6+7i] A =

1.0000 + 2.0000i 2.0000 + 4.0000i

3.0000 - 2.0000i 6.0000 + 7.0000i

>>B=A'

B =

1.0000 - 2.0000i 3.0000 + 2.0000i

2.0000 - 4.0000i 6.0000 - 7.0000i >> C=A.'

C =

1.0000 + 2.0000i 3.0000 - 2.0000i

2.0000 + 4.0000i 6.0000 + 7.0000i

1.2.2 РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ

Рассмотрим систему линейных уравнений вида Ax=b, где A - матрица, а x и b - вектор столбцы неизвестных переменных и правой части соответственно. Согласно теореме Кронекера и Капелли, если ранг матрицы A отличен от нуля и равен рангу расширенной матрицы A|b, то система уравнений совместна, и имеет, по крайней мере, одно решение.

В MATLAB ранг матрицы может быть найден с помощью операто-

ра rank:

RANK Matrix rank.

RANK(A) provides an estimate of the number of linearly independent rows or columns of a matrix A. RANK(A,tol) is the number of singular values of A

that are larger than tol.

RANK(A) uses the default tol = max(size(A)) * norm(A) * eps

Если система уравнений определенна, т.е. число уравнений равно числу неизвестных, то формально решение системы линейных уравнений имеет вид x= A-1b, где A-1 - обратная к A матрица. В MATLAB

последнее выражение трактуют как деление вектора b на вектор A

: x= A \ b. На самом деле, алгоритм решения систем линейных уравнений в MATLAB при помощи оператора обратного деления определяется структурой матрицы коэффициентов системы MATLAB - учитывается треугольность, симметричность, прямоугольность или квадратность матрицы. Возможность решения для прямоугольных матриц

7

коэффициентов, говорит о том, что MATLAB может успешно решать переопределенные или недоопределенные системы уравнений.

Пример.

Решим систему из трех линейных уравнений с тремя неизвестными:

1.2x

 

0.3x

 

0.2x

1.3;

1

 

 

2

 

3

 

0.5x

 

2.1x

 

1.3x

3.9;

1`

 

 

2

 

3

 

0.9x

 

 

0.7x

 

5.6x

5.4.

1

 

2

 

3

 

Последовательность решения:

1.Формируем матрицу коэффициентов A:

>>A=[1.2 0.3 -0.2;0.5 2.1 1.3;-0.9 0.7 5.6]

A =

1.2000 0.3000 -0.2000

0.5000 2.1000 1.3000 -0.9000 0.7000 5.6000

2.Формируем вектор правой части b: >> b=[1.3 3.9 5.4]'

b = 1.3000 3.9000 5.4000

3.Определяем ранг матрицы коэффициентов:

>> rank(A) ans =

3

4.Формируем расширенную матрицу системы:

>> C=[A b] C =

1.2000 0.3000 -0.2000 1.3000

0.5000 2.1000 1.3000 3.9000 -0.9000 0.7000 5.6000 5.4000

5.Определяем ранг расширенной матрицы:

>> rank(C) ans =

3

6.Ранги равны и равны порядку системы. Следовательно, система имеет единственное решение:

>> x=A\b

8

Найденное решение.

x =

1.0000

1.0000

1.0000

Замечание: Найденное решение всегда следует проверять методом подстановки в исходное уравнение.

1.2.3 ЗАПОЛНЕНИЕ МАТРИЦ

Заполнение матриц данными может потребоваться при формировании матриц систем линейных уравнений. Это можно делать несколькими способами:

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

>> A=[ 1 2 3 4 5 6 7 8 9 10 11 12

13 14 15 16]

A =

 

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

2. С помощью функций MATLAB формирования матриц специального вида. Информацию о таких функциях можно получить, если, например, в командном окне MATLAB ввести запрос help elmat, что означает справку по элементарным матрицам и манипуляциям с ними.

Интересующие нас разделы : Elementary matrices,Matrix manipulation, Specialized matrices.

9

В данной работе рассмотрим некоторые из этих функций.

Функция

zeros()

ones()

eye()

rand()

Описание

Заполнение матрицы нулями

Заполнение матрицы единицами

Формирование единичной матрицы.

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

Пример вызова

A=zeros(4,5)

B=ones(5)

C=eye(5,8)

R= - 0.5+10*rand(5,3)

randn()

Формирование

матрицы со

RN=round(10*randn(5))

 

случайными

параметрами,

 

 

распределенными

по нор-

 

 

мальному закону c

нулевым

 

 

средним и отклонением еди-

 

 

ница.

 

 

 

 

 

 

 

diag()

Формирует

диагональную

b=[1 2 3 4 5];

 

матрицу из вектора-строки.

D=diag(b)

 

 

 

 

 

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

>>A=zeros(4,5)

A =

 

 

 

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

10