Форматы представления вещественных чисел
Числовые данные, с которыми оперирует система MATLAB, в памяти компьютера представлены вещественными или комплексными значениями в формате double. Это означает, что каждое вещественное число занимает 8 байт в оперативной памяти и принимает по модулю значения из диапазона , количество значащих цифр при этом теоретически достигает 16-17. Комплексное число, представленное действительной и мнимой частями в том же формате, занимает соответственно 16 байт. Именно с такой точностью теоретически система MATLAB выполняет все вычисления. Однако при отображении числовых результатов на экране монитора часть значащих цифр отбрасывается согласно установленному формату вывода.
Как правило, числа выводятся с небольшим количеством значащих цифр: целые – не более, чем с 9 цифрами; вещественные с фиксированной точкой – не более, чем с 4 цифрами в дробной части; очень большие или очень маленькие (в том числе по модулю) числа – в формате с плавающей точкой и пятью значащими цифрами. Отображаемые значения округляются по общепринятым в математике правилам (таблица 2.5.1).
Таблица 2.5.1. Примеры отображаемых числовых значений.
>> x=123456789 x = | >> x=10/6 x = 1.6667 | >> x=1/100 x = 0.0100 |
>> x=1234567890 x = 1.2346e+09 | >> x=100/6 x = 16.6667 | >> x=1/1000 x = 1.0000e-03 |
>> x=1/60 x = 0.0167 | >> x=1000/6 x = 166.6667 | >> x=123.456789 x = 123.4568 |
>> x=1/6 x = 0.1667 | >> x=10000/6 x = 1.6667e+03 | >> x=1234.56789 x = 1.2346e+03 |
Поясняя данные таблицы 2.5.1 следует подчеркнуть, что в системе MATLAB, как и в языке программирования FORTRAN для представления чисел (как вещественных, так и целых) используется формат с плавающей точкой (научный формат), в котором любое число задается мантиссой и показателем степени, и записываются в следующем виде:
1.2346e+09; 1.0000e-03; 1.6667e+03; 1.2346e+03
где буквой e обозначается основание степени, равное 10. Максимальное и минимальное по модулю числа в MATLAB соответственно равны
1.797693134862316e+308; 2.225073858507202e-308
Для этих чисел зарезервированы имена realmax и realmin.
Отметим еще одно важное отличие реализации вычислений в системе MATLAB и языке программирования FORTRAN. Результаты вычисления значений x=10/6, x=1/100, x=100/6 при выполнении соответствующей программы на языке FORTRAN равны соответственно 1, 0 и 16 (результат операций с целыми числами – целое число, т.е. дробная часть результата отбрасывается и чтобы этого не происходило по правилам языка FORTRAN следует записать x=10./6., x=1./100., x=100./6.), тогда как в MATLAB сразу получаем естественные с точки зрения математики значения указанных выражений (с учетом округлений), равные соответственно 1.6667, 0.0100 и 16.6667.
Для отображения чисел в командном окне MATLAB могут использоваться следующие форматы: short(используется по умолчанию для вывода вещественных чисел и предусматривает отображение только четырех десятичных цифр после десятичной точки), longдля более полного представления вещественных чисел), ratили иначе rational(для отображения вещественных чисел в виде обыкновенных дробей; в данном формате операнды и результаты вычислений, являющихся целыми числами, в командном окне MATLAB отображаются в виде целых чисел, хотя в памяти компьютера они представляются так же, как и дробные числа).
Чтобы использовать, например формат long следует ввести с клавиатуры команду
>> format long
Таблица 2.5.2 поясняет вышеперечисленные форматы вывода числовых данных (следует отметить, что значение переменной x не зависит от установленного формата вывода).
Таблица 2.5.2. Форматы вывода числовых данных в системе MATLAB.
>> format short >> x=sqrt(2) x = 1.4142 | >> format short e >> x=sqrt(2) x = 1.4142e+00 |
>> format long >> x=sqrt(2) x = 1.414213562373095 | >> format long e >> x=sqrt(2) x = 1.414213562373095e+00 |
>> format rational >> x=sqrt(2) x = 1393/985 |
Дополняя данные таблицы 2.5.2, отметим, что форматы short g и long g представляют собой гибрид между соответствующими форматами вывода с фиксированной и плавающей точкой. Формат bank позволяет оперировать с финансами, сохраняя в дробной части числа два знака, соответствующие мелким денежным единицам. Формат + обеспечивает обязательный вывод знака даже у положительных чисел. Формат hex обеспечивает вывод числовых данных в шестнадцатеричном формате
Заметим, что в MATLAB существуют и иные способы изменения формата выводимых данных, построенные на базе функции sprintf, хорошо знакомой программистам на языке C. После этого результаты всех последующих вычислений будут отображаться в данном формате.
Для переменных типа double в MATLAB разрешены арифметические операции сложения, вычитания, умножения и деления, для которых используются традиционные для любого языка программирования знаки: +, –, *, /, а также операция возведения в степень, обозначаемая знаком ^ (вместо ** в языке программирования FORTRAN).
Арифметические выражения
Основу большинства расчетов составляют вычисления значений арифметических выражений, в которых в качестве операндов могут выступать константы (постоянные), переменные, стандартные и нестандартные функции. Специфика MATLAB (также как и современных стандартов языка программирования FORTRAN) заключается в том, что в отличие от большинства алгоритмических языков здесь допускается использование операндов-массивов. Таким образом, в результате вычисления выражения может получиться некоторое множество значений – вектор, матрица или массив большей размерности.