Как и большинство других языков программирования, MATLAB предоставляет возможность использования математических выражений, но в отличие от многиx из них, эти выражения в MATLAB включают матрицы. Основные составляющие выражения:
• числа
• переменные
• операторы
• функции
Числа
MATLAB использует принятую десятичную систему счисления, с необязательной десятичной точкой и знаками плюс-минус для чисел. Научная нотация использует букву е для определения множителя степени десяти. Мнимые числа используют i или j как суффикс. Некоторые примеры правильных чисел приведены ниже
3 -99 0.0001
9.6397238 1.60210е-20 6.02252е23
li -3.14159j 3e5i
Все числа для хранения используют формат long, определенный стандартом плавающей точки IEEE.
Полезные константы:
pi = 3.14159265...
i = sqrt(-l)
j - то же, что и i
eps - относительная точность вычислений с плавающей запятой 2-52
realmin - наименьшее число с плавающей запятой 2-1022
realmax - наибольшее число с плавающей запятой (2 - ерs)21023
Inf - бесконечность (например, inf=l/0)
NaN - Not-a-number (например, NaN—0/0, Inf-Inf)
Переменные
В MATLAB нет необходимости в определении типа переменных или размерности. Когда MATLAB встречает новое имя переменной, он автоматически создает переменную и выделяет соответствующий объём памяти. Если переменная уже существует, MATLAB изменяет ее состав и если это необходимо выделяет дополнительную память. Например.
num_siudents = 8
создает матрицу 1x1с именем num_sludents и сохраняет значение 8 в её единственном элементе.
Имена переменных состоят из букв, цифр или символов подчеркивания и начинаются с латинской буквы. MATLAB использует только первый 31 символ имени переменной. MATLAB различает заглавные и строчные буквы. Нельзя допускать совпадения имени переменной с именем какой-либо команды.
Чтобы увидеть матрицу, связанную с переменной, следует просто ввести название переменной.
Переменные могут быть числовыми, текстовыми и других типов.
1. Числовые переменные. Это числа, векторы, матрицы и многомерные массивы. В компьютере все числа представлены примерно с 16 десятичными знаками, под каждое вещественное число отводится 8 байтов, под комплексное – 16.
Комплексные числа и функции для работы с ними (набираем команды):
q=1+2*i q=1+2i real(q) imag(q) abs(q) conj(q) s=angle(q) (здесь -p<s<=p).
q=1+2*i; r=3; fi=0:.01:pi; z=q+r*exp(i*fi); plot(z) - это верхняя полуокружность.
2. Текстовые переменные. Они берутся в одиночные кавычки (апострофы), каждый символ занимает 2 байта (формат Unicode). Используются для задания заголовков в числовых выдачах и на графиках, для задания формул и т.д. Можно переводить текстовые переменные в числовые и наоборот. Выполним в командной строке
t='Moscow - столица России'
Строковые значения рассматриваются системой как массивы. В приведенном примере t - это вектор-строка из 23 элементов-символов (никакого завершающего нулевого символа нет).
Строки символов можно объединять в двумерные массивы. Это позволяет хранить набор строковых значений одинаковой длины. Например, после ввода команды
S= ['Isaac Newton '
'Blaise Pascal']
MATLAB создает следующий двумерный массив 2 x 13:
[ 'I' 's' 'a' 'a' 'с' ' ' 'N' 'e' 'w' 't' 'о' 'n' ' '
'В' 'l' 'а' 'i' 's' 'e' ' ' 'P' 'а' 's' 'с' 'a' 'l' ]
В данном примере мы специально добавили к имени Ньютона один пробел, чтобы уравнять число элементов в каждой строке массива. Если этого не сделать, MATLAB выдаст сообщение об ошибке.
Команда S (1,:) в данном примере возвращает строку 'Isaac Newton', команда S(2,:) - строку 'Blaise Pascal'. Вообще, к массивам символов применимо большое число команд из предыдущего раздела. Так, например, доступны блочные операции, команды выделения подмассивов и др. В примере
а = 'Matrix';
b = 'Laboratory';
с = [а(1:3) b(l:3)]
переменной с будет присвоено символьное значение 'MatLab'.
3. Контроль за переменными: команды who и whos (последняя даёт подробную информацию обо всех переменных).
4. Другие типы переменных – ячейки и структуры, а также целочисленные типы данных будут обсуждаться позже.
Операции
Выражения используют обычные арифметические операции и правила старшинства.
Ниже указаны эти операции в возрастающем порядке приоритета. Все операции левоасоциативны.
+ - сложение, вычитание
* / \ умножение, деление, левое деление
^ степень
' комплексно сопряженное транспонирование
() определение порядка вычисления
Функции
MATLAB предоставляет большое количество элементарных математических функций, таких как abs, sqrt, exp, sin. Вычисление квадратного корня или логарифма отрицательного числа не является ошибкой: в этом случае результатом является соответствующее комплексное число. MATLAB также предоставляет и более сложные функции, включая гамма-функцию и функции Бесселя. Большинство из этих функции имеют комплексные аргументы. Чтобы вывести список всех элементарных математических функций, наберите
Help elfun
Для вывода более сложных математических и матричных функций, наберите
Help specfun
Help elmat
соответственно.
Некоторые функции, такие как sqrt и sin, - встроенные. Они являются частью MATLAB, поэтому они очень эффективны, но их вычислительные детали трудно доступны. В то время как другие функции, такие как gamma и sinh, реализованы в М-файлах. Поэтому вы можете легко увидеть их код и, в случае необходимости, даже модифицировать его.
Имена функций не являются зарезервированными, поэтому возможно изменять их значения на новые, например
eps = l.e-6
и далее использовать это значение в последующих вычислениях. Начальное значение может быть восстановлено следующим образом:
Clear eps
Выражения
Ниже приведено несколько примеров выражений с результатами.
rho = (1+sqrt(5))/2
rho =
1.6180
а = abs(3+4i)
a =
z = sqrt(besselk(4/3, rho-i))
z =
0.3730 + 0.3214i
huge = exp(log(realmax))
huge =
1.7977е+308
toobig = pi*huge
toobig =
Inf