ЛЕКЦИЯ № 11 1) Простейшие вычисления. 3) Многомерные матрицы.

advertisement
ЛЕКЦИЯ № 11
ВОПРОСЫ:
1) Простейшие вычисления.
2) Работа с матрицами и векторами.
3) Многомерные матрицы.
1. Простейшие вычисления
Самое примитивное использование системы MatLAB – это научный
калькулятор. При этом использовании система работает всего лишь на сотой
доли его возможностей, но такое использование вполне достаточно для
получения хороших результатов в определенной мере.
При таком использование необходимо использовать определенные
правила записи математических функций (см. таблицу 2.1).
Таблица 2.1 Синтаксис математических функций и операций.
Синтаксис математики
Синтаксис программы
sin(x), cos(x), tg(x), ctg(x),
sec(x), csec(x); arcsin(x) и т.д.;
sh(x) и т.д.; arcsh(x) и т.д.
ln(x), lg(x), е х , ab
sin(x), cos(x), tan(x), ctan(x),
sc(x), csc(x); asin(x) и т.д.; hsin(x) и
т.д.; hasin(x) и т.д.
log(x), log10(x), exp(x), a^b
+-*/()
+-*/()
Использование MatLAB в качестве калькулятора при использование
вещественных чисел достаточно просто и его освоение не выходит за
границы знания синтаксиса среды.
Мы рассмотрим в данной части лекции лишь пару специальных
математических операций:
– Использование деления слева на право. Это деление отличается
записью наклонной черты. Привычное нам деление записывается
«/», а это деление записывается «\». Поясним на примере
вычисления:
>> 8\2
ans =
0.2500
>> 8/2
ans =
4
Т.е. В первом случае как рас и использовано деление о котором
идет речь, записанное выражение эквивалентно нашим обычным
«двум восьмым», т.е. четверти, что и показало вычисление.
Подобная операция используется при работе со СЛАУ.
Еще мы рассмотрим основные функции касающиеся работы с числами и
выражениями:
Таблица 2.2 Числовые функции.
Функция и ее
Описание
синтаксис
Формирует все последующие выдачи ответов и
format short
чисел в сокращенном формате
Формирует выдачу последующих результатов в
format rat
виде приближенного значения как дробь или
совокупность дробей
Формирует выдачу последующих результатов с
format long
показанием всех цифр ответа
sqrt(x)
Вычисляет корень квадратный
pow2(x)
Возводит двойку в степень х
pi
Выдает число пи
Округляет число до целого по всем правилам
round(x)
округления
fix(x)
Отсекает дробную часть без округления
floor(x)
Округляет до меньшего целого
ceil(x)
Округляет до большого целого
mod(x,y)
rem(x,y)
Выдает знак числа формируя ответ в виде 1 со
sign(x)
знаком или нуля в случае х=0
factor(x)
Раскладывает на простые сомножители
isprime(x)
Выдает истину (1) если х простое число
primes(x)
Формирует ряд простых чисел до числа х
Представляет число х в виде дроби или
rat(x)
совокупности дробей
factorial(x)
Вычисляет факториал числа х
nchosek(n,m)
Вычисляет число сочетаний m из n
Вычисляет модуль числа х (в том числе и
abs(x)
комплексных)
inf
Эквивалент бесконечности
NaN
Неопределенность вида 0/0 или ∞/∞
Вообще работать с обычным вещественным переменным в системе
довольно просто поэтому рассмотренных нами функций будет вполне
достаточно.
Наибольший интерес нас будет интересовать использование
комплексного переменного и работы с комплексными числами. Приведем
синтаксис записи комплексного числа:
8+i*7
-9-j*1
Как видите программа может воспринимать (точнее в системе
зарезервировано) мнимую единицу как j или i. Все (почти все)
вышеперечисленные функции вещественного исчисления могут работать и с
комплексными числами.
Для начала работы мы должны рассмотреть наиболее часто
применяемые функции:
Таблица 2.3 Функции комплексного переменного.
Функция и ее
Описание
синтаксис
abs(x)
Вычисляет модуль числа х
conj(x)
Возвращает число комплексно-сопряженное х
imag(x)
Выдает мнимую часть числа
real(x)
Выдает действительную часть числа
Возвращает аргумент (в радианах) числа, но надо
angle(x)
следить за квадрантом куда попадает число, т.к.
среда использует arctg
Проверяет число на его принадлежность к классу
вещественных числе, возвращает 1 (истину) если
isreal(x)
это так, иначе (х – комплексное число) возвращает
лож (0)
При работе с комплексными числами можно использовать соотношение
Эйлера, т.е. записав число в экспоненциальной форме можно получить
(нажав Enter) это же число но в алгебраической записи. При этом надо
помнить что угол указывается в радианах.
>> 5*exp(-j*pi/6)
ans =
4.3301 - 2.5000i
При записи операторов в среде можно использовать специальные
функции подавляющие вывод результата выражения (вычисления) сразу же.
Этим специальным символом служит точка с запятой т.е. «;». При записи
нескольких выражений в одну строчку можно применять помимо точки с
запятой и запятую. В случае если необходимо растянуть один оператор на
несколько строк (для лучшей наглядность, например) необходимо
использовать троеточие «…», записывают троеточие в месте переноса
выражения на другую строчку:
>> A=[1 2 8 ...
3 7 0 ...
7 9 5];
2. Матрицы и вектора
Понятие матрицы и вектора было дано в первой лекции и поэтому мы
перейдем сразу к изучению основных функций, которые понадобятся, для
работы (см. таблицу № 2.4), но перед этим введем способ задания матрицы
(вектора) и способ обращения к его элементам.
Ввод матрицы осуществляется использованием метода так называемого
объединения элементов. Это объединение записывается так:
>> A=[1 1 1 2];
Здесь мы сформировали вектор (или матрицу столбец, причем для
системы не важна ее пространственная ориентация, т.е. что размерность 1хn,
что nx1, все едино). Элементы при таком формировании разделяются
пробелами или запятыми. Для формирования матрицы, производят
построчную запись, отделяя при этом строки друг от друга точкой с запятой:
>> A=[1 2 8; 3 7 0; 7 9 5];
При этом можно производить и составления матрицы путем
объединения матриц или векторов между собой (здесь вектора A1 A2 были
определены заранее):
>> Q=[A1;A2];
При этом вектор A1 будет формировать первую строку матрицы, а вектор A2
вторую.
Таблица 2.4 Функции матричных действий
Функция и ее
Описание
синтаксис
zeros(m, n)
Возвращает нулевую матрицу (состоящую из
одних нулей) размерности mхn.
ones(m, n)
Возвращает матрицу состоящую из одних единиц
размерности mхn.
eye(m, n)
Создает единичную матрицу размерности mхn.
rand(m, n)
Возвращает матрицу случайных чисел равномерно
распределенных в диапазоне от 0 до 1, матрица
имеет размерность mхn.
randn(m, n)
Возвращает матрицу размерности mхn, состоящих
из случайных чисел в диапазоне от 0 до 1 и
имеющих гаусовское распределение (имеющих
нормальный закон распределения).
hadamard(n)
Возвращает матрицу Адамара размерности nхn.
hild(n)
Возвращает матрицу Гильберта размерности nхn.
invhild(n)
Возвращает
обратную
матрицу
Гильберта
размерности nхn.
reshape(A, n, m)
Функция образует матрицу размерности nхm
путем выборки элементов заданной матрицы А по
столбцам и последующему распределению этих
элементов по m столбцам каждый из которых
содержит n элементов, при этом матрица А должна
иметь размерность nхm.
tril(A)
Выбирает нижнюю треугольную матрицу из
матрицы А
triu(A)
diag(A, n)
’ (апостроф)
+-*/\^
inv(A)
det(A)
cross(A, B)
.* ./ .\ .^
lu(A)
size(A)
sum(A)
mean(A)
Выбирает верхнюю треугольную матрицу из
матрицы А
Функция создает диагональную матрицу из
вектора А, при этом второй параметр
необязателен. Если второй параметр присутствует,
то создается матрица в которой вектор А
помещается в другую диагональ, при этом если
n>0, то вектор помещается выше главной
диагонали, если n <0 то ниже, если n=0 то на
главную диагональ.
Если А матрица, то функция выдает вектор
сформированный из элементов главной ее
диагонали, если второй параметр отсутствует или
равен нулю. Если второй параметр присутствует,
то функция выдает другую диагональ, в
соответствие с вторым параметром (см.
предыдущий абзац).
Оператор производит транспонирование матрицы
Математические
действия
над
матрицами.
Применимы как к выражению вида «матрицаскаляр»,
так
и
«матрица-матрица»
(за
исключением возведения в степень, он применима
только к выражению «матрица-скаляр»). Во всех
операциях необходимо следить за размерностями
матриц.
Возвращает обратную матрицу по отношению к
матрице А
Подсчет определителя (детерминанта) матрицы
Векторное произведение векторов
Поэлементные операции. При применении этих
операций матрицы должны иметь одинаковые
размерности, или же быть скалярами (числом). Пи
этом происходит сопоставление элементов одной
матрицы
элементам
другой
матрицы
и
выполняется соответствующая операция.
Производит LU-разложение матрицы А и выдает
матрицы в следующем порядке [L U P] (подобнае
запись обязательна), при этом выполняется
следующее соотношение P*A=L*U.
Возвращает масим сосотоящий из числа сторок
(первый элемент) и числа столбцов (второй
элемент).
Возвращает сумму всех элементов по столбцу
Возвращает среднее значение столбца матрицы
Возвращает среднеквадротическое отклонение
столбца матрицы
min(A) max(A)
Возвращает минимум и максимум соответственно,
по столбцу матрици
sort(A)
Сортирует столбец матрицы по возрастанию
prod(A)
Вычисляет произведение всех элементов столбцов
При обращении к элементу марици делают запись вида A(1,8), при этом
произошло обращение к элементу первой сторки восьмого столбца. Таким
путем можно не только считывать значение жлемента но и менять его
значение. Если необходимо произвести обращение не к одному элементу а к
нескольким или точнее выделить из общей матрици подматрицу то
поступают так A(1:5,6:8), при этом поизошло выделение подматрици начиная
с 1 сторки и кончая 5 и выделили столбци с6 по 8. если необходимо выделить
весь столбец (строку), то вмето указания конкретных номеров можно просто
поставить пустое двоеточие (A(:,6:8)).
Если требуется сформировать вектор, элементу которого расположены в
арифметической прогрессии то проще всего это сделать так:
x=xn:h:xk
xn – начальное значение;
xk – конечное значение;
h – шаг изменения.
Таким образом хорошо задавать, нарример время изменения сигнала или
создавать массив координаты.
std(A)
3. Многомерные матрицы
Многомерная матрица – матрица имеющая размерность большую двух.
Если обучную матрицу мы представляли как двумерное пространство (если
вектор, то прямая), то многомерная матрица представляет из себя n-мерное
пространство. При индексации таких массивов используют такуюже
технологию, но с учетом размерности, т.е. количество индексов должно
совпадать с количеством размерностей (измерений).
Рис. 2.1 Трехмерная матрица
Для илустрации этого предположим, что имеется прибор, который
формирует каждый день новую матрицу содержащую в себе набор значений
нескольких физических величин, разбросанных во времени. К концу месяца,
аппарат будет вынужден хранить 30 матриц, которые будут занимать
внушительный объем памяти (включая информацию о параемтрах, датах и
т.п., т.е. «лишную информацию», которую можно убрать при архивации). По
затратам пямяти, удобнее свести эти 30 матриц в одну (см. рис. 2.1), т.е.
получить трехмерную матрицу физических величин смеренных за один
месяц. При этом наша матрица будет иметь следующую структуру: время
будет содержаться в плоскостях параллельных плоскости ху и располагаться
в столбцах; физические величины образуют тамже строки; значения величин
образуют тамже ячейки; матричи содержащие дни располагаются в
плоскости zx; причем в начало координат помещена матрица смеренная в
первый день месяца.
При нумерации все последующие измерения указываются последнимя,
т.е. третье измерение указывается как третий индекс, четвертое как
четвертый и т.д.
При формировании таких массивов, необходимо помнить, что они
образуются не простым набором элементов, а создаются из матриц
размерности на единицу меньшей, чем образующийся массив. При этом
используется функция cat(n, A1,A2,…,An), где n – размерность вдоль которой
происходит объединение массивов A1 … An.
Для многомерных массивов применимы все изученные функции, но с
поправкой включения размерности новых размерностей, т.е. число входных
парамертов увеличивается до количества размерностей массива.
Download