Вычисление арифметических выражений
Лабораторная работа 1
Арифметические выражения в Matlab состоят, как и в большинстве языков программирования, из чисел, знаков арифметических операций, знака ^ (возведение в степень), круглых скобок, переменных, и встроенных функций. Десятичная часть числа отделяется точкой. Для вычисления простейшего выражения следует набрать его в командной строке и нажать ‹Enter›. Ответ записывается в специальную переменную ans и результат выводится в командное окно:
>> 1.5+2.9
ans =
.4000
Вид результата зависит от установленного формата, подробнее о форматах вывода написано ниже. После вычисления следующего выражения значение ans изменится. Для сохранения результатов промежуточных вычислений их следует записывать в переменные. При использовании переменных необходимо придерживаться правил:
· имя переменной может состоять из символов латинского алфавита, знака подчёркивания и цифр, но начинается обязательно с символа алфавита;
· прописные и строчные буквы различаются;
· пробел не входит в имя переменной (!!!).
В качестве знака присваивания используется =, например:
>> a=3.25*(0.7-3.3/5.1)+2.3^3
a =
12.3391
Обратите внимание, что результат сразу же выводится в командное окно. Для подавления вывода следует завершить строку с оператором присваивания точкой с запятой. Символ e предназначен для записи чисел в экспоненциальной форме: числа 0.00125 и 1.25e-3 эквивалентны. Комплексные числа вводятся при помощи буквы i:
>>b=5*(2.2+3.9i)+0.8
b =
1.8000 +19.5000i
Matlab обладает большим набором встроенных математических функций. Некоторые из них приведены в табл. 1. При вызове математических функций аргумент заключается в круглые скобки. Полный список всех встроенных элементарных математических функций можно получить, набрав в командной строке help elfun. Команда help отображает в командном окне список разделов справочной системы. Для получения содержимого раздела необходимо указать через пробел его название после help, а для вывода детальной информации о какой-либо функции, следует ввести в строке с help имя функции.
Таблица 1. Основные математические функции
Тригонометрические функции (аргумент задаётся в радианах) | |
sin, cos, tan, cot | Синус, косинус, тангенс и котангенс |
sec, csc | Секанс, косеканс |
Обратные тригонометрические функции (результат вычисляется в радианах) | |
asin, acos, atan, acot | Арксинус, арккосинус, арктангенс и арккотангенс |
asec, acsc | Арксеканс, арккосеканс |
Гиперболические функции | |
sinh, cosh, tanh, coth | Гиперболические синус, косинус, тангенс и котангенс |
sech, csch | Гиперболические секанс и косеканс |
asinh, acosh, atanh, acoth | Гиперболические арксинус, арккосинус, арктангенс и арккотангенс; |
Экспоненциальная функция, логарифмы, степенные функции | |
Exp | Экспоненциальная функция |
Log, log2, log10 | Натуральный логарифм, логарифмы по основанию 2 и 10 |
sqrt | Квадратный корень |
Модуль, знак и функции для работы с комплексными числами | |
Abs, sign | Модуль и знак числа |
conj, imag, real | Комплексно-сопряжённое, мнимая и вещественная часть |
Пусть, например, требуется найти значение выражения при x = 0.2 и y = -3.9:
Если набирать сразу все выражение, то получается достаточно длинная строка. Для переноса на следующую строку любой команды Matlab можно использовать три идущие подряд точки, после нажатия на "Enter" среда Matlab ждет продолжения ввода:
>> x=0.2;
>> y=-3.9;
>> c=sqrt((sin(4/3*pi*x)+exp(0.1*y))/(cos(4/3*pi*x)+exp(0.1*y)))+...
((sin(4/3*pi*x)+exp(0.1*y))/(cos(4/3*pi*x)+exp(0.1*y)))^(1/3)
Проще всего решить поставленную задачу, используя промежуточные переменные:
>> x=0.2;
>> y=-3.9;
>> a=sin(4/3*pi*x)+exp(0.1*y);
>> b=cos(4/3*pi*x)+exp(0.1*y);
>> c=sqrt(a/b)+(a/b)^(1/3)
c =
2.0451
Обратите внимание на несколько важных особенностей. Все операторы присваивания, кроме последнего, завершены точкой с запятой для подавления вывода результата. Необязательно набирать выражение для b, похожее на только что введенное для a. После ввода третьей строки нажмите клавишу ↑. В командной строке появится предыдущее выражение, внесите в него необходимые изменения, а именно, замените sin на cos, и нажмите "Enter". Клавиши "↑" и "↓" служат для перехода по истории команд, т.е. для занесения ранее набранных команд в командную строку, а "←","→", "Home", "End" - для перемещения в пределах командной строки. Передвижение по экрану (только для просмотра команд, а не для редактирования) осуществляется клавишами "PageUp", "PageDown" или вертикальной полосой скроллинга.
Начиная с версии 6.0 в среду Matlab включено окно Command History для быстрого перехода по истории команд. В любой момент можно вывести значение переменной в командное окно, для чего следует набрать имя переменной в командной строке и нажать "Enter", либо вызвать функцию disp:
>> disp(c)
2.0451
Возникающий в процессе вычислений комплексный результат не является ошибкой. Matlab автоматически переходит в область комплексных чисел, продолжая вычисления. Найдите, например, квадратный корень из -1. Более того, допустимы операции деления на ноль, которые приводят к стандартным переменным Inf или -Inf. Результат деления нуля на ноль есть NaN (Not a Number - не число). Переполнение или потеря точности в Matlab при выполнении операций с числами с плавающей точкой не вызывает прекращение вычислений.
Просмотр текущих переменных рабочей среды производится при помощи команды whos. Предположим, что ранее переменным a и b были присвоены значения:
>> a=-1.34;
>> b=2.98+3.86i;
Вызовите команду whos, указав через пробелы имена переменных
>> whos a b
В командное окно выводится таблица, приведённая ниже. В столбике Class указан тип переменной, в Bytes - число байт, выделенных под хранение значения, а Size содержит информацию о размере. После таблицы размещена строка с указанием суммарного объема памяти в байтах.
Name Size Bytes Class
a 1x1 8 double array
b 1x1 16 double array (complex)
Grand total is 2 elements using 24 bytes
Обратите внимание, что числовые переменные в Matlab являются двумерными массивами размера один на один. Представление всех данных в Matlab в виде массивов оказывается очень полезным.
Пользователь имеет возможность управлять видом результата, устанавливая подходящие форматы вывода. Существует два способа задания форматов. Выбор пункта Preferences: в меню File рабочей среды приводит к появлению диалогового окна с одноименным названием. В Matlab 5.3 панель Numeric Format вкладки General содержит переключатели, а в версии 6.x на панели Text display расположены раскрывающиеся списки Numeric Format и Numeric display (при выбранном пункте Command Window в списке левой панели окна). Возможно установить один из следующих форматов:
· short (default) - короткий формат с плавающей точкой с четырьмя цифрами после десятичной точки (используется по умолчанию);
· long - длинный формат с плавающей точкой с четырнадцатью цифрами после десятичной точки;
· short e - экспоненциальный формат с четырьмя цифрами после десятичной точки;
· long e - экспоненциальный формат с пятнадцатью цифрами после десятичной точки;
· short g - наилучшее представление числа либо в формате short, либо в short e (аналогично long g);
· hex - шестнадцатеричное представление числа;
· + - положительные и отрицательные числа отображаются знаками "+" и "-", а нулевые - пробелами;
· bank - формат для вывода денежных сумм с двумя знаками после десятичной точки;
· rat - вещественные числа приближённо представляются отношением двух небольших целых чисел.
Иногда возникает ситуация, когда Matlab не может уложиться в установленный формат при выводе результата. Пусть, например, установлен формат short. При вычислении 1/3333 результат отображается в формате short e, однако, автоматической смены формата для всех последующих вычислений не происходит.
Команда format служит для установки формата из командной строки. К примеру, обращение
>> format short e
аналогично выбору короткого экспоненциального формата в диалоговом окне Preferences. Вне зависимости от установленного формата все вычисления производятся с двойной точностью, следовательно, после смены формата с short на long не требуется повторно находить значения переменных. Достаточно снова вывести их значения в командном окне.
Задания для самостоятельной работы
Занести в некоторую переменную значения выражений при заданных и , отобразить результат в различных форматах и изучить информацию о переменных при помощи команды whos.
Контрольные вопросы
- Особенности и возможности системы Matlab.
- История появления системы, ее достоинства.
- Расширяемость системы.
- Средства системы Matlab для визуализации решения задач.
- Что такое математическое выражение?
- Комплексные числа, функции работы с комплексными числами.
- Понятие константы, системные переменные, символьные константы.
- Понятие переменной, типы переменных, задание переменной значения.
- Правила задания имен переменных.
- Уничтожение определений переменных.
- Понятие оператора и функции, аргументы функции.
- Встроенные и внешние функции, возврат функцией нескольких значений.
- Сообщения об ошибках и предупреждения.
- Что означает "NaN" при возникновении ошибки в ходе вычислений?
- Формат числовых результатов по умолчанию, точность вычисления по умолчанию.
- Форматы представления численных данных.
- Назовите два способа изменить формат представления.
- Как произвести операцию дефрагментации рабочей области, для чего она нужна?
- Как сохранить рабочую область сессии? Приведите примеры различных форматов команды.
- Приоритет выполнения операций в системе.
- Перечислите операторы отношения и соответствующие им функции.
- Операторы отношения при комплексных и символьных значениях операндов.
- Перечислите логические операторы и соответствующие им функции.
- Логические операторы при численных и символьных (строковых) значениях операндов.
- Специальные символы: "."(десятичная точка),".."(родительский каталог), "..."(продолжение) и ";".
- Специальные символы: ",", "%", "!", "=".
- Системные переманные: ans, computer, eps, i (j), inf, NaN.
- Системные переманные: nargin, nargout, pi, realmin, realmax.
- Функции поразрядной обработки.
- Алгебраические и арифметические функции.
- Тригонометрические и обратные им функции.
- Гиперболические и обратные им функции.
- Функции округления и знака.