Система MATLAB создана таким образом, что любые, даже весьма сложные вычисления можно выполнять в режиме прямых вычислений (в режиме калькулятора), не прибегая к составлению программы. В этом режиме MATLAB способен производить не только обычные для калькулятора вычисления (например, выполнять арифметические операции и вычислять элементарные функции), но и операции с векторами и матрицами, комплексными числами, рядами и полиномами. Можно, практически, мгновенно задать и вывести графики различных функций – от простой синусоиды до сложной трехмерной фигуры.
Работа с системой MATLAB в режиме прямых вычислений носит диалоговый характер. Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши <Enter>, после чего получает немедленный ответ. Математические выражения составляют основу всех математических программных систем и пакетов и строятся с помощью чисел, констант, переменных, операторов и функций в сочетании с различными спецзнаками.
Результаты выполнения математических выражений в системе MATLAB:
Пример 1:
>> a=2
a =
2
>>b=3;
>> c = a+b
c =
5 % Результат выполнения математического выражения 2+3
При вычислении математического выражения используем массив значений переменной t. Можно отметить, что в рабочем пространстве (Workspace) результат вычисления так же представлен массивом значений.
Пример 2:
>> t = [0 1 2]
t =
0 1 2
>> 0.2+exp(2*t)/3
ans =
Columns 1 through 2
0.5333 2.6630
Column 3
18.3994 %Результат выполнения математического выражения 0.2+exp(2*t)/3
В рабочем пространстве (Workspace) можно получить информацию об используемых переменных: имя, значение, размер, класс, минимальные и максимальные значения в массиве значений и некоторую другую.
Пример 3:
>>y = 2:5
y =
2 3 4 5
>>sqrt(y.^2)/5
ans =
Columns 1 through 2
0.4000 0.6000
Columns 3 through 4
0.8000 1.000
>>cos(pi/2)
ans =
6.1232e-17 %Результат выполнения математического выражения cos(pi/2)
Число – простейший объект MATLAB, представляющий количественные данные. Ввод чисел с клавиатуры производится по общим правилам, принятым для языков программирования высокого уровня. При вводе целая часть числа отделяется от дробной с помощью точки. Так, если ввести в командном окне MATLAB строку
>> 2.17069341e‐17
то после нажатия клавиши <Enter> в этом окне появится следующая запись
ans = 2.1607e‐17
Результат выводится по укороченному формату чисел (Short), применяемому системой по умолчанию.
При решении многих инженерных и научных задач приходится пользоваться элементарными математическими функциями, аргументы которых являются комплексными числами. В этом случае и результаты вычислений нередко выражаются в комплексном виде. Синтаксис комплексного числа записывается так: z = Re(z)+i*Im(z) или в тригонометрической форме z = r*(cosϕ+i*sinϕ), где Re(z), Im(z) – соответственно действительная и мнимая части числа; r и ϕ – модуль и фаза (значения аргумента ϕ в радианах от -π до +π).
Функции real(z) и imag(z) возвращают соответственно действительную – Re(z) и мнимую – Im(z) части комплексного числа z. Для получения модуля r и фазы ϕ комплексного числа используются функции abs(z) и angle(z). Функция conj(z) определяет число, комплексно сопряженное по отношению к исходному комплексному числу z. Ниже даны простейшие примеры работы с комплексными числами.
>> i
ans =
0.0000+1.0000i
>> z=2+3i
z =
2.0000+3.0000i
>>real(z)
ans = 2
>>abs(z)
ans = 3.6056
В арифметических выражениях языка MATLAB применяются следующие знаки операций:
+ сложение;
- вычитание;
* умножение;
/ деление слева направо;
\ деление справа налево;
^ возведение в степень.
Использование системы в режиме калькулятора может происходить путем простой записи в командную строку последовательности арифметических действий с числами, например:
>> 6.25*3.42^2 ‐ 12.6/3.14
ans = 69.0898
В различных форматах при повторении тех же действий получим следующие результаты:
format short - 69.0898
format short e - 6.9090e+001
format long - 69.08976114649681
format long e - 6.908976114649681e+001
format bank - 69.09
Если запись оператора не заканчивается символом «;» (точка с запятой), то результат действия этого оператора сразу же выводится в командное окно. Если оператор заканчивается знаком «;», то результат не отображается в командном окне, т.е. знак «;» подавляет печать результата вычислений. Если оператор не содержит знака присваивания «=», то MATLAB присваивает специальную системную переменную с именем ans (answer – ответ) при выводе результатов вычислений на экран. Полученное значение можно использовать в последующих вычислениях под именем ans, однако, необходимо помнить, что значение системной переменной ans изменяется после действия очередного оператора без знака присваивания.
Заметим, что численный результат можно выводить без имени ans (или имени какой-либо другой переменной), если воспользоваться функцией disp (от слова «дисплей»), которая позволяет выводить в командное окно результаты вычислений или некоторый текст. Вывод результата вычисления арифметического выражения, рассмотренного в предыдущем примере, теперь можно осуществить так:
>> disp(6.25*3.42^2 ‐ 12.6/3.14)
69.0898
Константа – это предварительно определенное числовое (или символьное) значение, представленное именем. В MATLAB существует разновидность констант, которые называются системными переменными. Они снабжены именем и зарезервированы системой, так как задаются при ее загрузке. Основные системные переменные, применяемые в MATLAB, указаны ниже:
i или j − мнимая единица (корень квадратный из -1);
pi − число «пи»: 3.1415926…;
eps − погрешность для операций над числами с плавающей точкой;
realmin − наименьшее число с плавающей точкой;
realmax − наибольшее число с плавающей точкой;
inf − значение машинной бесконечности;
ans − переменная, хранящая результат последней операции;
NaN − указание на не числовой характер данных (Not-a-Number).
Ниже даны некоторые примеры на использование системных переменных:
>> realmin >> eps
ans = 2.2251e-308 ans = 2.2204e-16
>> 1/0 >> 0/0
ans = Inf ans = NaN
Символьные константы – это цепочка символов, заключенных в апострофы, например:
'Hello my friend'
Если в апострофы помещено арифметическое выражение, то оно не вычисляется и рассматривается как цепочка символов. Однако в MATLAB для подобных случаев предусмотрены специальные функции преобразования, с помощью которых символьные выражения могут быть преобразованы в вычисляемые.
Текстовые комментарии. Поскольку MATLAB используется для достаточно сложных вычислений, то важное значение имеет наглядность их описания. Она достигается использованием текстовых комментариев, которые вводятся с помощью символа %. Этот символ является указателем того, что следующий за ним текст в данной строке системой игнорируется. В текстовых комментариях могут использоваться любые символы, в том числе буквы русского алфавита. Комментарии предназначены исключительно для пользователя и чаще всего используются в текстах m-файлов для описания тех или иных операций, поясняющих работу программы, например: % Ниже представлено вычисление экспоненциальной функции
Переменные – это объекты MATLAB, наделенные именем. Они способны хранить некоторые, обычно разные по значению данные. В зависимости от этих данных переменные могут быть числовыми или символьными, векторными или матричными. Задание определенных значений переменных выполняется через операцию присваивания. Оператор присваивания имеет вид:
<имя переменной> = <выражение>[;]
Здесь и далее при записи синтаксиса оператора выражение в квадратных скобках обозначает необязательный элемент конструкции оператора. Типы переменных заранее не декларируются. Они определяются выражением, значение которого присваивается переменной. Если это выражение вектор или матрица, то переменная будет векторной или матричной. Имя переменной (ее идентификатор) это любая последовательность латинских букв, цифр и символа подчеркивания «_», начинающаяся с буквы (напр., А, Х1, balka, Alpfa_2 и т. д.). Операторы состоят из специальных символов, имен функций и переменных, а также числовых констант и могут оканчиваться запятой или точкой с запятой, которые управляют выводом результата на экран.
При сложном виде оператора для его ввода может быть недостаточно одной строки. Чаще всего это происходит тогда, когда математическое выражение длинное и все его символы не помещаются в видимой области окна. Тогда часть выражения с целью удобства и наглядности записи оператора можно перенести на новую строку с помощью многоточия из трех точек), например:
s = 1 ‐ 1/2 + 1/3 ‐ 1/4 + 1/5 ‐ 1/6 + 1/7 ‐ 1/8 + ... 1/9 ‐ 1/10 + 1/11 ‐ 1/12 + 1/13 ‐ 1/14 + 1/15;
Ниже приведено задание переменных и их уничтожение в рабочем пространстве с помощью функции clear:
>> a = pi/2; b = sin(a)
b = 1
>> clear b, c = a+2, a = pi^2, b
c = 3.5708
a = 9.8696
Undefined function or variable 'b'.
>>clear
>>a
Undefined function or variable 'a'.
>>c
Undefined function or variable 'c'.
Во втором примере выборочно стерта переменная b по команде clear b, а переменной a присвоено новое значение. После уничтожения переменной b она становится неопределенной, поэтому при обращении к ней система выдает сообщение об ошибке. По команде clear без параметров стерты все остальные переменные (a и c).
Общая форма вызова функции MATLAB имеет следующий вид:
<имя переменной> = <имя функции>(<список входных величин>)
В языке MATLAB предусмотрены встроенные элементарные функции, включающие тригонометрические, гиперболические, экспоненциальные и логарифмические функции, а также функции для работы с комплексными числами и для округления чисел различными способами.
Тригонометрические и гиперболические функции:
sin(X), cos(X) - синус, косинус числа X;
tan(X), cot(X) - тангенс, котангенс;
sec(X), csc(X) - секанс, косеканс;
asin(X), acos(X) - арксинус, арккосинус;
atan(X), acot(X) - арктангенс, арккотангенс;
asec(X), acsc(X) - арксеканс, арккосеканс;
sinh(X), cosh(X) - гиперболические синус и косинус;
tanh(X), coth(X) - гиперболические тангенс и котангенс;
asinh(X), acosh(X) - гиперболические арксинус и арккосинус;
atanh(X), acoth(X) - гиперболические арктангенс и арккотангенс.
Замечание: Аргументы тригонометрических функций должны быть выражены в радианах. Обратные тригонометрические функции возвращают результат также в радианах.
Экспоненциальная функция, логарифмы, степенные функции:
exp(X) - экспонента числа X;
log(X) - натуральный логарифм;
log10(X) - десятичный логарифм;
log2(X) - логарифм по основанию 2;
pow2(X) - возведение числа 2 в степень X;
sqrt(X) - квадратный корень из числа X.
Округление и остаток от деления:
fix(X) - округление до ближайшего целого в сторону нуля;
floor(X), ceil(X) - округление до ближайшего целого в сторону -∞, +∞;
round(X) - округление до ближайшего целого;
mod(X) - остаток от целочисленного деления (со знаком);
rem(X, Y) - вычисление остатка от целочисленного деления X на Y;
Ниже приведены примеры на использование этих функций в MATLAB.
>>y=fix(3.2)
y =
3
>>mod(5,2)
ans =
1
>>ceil(1.4)
ans =
2
>>sqrt(3)
ans =
1.7321e+00
Кроме элементарных функций в MATLAB имеются встроенные специальные математические функции. Ниже приведен перечень и краткое описание некоторых из этих функций. Правила вызова и использования функций можно найти в их описаниях, которые выводятся на экран, если набрать команду help <name>, где name – имя функции или обратившись к интерактивной справочной системе MATLAB.
Функции преобразования координат:
cart2sph - преобразование декартовых координат в сферические;
cart2pol - преобразование декартовых координат в полярные;
pol2cart - преобразование полярных координат в декартовые;
sph2cart - преобразование сферических координат в декартовые.
Функции Бесселя:
besselj - функция Бесселя первого рода;
bessely - функция Бесселя второго рода;
Бета-функции:
beta - бета-функция;
betainc - неполная бета-функция;
betaln - логарифм бета-функции.
Гамма-функции:
gamma - гамма-функция;
gammainc - неполная гамма-функция;
gammaln - логарифм гамма-функции.
Эллиптические функции и интегралы:
ellipj - эллиптические функции Якоби;
ellipke - полный эллиптический интеграл;
expint - функция экспоненциального интеграла.
Функции ошибок:
erf - функция ошибок;
erfc - дополнительная функция ошибок;
erfinv - обратная функция ошибок.
Другие функции:
gcd - наибольший общий делитель;
lcm - наименьшее общее кратное;
legendre - обобщенная функция Лежандра;
rat - представление числа в виде рациональной дроби;
rats - представление чисел в виде рациональной дроби.
Для проведения вычислений с такими объектами как векторы, матрицы (или тензоры) необходим способ их хранения в компьютере. Для этой цели служат массивы, в виде которых представляются все данные MATLAB. В одномерных массивах хранятся векторы (в виде строк или столбцов), в двумерных – матрицы, в многомерных – тензоры. Массив – упорядоченная, пронумерованная совокупность однородных данных, снабженная именем. Массивы различаются числом измерений (или размерности): одномерные, двумерные, многомерные. Доступ к элементам массива осуществляется при помощи индекса (например, A(k, i), где k, i – индексы двумерного массива А). Нумерация элементов массива в MATLAB всегда начинается с единицы, поэтому индексы не могут быть отрицательными или равными нулю.
MATLAB – система, специально предназначенная для выполнения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию считает, что каждая переменная это вектор или матрица. Например, при задании X = 1 система полагает, что X есть вектор, состоящий из одного элемента, значение которого = 1. Для задания вектора из нескольких элементов необходимо их значения перечислить в квадратных скобках, разделяя элементы пробелами или запятыми. Например:
>> X = [1 2 3] >> X = [1, 2, 3]
X = X =
1 2 3 1 2 3
В данном примере рассмотрен ввод вектора-строки X, содержащего 3 элемента. Причем представлены два варианта ввода вектора X. После нажатия клавиши <Enter> результаты выводятся на экран дисплея. Вектор-столбец вводится аналогично вектору-строке, но значения элементов в перечне отделяются знаком «;» (точка с запятой). Например: