Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект.pdf
Скачиваний:
51
Добавлен:
23.07.2020
Размер:
2.68 Mб
Скачать

ВЫЧИСЛЕНИЯ

Особенности ввода команд и данных

При активизации пакета на экране появляется основное окно рабочей среды ML.

Это окно содержит строку заголовка, строку главного меню, панель инструментов

с кнопками для выполнения наиболее используемых операций. Слева расположено окно Current Folder, где можно установить текущую папку. В центре самое главное окно Command Window, где отображаются вводимые пользователем команды и отображаются результаты и сообщения об ошибках. Справа (расположение зависит от версии ML) окно Workspace (рабочее пространство) и окно Command History для просмотра и повторного вызова ранее введенных команд. В пособии « Решение задач в системе Матлаб» описано назначение этих окон.

Команды вводятся в окне Command Window в командной строке после приглашения системы >>. Для выполнения введенной команды надо нажать клавишу <Enter> . Причем, на экране сразу появляется результат вычислений. Для хранения выполненных команд предусмотрен кольцевой буфер. Для просмотра и выбора предыдущих команд используются клавиши управления: и . Все выполненные команды можно видеть и в окне Command History. Любую предыдущую команду можно вызвать для исполнения, дважды щелкнув по ее отображению в этом окне.

В ML строчные и прописные буквы различаются. Это надо учитывать при записи команд и задании имен переменным. Принято обозначать все вектора и матрицы прописными (большими) буквами, функции – строчными (маленькими).

Если команда при наборе не помещается в строку, то в конце строки ставятся три точки (…) без пробелов, затем нажимается <Enter> и дальше набор продолжается с новой строки.

Результат выполнения каждой команды сразу отображается на экране. Если в конце строки (после команды) стоит точка с запятой, то результат не будет выведен на экран. При желании можно вводить несколько команд в одной строке, разделяя их точкой с запятой.

Простейший способ работы в ML – это режим прямых вычислений (режим калькулятора). Команды выполняются сразу после их ввода, а результат выводится сразу после выполнения команды.

Например, вводим команду:

>>х=sin(0.5)

Нажимаем <Enter> Получаем ответ:

х = 0.4794

Вводим команду:

>>3^2-(5+4)/2+6*3

Нажимаем <Enter> и получаем ответ: ans =

22.5000

ML вычисляет выражение, помещает его в специальную переменную ans и выводит полученное значение в отдельной строке.

3

Элементы данных в ML

Основной элемент данных в ML – матрица. Числа и векторы рассматриваются как вырожденные матрицы. Например, число – это матрица размером 1×1. Вектор – это матрица с одним столбцом или с одной строкой.

Все данные в ML интерпретируются как 2-мерные массивы (матрицы). Элементами массива могут быть целые, вещественные, комплексные числа, логические значения и символы.

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

Основные типы данных в MatLab:

 

double

Вещественный, 64 бит

single

вещественный, 32 бит

int8

вещественный, 32 бит

int16

знаковый целочисленный, 16 бит

int32

знаковый целочисленный, 32 бит

int64

знаковый целочисленный, 64 бит

uint8

беззнаковый целочисленный, 8 бит

uint16

беззнаковый целочисленный, 16 бит

uint32

беззнаковый целочисленный, 32 бит

uint64

беззнаковый целочисленный, 64 бит

А также Logical (логический, имеющий значения 0 и 1, означающих true и false), Char (символьный), Cell, Structure.

Все данные в системе являются массивами (и объединяются термином ARRAY). Все числовые типы данных (int8-int32, uint8-uint32, single, double) объединяются термином NUMERIC. Типы данных array и numeric являются виртуальными («кажущимися»), поскольку к ним нельзя отнести какие-либо переменные. Они служат для определения и комплектования некоторых типов данных.

Все числовые типы включают целые со знаком и без знака, а также числа в формате с плавающей точкой двойной точности (double) и одинарной точности (single). Большинство вычислений в системе Матлаб выполняется над вещественными типами double. Этот тип данных установлен по умолчанию. Каждое вещественное число такого типа занимает 8 байт. Комплексное число в этом формате занимает 16 байт. Тип single занимает 4 байта.

