Арифметические вычисления

 

Работа в среде MATLAB может осуществляться либо в программном режиме, либо в командном режиме (режиме калькулятора, диалоговом режиме) по правилу «задал вопрос, получил ответ». Это превращает MATLAB в необычайно мощный калькулятор, который способен производить не только обычные для калькулятора вычисления, но и операции с векторами и матрицами, комплексными числами, рядами и полиномами. Можно почти мгновенно задать и вывести графики различных функций: от простой синусоиды до сложной трехмерной фигуры.

Основным элементом командного режима работы с системой является главное или командное окно Command Window . Оно активизируется командой View => Desktop Layout => Command Window Only основного меню MATLAB. Структура командного окна аналогична структуре Windows - приложений (рис. 2).

 

 

Рис. 2

Строка в текстовом поле командного окна, отмеченная символом приглашения >>с мигающим курсором, называется строкой ввода или командной строкой. Она предназначена для ввода с клавиатуры команд, чисел, имен переменных и знаков операций, составляющих выражение. Для того, чтобы система MATLAB выполнила введенную команду или вычислила заданное выражение, следует нажать клавишу <Enter>(Ввод).

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

В результате многократных вычислений (нажатий клавиши <Enter>) в командном окне автоматически производится вертикальная протяжка (scrolling): строки сдвигаются на одну позицию вверх, а внизу появляется строка ввода с символом приглашения >>. Информация, которая покинула видимую часть окна, не исчезает. В MATLAB ранее введенные строки команд представляют собой «историю» и запоминаются в стеке команд (см. разд. 8).

Для просмотра выполненных команд и результатов вычислений, не умещающихся на экране, имеются полосы горизонтальной и вертикальной протяжки. Использование полос протяжки ничем не отличается от других Windows - приложений. Можно также осуществлять протяжку командного окна с помощью клавиш <PageUp>, <PageDown>, <Ctrl+Home>и<Ctrl+End>.

Клавиши <↑> и <↓>, которые в текстовых редакторах служат для перемещения вверх или вниз по экрану, в MATLAB работают иначе. Они используются для возврата в строку ввода ранее выполненных команд с целью их повторного выполнения или редактирования. После первого нажатия клавиши <↑> в строке ввода отобразится последняя введенная команда, при втором нажатии – предпоследняя и т. д. Клавиша <↓> осуществляет прокрутку команд в противоположном направлении.

Иными словами, текстовое поле окна Command Window располагается в двух принципиально разных зонах: зоне просмотра и зоне редактирования. Зона редактирования находится в командной строке, а вся остальная информация видимой части командного окна – в зоне просмотра.

Пока не нажата клавиша <Enter>, вводимое выражение может быть отредактировано или удалено. В зоне просмотра уже ничего нельзя исправить. Если поместить в нее курсор и нажать какую - либо клавишу на клавиатуре, курсор будет автоматически перемещен в строку ввода, расположенную в зоне редактирования. В то же время, с помощью клавиш <←> и <→> можно перемещать курсор в командной строке.

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

Сеанс работы с системой MATLABназывается сессией. Иными словами, сессия – это все то, что отображается в командном окне в процессе работы с системой. Команды сессии автоматически образуют список, который выводится в окне Command History, а значения переменных сохраняются в окне Workspase (рис. 1).

Например, сессия на рис. 2 отображает результаты последовательного ввода четырех команд. Обсудим эти результаты и отметим некоторые особенности вычислений в системеMATLAB:

>> 2+3

ans =

Результату выполненной операции не было присвоено имя, поэтому при выводе он был автоматически обозначен символом ans (ansver – ответ). Под этим именем результат вычислений хранится в памяти компьютера и его можно использовать в последующих вычислениях до тех пор, пока в ходе работы не будет получен новый непоименованный результат. Результат вычислений выводится в строках вывода, не содержащих знака приглашения >>;

>> a=2/3,A=2^3;cos(pi),b=exp(1)

a =

0.6667

ans =

-1

b =

2.7183

В одной командной строке можно ввести несколько команд, разделяя их запятыми либо точками с запятой. Система MATLAB выполняет каждую команду, за которой следует запятая, и отображает результат в отдельных строках. Результат выполнения команды, за которой следует символ <;>, на экран не выводится, но он сохраняется в памяти и может быть использован в последующих вычислениях.

Знаком присваивания является знак =, а не комбинированный знак :=, принятый, например, в языке программирования Pascalили в системе символьной математики Maple.

