Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Действия с векторами и матрицами в MATLAB




РАБОТА В РЕЖИМЕ ПРЯМЫХ ВЫЧИСЛЕНИЙ

1) Вычисляемое выражение набирается, редактируется (если нужно) в командной строке, ввод завершается нажатием клавиши ENTER.

Средства для редактирования в командной строке: клавиши ← и → - перевод курсора вдоль строки, Home, End – быстрый переход к началу и концу строки, ↑ и ↓ - клавиши перелистывания строк (с их помощью в командной строке можно восстановить для редактирования и выполнения ранее выполнявшиеся операторы), клавиши Delete и Backspace (← в верхней строке клавиатуры) – для удаления символа над курсором и слева от него. Кроме того, в командном окне имеется сверху панель инструментов, позволяющая делать стандартные операции копирования, удаления, вставки из буфера обмена и др.

2) Для переноса длинного выражения на другую строку используется многоточие (… - три или более точек в конце строки). При нажатии ENTER курсор переместится в начало следующей строки, где можно продолжать набор оператора.

3) Основные системные переменные:

pi – значение числа π

ans – хранит результат последней выполненной операции (в том числе

и если этот результат – массив чисел). К ней можно обращаться

по имени, что бывает удобно при программировании.

inf - символ машинной бесконечности. Положительная величина,

которая больше чем любое представимое в оперативной памяти

компьютера положительное число, что так же бывает удобно

иметь при составлении алгоритмов.

i- мнимая единица – sqrt(-1). MATLAB выполняет действия в алгебре

комплексных чисел вида z = x+ i*y, где x – вещественная часть,

y – мнимая часть числа.

4) Знаки основных арифметических операций:

‘+ ‘- сложение, ‘-‘ – вычитание, ‘*’ – умножение, ‘/’ – деление слева направо, ’\’ – деление справа – налево, ‘^’ – возведение в степень.

Знаки операций применимы к векторным и матричным операндам.

Так, результаты операций A/B и B\A могут быть различны. Кроме того, одна из этих операций может быть возможна, в то время как другая – нет. Первая: A/B выполняется как A*inv(B), а вторая: B\A – как inv(B)*A. Вспомним, что умножение матриц не обладает свойством коммутативности. Знак умножения, примененный к матричным операндам, выполняет операцию умножения матриц по правилам матричной алгебры.

5) Постановка знака ‘;’ в конце вычисляемого выражения не обязательна, его присутствие блокирует вывод на экран компьютера результата выполнения выражения, после которого он поставлен. Установка точки с запятой в конце каждого оператора желательна при написании М-программ, особенно – когда промежуточными результатами являются массивы чисел. (Заметим, правда, что иногда полезно умышленно опустить точку с запятой, если вывод вычисленного значения оператора желателен).

Действия с векторами и матрицами в MATLAB

Перейдем теперь в командное окно MATLAB. Выполните в командном окне предлагаемые далее действия с матрицами. При этом данный текст лучше не закрывать, а свернуть его, нажав на кнопку “-“ в правом верхнем углу окна Microsoft Word. (В этом случае вы сможете восстановить этот текст в процессе работы, активизируя его нажатием левой клавиши мыши на нижней панели)

Задание 1: (действия с векторами)

 

1) Введите вектор 'a' из 9 элементов. С экрана элементы вектора вводятся в квадратных скобках, разделяемые пробелом.

 

a = [1 2 3 4 6 4 3 4 5] % Вводите свой вектор с другими значениями.

 

Нажмите ENTER, посмотрите на сообщение на экране.

2) Теперь выполните то же но с точкой с запятой:

 

a = [1 2 3 4 6 4 3 4 5]; % Используйте клавиши перелистывания ↑ и ↓, чтобы не

% повторять набор заново!!

Нажмите ENTER, посмотрите на сообщение на экране.

 

3) Прибавьте число 2 к элементам вектора а:

Выполните оператор:

 

b = a + 2 % Сейчас мы умышленно не ставим точку с запятой, чтобы

% посмотреть на результат

4) Транспонируем вектор b:

C=b’ % Знак транслонирования матрицы – апостроф ‘ (соответствует

% клавише буквы Э на нижнем регистре латиницы)

 

5) Попробуйте выполнить операцию

 

D= a+C % убедитесь, что она невозможна, поймите почему (?).

 

Выполните

 

D=a’+C

 

Выполните слияние:

 

E=[a;b]

E=[E;b]

 

6) Постройте график значений элементов вектора b относительно номера компоненты:

 

plot(b)

grid on

 

MATLAB может строить графики, используя указываемые ему символы.

Постройте тот же график звездочками:

 

plot(b,'*')

axis([0 10 0 10])

 

Постройте гистограмму:

bar(b)

 

ГЕНЕРАЦИЯ ВЕКТОРОВ (ранжированных переменных, т.е. массивов с постоянным шагом)

 

Выполните операторы:

 

X=1:10 % шаг 1 % не ставьте точки с запятой, наблюдайте результаты

Y=0:0.25:1 % шаг 0.25

Z=0:pi/4:2*pi % шаг pi/4

 

X1=0:0.1*pi:4*pi

Y1=sin(X1)

 

Постройте графики:

plot(X1,Y1,X1,cos(X1))

 

Задание 2: (действия с матрицами)

 

 

% Создание матриц производится так же как и создание векторов, при этом

% используется знак (;), чтобы отделить вводимые строки матрицы.

Введите матрицу размерности (3,3):

 

A = [1 2 0; 2 5 -1; 4 10 -1] % Введите свои значения. Не ставьте блокировку (;),