Тип double имеет наибольшую точность представления вещественного числа и является универсальным типом.

Однако если необходимо экономить память компьютера, то можно указывать самостоятельно желаемый тип. Например, x=int16(25). Такое данное будет занимать

2 байта, y=int64(25) - 8 байт, z=int8(25) – 1байт.

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

4

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

Максимальное и минимальное значения для вещественного типа можно получить, воспользовавшись функциями:

например, по командам realmax(‘’) и realmin(‘’) , будет выведено

>>realmax('single') ans = 3.4028e+038

>>realmin('single') ans = 1.1755e-038 >>realmin('double') ans = 2.2251e-308

>>realmax('double')

Для целого типа: ans = 1.7977e+308

>>intmax('int8')

ans = 127

>>intmin('int8') ans = -128 7

>>intmin('int64')

ans = -9223372036854775808 >> intmax('int64')

ans = 9223372036854775807

Переменные в ML

В ML, как и в других языках программирования, существует возможность работы с переменными и константами. Константа это элемент данных, который не изменяет своего значения в процессе выполнения программы. В ML существуют только неименованные константы, которые используются в выражениях своими значениями. Например, x=2+3. 2 и 3 – константы. Переменная это элемент данных, который может изменять свое значение в процессе выполнения программы и обладает именем, типом и значением. Любая переменная до использования в формулах должна быть определена. Для этого надо присвоить ей значение. Типы переменных в ML заранее не объявляются. Тип определяется значением, которое присваивается переменной. Целые числа записываются в обычной форме. Вещественные числа могут быть записаны или в естественной форме с десятичной точкой (5.2), или в экспоненциальной, например, 1Е-5. В качестве оператора присваивания используется знак равенства(=):

>> n=5

5

n = 5

>> k=0.5 k = 0.5000

Для обращения к элементам данных используются идентификаторы или имена. Правила составления идентификаторов такие же, как и в ЯВУ. Имена могут содержать любые комбинации цифр, букв латинского алфавита и символ подчеркивания. Первый символ в имени должен быть буквой латинского алфавита. Идентифицируются первые 63 символа. В имени нельзя использовать специальные символы (например, - *, /) и пробелы. Имя переменной должно быть уникальным и не совпадать с именами функций, определенных в системе. Если в качестве имени переменной использовать, например, sin, то такая переменная будет существовать, но использовать по назначению функцию sin уже будет нельзя.

Следует помнить, что в ML строчные и прописные буквы различаются. Это надо учитывать при записи команд и задании имен переменным.

Так, например, имена arg = 1;

Arg = 2;

ARG = 3;

это три разных имени, т.е. три разные переменные со значениями 1, 2 и 3 соответственно (MatLab различает регистр в именах переменных).

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

В ML есть возможность узнать, какие переменные рабочего пространства используются и их характеристики (имя Name, размер Size, количество занимаемой памяти Bytes и тип Class). Для этого используется команда whos. Это позволяет убедиться в том, что все числа представляют собой массив 1х1. Список использованных переменных виден также в окне Workspace среды ML. Если необходимо очистить память рабочего пространства, выделенную под переменные, используется команда clear.

Еще раз. При записи числовых значений целые числа записываются в обычной форме. Вещественные числа могут записываться в естественной форме с фиксированной точкой (2.5) и в экспоненциальной (3.4е-3). При вводе между цифрами числа не допускаются пробелы.

Вид результатов вычислений зависит от установленного формата вывода. Пользователь может задавать различные форматы вывода чисел. По умолчанию установлен формат short (4 цифры после десятичной точки) – краткое представление числа. ML может выводить данные с большей точностью двойной точности (приблизительно 15 знаков после точки – format long).

Существуют встроенные системные переменные, которые можно использовать, не задавая значения. Они при необходимости могут быть переопределены, т.е. им можно присвоить другие значения, но тогда значения, заданные по умолчанию, будут утеряны:

pi – число ( =3.141592653589793);

6