Основные понятия
Система MatLAB работает в основном с характерными для нее данными и типами данных поэтому введем ряд определений.
Массив – это данные (объекты) одной природы сгруппированные по одному и тому же характерному признаку.
Матрица – массив представленный в виде прямоугольной таблицы, каждый элемент имеет номер (индекс), определяющий однозначно его положение в матрице, в индексировании идет сначала номер строки, а потом номер столбца, где расположен элемент.
Многомерный массив – пространственная матрица имеющая три и более размерностей, каждый элемент также имеет индекс, однозначно определяющий его положение. Грубо говоря многомерный массив – это матрица матриц.
Вектор – одномерная матрицы. Без особых указаний со стороны пользователя это матрица-столбец.
Структура – это набор разнотипных полей. Поле может содержать как массив так и число так и строку. Одно поле содержит данные только одного типа.
Строка – набор (массив) символов символьных таблиц компьютера.
Типы данных
Обобщенный тип double – это общий тип для всех числовых величин. Это тип представления числовой информации в компьютере с использованием плавающей запятой. Для этого представления отводиться 8 байт, в результате десятичные цифры имеют точность в 15 значащих цифр. Наибольшее по модулю число это 1.797693134862316е+308; наименьшее по модуль число – 2.225073858507201е-308. Для простой записи этих чисел системой зарезервированы слова realmax и realmin.
Для понижения точности представления чисел используется тип single. Для представления числа в данном типе необходимо записать в приветствии:
>> x=single(7.7)
x =
7.7000
Данный тип данных использует 4 байта памяти.
Очень много целых типов данных, определенных лишь диапазоном значений. Количество памяти отображено в их названии. Также в их названии отображен и знак.
int8 – тип данных использующийся для представления целых чисел с использованием 8 байт памяти. Тип имеет знак и может принимать значения от -128 до +127 (т.е ).
uint8 – тип аналогичный int8, но не имеющий знаки и принимающий значения от 0 до 255 ( ).
int16
uint16
int32
uint32
При попытке записать в целочисленную ячейку вещественное число система произведет его округление по всем правилам:
>>e=int8(2.2)
e=
2
>>e=int8(2.8)
e=
3
Как отмечалось выше MatLAB работает с массивами и даже любое «одиночное число» с любым типом будет рассматриваться системой кА массив на один элемент:
>>e=[e 2]
e=
2
По умолчанию любая созданная числовая переменная имеет тип double.
Помимо числовых форматов (самых важных) существует и строковый формат представления информации. Тип char отвечает за это. Строковый тип данных это массив символов. При работе со строкой необходимо использовать все правила работы с массивами, но с поправкой на символы. Об этом типе данных пойдет речь в других лекциях.
Помимо всех вышеперечисленных типов данных система работает также и с графической информацией (это часто используется при проектирование и программировании графического пользовательского интерфейса (GUI), и создании специальных систем и программ по обработки графики связанной с физическими явлениями (например обработка интерференционных картин)). Вопросы по работе с графическими файлами будут рассмотрены позднее.
Лекция № 2
Простейшие вычисления. Работа с матрицами и векторами. Многомерные матрицы. Диалоговый режим работы
Самое примитивное использование системы MatLAB – это научный калькулятор. При этом использовании система работает всего лишь на сотой доли его возможностей, но такое использование вполне достаточно для получения хороших результатов в определенной мере.
При таком использование необходимо использовать определенные правила записи математических функций (см. таблицу 2.1).
Таблица 2.1 Синтаксис математических функций и операций. |
|
Синтаксис математики |
Синтаксис программы |
sin(x), cos(x), tg(x), ctg(x), sec(x), csec(x); arcsin(x) и т.д.; sh(x) и т.д.; arcsh(x) и т.д. |
sin(x), cos(x), tan(x), ctan(x), sc(x), csc(x); asin(x) и т.д.; hsin(x) и т.д.; hasin(x) и т.д. |
ln(x), lg(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) |
|
sign(x) |
Выдает знак числа формируя ответ в виде 1 со знаком или нуля в случае х=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 |
isreal(x) |
Проверяет число на его принадлежность к классу вещественных числе, возвращает 1 (истину) если это так, иначе (х – комплексное число) возвращает лож (0) |
При работе с комплексными числами можно использовать соотношение Эйлера, т.е. записав число в экспоненциальной форме можно получить (нажав Enter) это же число но в алгебраической записи. При этом надо помнить что угол указывается в радианах.
>> 5*exp(-j*pi/6)
ans =
4.3301 - 2.5000i
При записи операторов в среде можно использовать специальные функции подавляющие вывод результата выражения (вычисления) сразу же. Этим специальным символом служит точка с запятой т.е. «;». При записи нескольких выражений в одну строчку можно применять помимо точки с запятой и запятую. В случае если необходимо растянуть один оператор на несколько строк (для лучшей наглядность, например) необходимо использовать троеточие «…», записывают троеточие в месте переноса выражения на другую строчку:
>> A=[1 2 8 ...
3 7 0 ...
7 9 5];