% чтобы следить за результатами.

 

Транспонируйте матрицу 'A':

 

B = A'

 

Выполните умножение

 

C = A * B

 

Возведите квадратную матрицу в 5 степень:

 

F=A^5

 

Найдите обратную матрицу:

 

X = inv(A)

 

Вычислите матрицу

 

I =A*inv(A) % ясно, что должна получиться единичная матрица

 

Вычислите определитель матрицы:

 

D=det(A)

 

Найдите собственные значения матрицы:

 

eig(A)

 

% Функция "poly" генерирует вектор, элементами которого являются

% коэффициенты характеристического многочлена матрицы:

% det(lambda*I - A)

 

p = round(poly(A))

 

% Функция “round” округляет до ближайшего целого

% Корни многочлена p – характеристические значения исходной матрицы

% Таким образом, мы можем найти собственные значения матрицы оператором

 

roots(p) % Выполните вычисления этим способом

 

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

% используя команды "who" или "whos".

 

Выполните:

 

who

whos

 

% Вы можете получить на экране значение любой переменной, набрав в командной строке имя переменной и нажав вслед за тем ENTER.

 

Выполните:

 

A % ENTER

 

X % ENTER

 

p % ENTER

 

F % ENTER

 

ПОЭЛЕМЕНТНОЕ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ

 

Арифметические операции умножения, деления и возведения в степень имеют своих двойников с поэлементным выполнением. Поясним: пусть

x=[1 2 3 4] и y=[5 6 7 8].

Предположим, что вам хотелось бы перемножить (поделить, возвести в степень) элементы векторов x и y.

Если мы напишем x*y или x/y или x^3, то получим сообщение об ошибке, так как строки нельзя перемножить, разделить друг на друга по правилам матричной алгебры (несоответствие размерностей). Однако для получения желаемого результата в MATLAB есть дубли арифметических операций. Они имеют те же значки, что и основные операции, но с точкой перед знаком операции.

Выполните в командном окне:

x.*y % Результат – вектор, элементы которого равны произведениям соответствующих элементов векторов x и y

x./y % Элементы x будут поделены на соответствующие элементы y

x.^3 % Элементы вектора x будут возведены в 3-ю степень.

 

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

ВЫПОЛНИТЕ:

 

sqrt(-1)

 

log(0)

 

ГЕНЕРАЦИЯ СПЕЦИАЛЬНЫХ МАТРИЦ:

 

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

 

zeros – создание матрицы с нулевыми элементами,

ones - создание матрицы с единичными элементами,

rand – создание матрицы со случайными элементами (равномерно на [0,1] распределенными случайными числами),

eye – создание единичной матрицы

 

Выполните операции:

 

A = zeros(3,2)

AA = zeros(5)

B = ones(1,10)

BB = ones(3)

C=rand(2,5)

CC=rand(7)

E=eye(5)

 

ОПЕРАТОРЫ СЛИЯНИЯ МАТРИЦ

 

Выполните операторы

A=ones(2,3)

V=ones(1,3)

A=[A;V] % матрица A получит дополнительную строку из элементов вектора V

B=rand(2,2)

C=rand(3,3)

G=cat(1,A,C) % Объединение матриц A и C вдоль размерности 1 (по вертикали)

GG=cat(2,A,C) % Объединение матриц вдоль размерности 2 (по горизонтали)

 

ОПЕРАТОРЫ ВЫРЕЗКИ ДЛЯ МАТРИЦ

 

Выполните операторы, наблюдайте за результатами

 

A=[1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20]

B=A(1,:) % Взятие первой строки исходной матрицы

C=A(:,4) % Взятие четвертого столбца исходной матрицы

D=A(3:4,1:2) % Выделение (вырезка) строк 3 – 4, столбцов 1 – 2

G=A(2:3,3:4) % Выделение (вырезка) строк 2 – 3, столбцов 3 – 4

E=A(:) % Создание единого массива (столбца) из элементов матрицы A.

 

МЕТОД ГАУССА

 

В заключение, решите систему 5-и линейных алгебраических уравнений с 5 неизвестными методом Гаусса.

Введите матрицу системы

 

A=rand(5,5) % здесь коэффициенты системы – случайные числа. Введите свои

% конкретные значения

B=rand(5,1) % вектор-столбец – правая часть системы уравнений, которая в

% матричной форме может быть записана как A*X=B, где X –

% столбец неизвестых. Решение системы, как известно,

% X=A^(-1)*B, г де A^(-1) – обратная матрица для матрицы A

 

РЕШЕНИЕ СИСТЕМЫ:

 

X=A\B % Оператор выполняется как inv(A)*B, что и требуется для решения

% системы. Отметим, что в действительности этот оператор

% выполняется путем реализации метода Гаусса для решения исходной

% системы линейных алгебраических уравнений.

 

Таким образом, для того, чтобы решить систему линейных алгебраических уравнений методом Гаусса в MATLAB, достаточно выполнить всего один оператор – оператор деления (справа – налево) правой части системы на матрицу системы уравнений.

 

Программирование в MATLAB

Язык программирования MATLAB является типичным интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т. е. полной программы, отсутствует. Интерпретация означает, что MATLAB не создает исполняемых конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда MATLAB.

 

 





Поделиться с друзьями:


Дата добавления: 2017-03-12; Мы поможем в написании ваших работ!; просмотров: 5579 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лаской почти всегда добьешься больше, чем грубой силой. © Неизвестно
==> читать все изречения...

2390 - | 2261 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.