Основные объекты системы MatLab
Математические выражения в MatLab стоятся, как и в большинстве языков программирования, из числовых констант, переменных, стандартных и нестандартных функций, соединенных знаками арифметических операций, например +,-,*,/,^, и круглых скобок. Кроме того, как было показано ранее, вид результата зависит от установленного формата.
Число – простейший объект языка MatLab,представляющий числовые данные. Числа могут быть представлены в целом, дробном, с фиксированной и плавающей точкой, а также в экспоненциальном виде. Например,
E-7, 0.89e12.
Числа могут быть как действительными, так и комплексными.Комплексные числа содержат как действительные, так и комплексные чисти. В MatLabмнимая часть имеет множительiилиj,означающий корень квадратный из-1.Например,
3i, 5j, -5.1 +i8, 005e-5- j0.006.
Все операции над числами в MatLabвыполняются в формате с двойной точностью. Однако, как нам уже известно, MatLabвыдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Поэтому при работе с числовыми данными можно задавать различные форматы представления чисел.
Числовая константа – это предварительно определенное число (числовое значение). Числа (например, 1, -5, 3.97) являются безымянными числовыми константами.
Системные константы (табл. 3.1-3) – это такие константы, значения которых задаются системой при загрузке. Однако по мере необходимости эти константы могут переопределяться.
Таблица 2.3.1-3 Таблица 3.5.3-3
Константа | Назначение |
i или j | Мнимая единица |
pi | Число π=3.1415926… |
eps | Погрешность вычислений над числами с плавающей точкой (по умолчанию 2-52) |
realmin | Наименьшее число с плавающей точкой (по умолчанию 2-1022) |
realmax | Наибольшее число с плавающей точкой (по умолчанию 21022) |
inf | Значение машинной бесконечности |
NaN | Указание на нечисловой характер данных (Not-a-Number) |
Символьная константа – это последовательность символов, заключенных в одиночные апострофы. Например:
'Кафедра ВМиП' '88+0' |
Комментарии в MatLab определяются с помощью символа %. Например,
% Это комментарий |
Переменные – это имеющие имена объекты, способные хранить некоторые, разные по значению, данные. В зависимости от этих данных, переменные могут быть числовыми или символьными, векторными или матричными. При использовании переменных необходимо придерживаться правил:
· имя переменной (ее идентификатор) может состоять из символов латинского алфавита, знака подчёркивания и цифр, но начинаться обязательно с символа алфавита;
· прописные и строчные буквы различаются;
· пробел не входит в имя переменной.
Для задания переменным определенных значений используется операция присваивания, обозначаемая знаком равенства =.
|
>> a=3.25*(0.7-3.3/5.1)+2.3^3 a = 12.3391 >> b=5*(2.2+3.9i)+0.8 b = 11.8000 +19.5000i >> |
Простейшие арифметические операции системы приведены в табл. 3.1-4.
Таблица 3.1-4
Функция | Название | Операция | Синта-сис |
plus | Плюс | + | M1+M2 |
uplus | Унарный плюс | + | +M |
minus | Минус | - | М1-M2 |
uminus | Унарный минус | - | -М |
mtimes | Матричное умножение | * | M1*M2 |
times | Поэлементное умножение массивов | .* | A1.*A2 |
mpower | Возведение матрицы в степень | ^ | М^х |
power | Поэлементное возведение массива в степень | .^ | A.^x |
mldivide | Обратное (справа налево) деление матриц | \ | M1\M2 |
mrdivide | Деление матриц слева направо | / | M1/M2 |
ldivide | Поэлементное деление массивов справа налево | .\ | A1.\A2 |
rdivide | Поэлементное деление массивов слево направо | ./ | A1./A2 |
Необходимо обратить внимание на то, что каждая операция имеет аналогичную по назначению функцию. Например, операции матричного умножения * соответствует функция mtimes(Ml,M2). Примеры применения арифметических операций уже не раз приводились, так что ограничимся несколькими дополнительными примерами.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>>А=[1 2 3]; >>В=[4 5 6]; >>В-А ans=
|
Соответствие функций операторам и командам в системе MatLab является одним из основных положений программирования в MatLab. Оно позволяет одновременно использовать элементы как операторного, так и функционального программирования.
Следует отметить, что в математических выражениях операции имеют определенный приоритет исполнения. Например, в MatLab приоритет логических операций выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки.
MatLab обладает большим набором стандартных встроенных математических функций. Некоторые из них приведены в табл. 3.1-5. При вызове математических функций аргумент заключается в круглые скобки. Полный список всех встроенных элементарных математических функций можно получить, набрав в командной строке.
|
>>help elfun >> |
Таблица 3.1-5
Тригонометрические функции (результат вычисляется в радианах) | |
sin, cos, tan, cot | Синус, косинус, тангенс и котангенс |
sec, csc | Секанс, косеканс |
Обратные тригономе-кие функции (результат вычисляется в рад.) | |
asin, acos,atan,atan2, 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 | Комплексно-сопряжённое |
mod, rem | Остаток от деления с учетом знака делимого и без |
gcd, lcm | Наибольший и наименьший общий делитель |
cell, fix, floor, round | округления |
Команда help отображает в командном окне список разделов справочной системы. Для получения содержимого раздела необходимо указать через пробел его название после help, а для вывода детальной информации о какой-либо функции, следует ввести в строке с help имя функции.
Возникающий в процессе вычислений комплексный результат не является ошибкой. MatLab автоматически переходит в область комплексных чисел, если это необходимо, продолжая вычисления. Например, если необходимо найти квадратный корень из –1. Более того, допустимы операции деления на ноль, которые приводят к стандартным переменным Inf или –Inf. Результат деления нуля на ноль есть NaN (Not a Number – не число). Переполнение или потеря точности в MatLab при выполнении операций с числами с плавающей точкой не вызывает прекращение вычислений.
Запись комплексных величин, используемых в арифметических выражениях, напоминает общепринятые математические стандарты. Мнимые части комплексных чисел сопровождаются либо буквой i, либо буквой j:
|
>>x=1.5-0.5i x = 1.5000 - 0.5000i >>y=1.5-0.5j y = 1.5000 – 0.5000j >> |
Если переменным i и j не присвоены какие-либо значения, то их можно использовать для формирования комплексных данных, используя знак умножения и располагая такой “сомножитель” до или после мнимой части:
|
>>a=1; >>x=i*a x = 0 + 1.0000i >>y=a*i y = 0 + 1.0000i >> |
Когда полные комплексные числа используются в операциях умножения, деления и возведения в степень, то для устранения неоднозначности их заключают в круглые скобки.
С помощью функции realи imag можно выделить вещественную и мнимую часть комплексного значения, а функция complex позволяет сконструировать комплексное значение по паре двух вещественных чисел.
|
>>b=5+j10; >>c=real(d) c= >>d=imag(b) d= >> |
Функцией conj() можно воспользоваться для получения комплексного сопряженного числа. Тот же результат можно получить, располагая апостроф вслед за комплексным значением.
|
>>t=conj(b) t= 5.0000e+000 -1.0000e+001i >>g=b' g= 5.0000e+000 -1.0000e+001i >> |
Отметим, что над комплексными данными в MatLabопределены все арифметические операции, а комплексные операнды и выражения могут использоваться в качестве аргументов стандартных функций.
Необходимо обратить внимание, что числовые переменные в MatLab являются двумерными массивами размера один на один. Представление всех данных в MatLab в виде массивов оказывается очень полезным, о чем подробнее будет сказано в следующих разделах.