Форматы представления вещественных чисел

 

Числовые данные, с которыми оперирует система 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) заключается в том, что в отличие от большинства алгоритмических языков здесь допускается использование операндов-массивов. Таким образом, в результате вычисления выражения может получиться некоторое множество значений – вектор, матрица или массив большей размерности.