После ввода этой командной строки вычисляются и сохраняются в памяти значения выражений a=2/3=0,б667, A=23=8, ans=cosp =-1, b=e1=e=2,7183 (e – основание натурального логарифма). Значение переменной A, в отличие от a, ans, b, не выводится на экран из-за символа <;>. При вычислении cosp использовалась системная переменная pi – число p. Число e системной переменной не является, и для его вычисления использована встроенная элементарная функция exp(1). Функции записываются строчными буквами, а их аргументы указываются в круглых скобках. Аргумент встроенной тригонометрической функции cos задан в радианах;

>> disp(A/2+ans)

Команда disp (от слова «дисплей») вычисляет выражение 23/2+cosp и выводит ответ, но не присваивает его переменной ans, как при обычных вычислениях:

>> A/2+ans

ans =

В дальнейшем disp используется для предотвращения вывода лишней строки ans = в наглядных документах;

>> c=.5+3-11+...

22-8.4+7

c =

13.1000

Иногда требуется ввести в окне Command Window команду, которая слишком длинна, чтобы уместиться на одной строке. При приближении к концу строки можно ввести (три последовательные точки), нажать клавишу <Enter>и продолжить набор команды на следующей строке. При этом вы не увидите на новой строке символа приглашения >>.

Сессия на рис.2 содержит только правильные команды и результаты их выполнения. В общем случае сессия является результатом проб и ошибок. Ее текст, наряду с правильными определениями, содержит сообщения и предупреждения об ошибках (см. разд. 8), переопределения функций и переменных, использованную справочную информацию команды help. Если сессия сильно «засорена» лишней информацией, диалог пользователя с системой затрудняется.

Команда очистки экрана clc

>> clc

стирает содержание командного окна MATLAB и размещает символ приглашения >> в левом верхнем углу пустого экрана.

Эта команда, однако, оставляет неизменным содержимое окон Command History и Workspase. Поэтому в «чистом» командном окне можно пользоваться значениями переменных, полученных до ввода команды clc.

Если же появится необходимость отредактировать или повторить ранее выполненную команду, то это легко осуществить с помощью окна Command History. Подробнее работа с оконами Command History и Workspase обсуждается в разделах 8 и 9.

Переменные– это именованные объекты, хранящие какие – либо данные.

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

Имя переменной (ее идентификатор) может содержать до 31 символа и не должно совпадать с именами других переменных, функций, команд и системных переменных MATLAB. Имя переменной должно начинаться с буквы, может содержать цифры и символ подчеркивания. Среда MATLAB чувствительна к регистру букв (переменные a и A не идентичны).

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

Ниже перечислены основные системные переменные MATLAB:

ans – результат вычисления последнего не сохраненного пользователем выражения;

i, j – мнимая единица (), используемая для задания мнимой части комплексных чисел;

Inf (infinity) – обозначение машинной бесконечности;

NaN – сокращение от слов Not-a-Number (не число), принятое для обозначения неопределенного результата (например, 0/0 или Inf/Inf).

pi – число π ( p=3,141592653589793);

eps – погрешность операций над числами с плавающей точкой, т.е интервал между числом 1.0 и следующим ближайшим числом с плавающей точкой равен 2.2204e-16 или 2-52;

realmin – минимальное по модулю вещественное число (2.2251e-308 или 2-1022);

realmax – наибольшее по модулю вещественное число (1.7977e+308 или 21023).

Приоритеты арифметических операций системы MATLAB в порядке убывания следующие:

1. Возведение в степень <^>.

2. Умножение <*> и деление (слева направо </>, справа налево <\>).

3. Сложение <+> и вычитание <–>.

Выполнение операций одинакового приоритета происходит в порядке слева направо. Для изменения порядка выполнения арифметических операторов следует использовать круглые скобки. Кроме арифметических операторов, в MATLAB имеются операторы отношения и логические операторы.

Полный список операторов и справочную информацию по любому из них можно получить в разделе ops справочной системы MATLAB, используя команды helpили doc.

Основу большинства расчетов составляют вычисления значений арифметических выражений. В них в качестве операндов могут выступать константы, переменные или функции. В отличие от большинства алгоритмических языков, в MATLAB допускается использование операндов - массивов (см. разд. 6, 7, 10). В этом случае результатом вычисления выражения также может быть массив.

Выражения, заключенные между двумя апострофами <′ ′>, рассматриваются как строчные и не вычисляются, даже если в них содержатся математические выражения. Чаще всего они применяются для задания параметров функций и их нечисловых значений, вставки текста в графические объекты, а также для описания символьных переменных и выражений. Так, ввод строки '2+3' приводит к результату

>> '2+3'

ans =

2+3

а не 5.

При выводе графиков символы, помещенные между апострофами, определяют цвет линий графика, их тип и тип маркера, которым метятся линии.