Приоритет элементарных операций в ML




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

При активизации пакета на экране появляется основное окно рабочей среды 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 и выводит полученное значение в отдельной строке.

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

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

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

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

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

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

Тип double имеет наибольшую точность представления вещественного числа и является универсальным типом. Однако если необходимо экономить память компьютера, то можно указывать самостоятельно желаемый тип. Например, x=int16(25). Такое данное будет занимать 2 байта, y=int64(25) - 8 байт, z=int8(25) – 1байт.

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

например, по командам 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 =

>> intmin('int8')

ans =

-128

>> intmin('int64')

ans =

-9223372036854775808

>> intmax('int64')

ans =

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

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

>> n=5

n =

>> 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. Если необходимо очистить память рабочего пространства, выделенную под переменные, используется команда clear.

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

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

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

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

· ans – результат последней команды, если в ней нет операции присваивания. Например, если набрали команду 41/75 и не определили, какой переменой присвоить результат, на экране отобразится ans = 0.5467;

· nan – для обозначения неопределённости результата;

Все эти переменные можно использовать в математических выражениях.

Выражения

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

Операции

С числовыми данными в MLможно выполнять обычные арифметические операции и вычислять значения функций.

Простейшие арифметические операции (АО)

На текущий момент не учитываем матричные операции.

К арифметическим операциям в ML относятся: cложение (+), вычитание (-), умножение (*), деление (/), возведение в степень(^ ) (это не все операции).

Приоритеты АО:

· возведение в степень

· умножение, деление;

· сложение, вычитание.

Все арифметические операции являются “матричными” и осуществляются по правилам линейной алгебры.

Вычислить:

>> 60/20+3^2*10

ans =

Операции отношения

К операциям отношения в ML относятся: равно (= =),не равно (~ =),меньше(<),меньше или равно (<=), больше (>), больше или равно (>=).

Операции отношения используются для сравнения двух операндов (пока рассматриваем только числа). Результатом операции отношения может быть соответственно число 1 - «истина » или 0 - «ложь».

>>x=1;

>> y=8;

>> x>y

ans =

Логические операции

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

логическое И(&), логическое ИЛИ (|), логическое НЕ (~).

Как и в операциях отношения, результатом логических операций являются значения 0 (ложь) или 1 (истина).

Вместо логических операций можно пользоваться логическими операторами (функциями) and, or, not соответственно. Логические операторы определены над матрицами одинаковой размерности и выполняются над каждым из элементов.

Используя логические операции И, ИЛИ, НЕ, можно создавать разнообразные составные условия. Например, можно сделать проверку, что переменная x попадает в диапазон от - 5 до 5, но не принадлежит диапазону от 0 до 1.

>> x=1;

>> x >= -5 & x <= 5 & ( x < 0 | x > 1)

ans =

0

>>x = -3;

>> x >= -5 & x <= 5 & (x < 0 | x > 1)

ans =

1

В составном условии использованы круглые скобки. Дело в том, что приоритет операции И выше приоритета операции ИЛИ, и если бы не было круглых скобок, то порядок действий в выражении был бы другой. Выражение выглядело бы так: x >= -5 и x <= 5 и x < 0 или x > 1. Сначала выполнится операция И, затем ИЛИ. Очевидно, что получился бы другой результат.

Круглые скобки в выражении используются для изменения порядка выполнения операций.

Приоритет элементарных операций в ML

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

1) логическая операция НЕ (~);

2) возведение в степень(^);

3) унарный плюс (+), унарный минус (-);

4) умножение и деление(*, /);

5) сложение и вычитание (+, -);

6) операции отношения (<, >, <=, >=, ==, ~=);

7) логическая операция И (&);

8) логическая операция ИЛИ (|).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: