Глава 4. Типы данных
4.1. Типы данных
Наиболее простой и распространенный ввод-вывод данных в Mathcad реализован присваиванием и выводом (либо численным, либо символьным) непосредственно в документе. Переменные и функции, посредством которых осуществляется ввод-вывод, могут иметь значения различных типов (числовые, строковые и т. д.). Перечислим основные типы данных, которые обрабатываются процессорами системы Mathcad:
- числа (в том числе, действительные, комплексные, а также встроенные константы) — Mathcad хранит все числа в формате двойной точности с плавающей точкой (не разделяя их на целые, булевы и т. д.);
- строки — любой текст, заключенный в кавычки;
- массивы (в том числе ранжированные переменные, векторы и матрицы) — упорядоченные последовательности чисел или строк.
Рассмотрим более подробно типы данных и то, как осуществляется их непосредственный ввод в документ с помощью присваивания значения переменным.
4.1.1. Действительные числа
Любое выражение, начинающееся с цифры, Mathcad интерпретирует как число. Поэтому для ввода числа просто начните его набирать на клавиатуре. Несмотря на то, что Mathcad хранит все числа в одинаковом формате, вводить их можно в наиболее подходящем представлении (notation), исходя из контекста документа:
- как целое число;
- как десятичное число (decimal notation) с любым количеством десятичных цифр после точки;
- в представлении с порядком (exponential notation) — в так называемом научном формате или представлении (scientific notation), для чего после ввода числа напечатайте символ умножения и введите ю в нужной степени;
- как число в другой системе счисления.
Три первых представления иллюстрируются содержанием соответствующей строки листинга 4.1.
При вводе целых чисел, больших или равных 1000, все цифры пишутся слитно (как показано в первой строке листинга 4.1) и ни в коем случае не разделяются на порядки запятыми. Например, ввод числа 1000 как 1,000 или 1.000 недопустим.
Листинг 4.1. Ввод действительных чисел
Если вы продолжите листинг 4.1 последовательным выводом всех переменных, то с удивлением обнаружите, что некоторые из чисел выглядят по-иному (например, число d=0). Объяснение этому будет дано в разд. 4.2.
Для ввода числа в других системах счисления: двоичной (binary), восьмеричной (octal) или шестнадцатеричной (hexadecimal) сделайте следующее:
- Введите его представление в соответствующей системе, применяя лишь корректные символы (для двоичной системы допустимы только цифры 0 и 1; для восьмеричной — цифры от 0 до 7, для шестнадцатеричной — цифры от 0 до 9 и буквы от а до f)- Например, число 34 в двоичной системе представлено такой последовательностью: 100010.
- После ввода последнего символа числа введите b (для двоичного числа), 0 (для восьмеричного числа) или h (для шестнадцатеричного).
Использование чисел в других системах счисления иллюстрируется листингом 4.2. Обратите внимание, что вывод осуществляется все равно в десятичной системе.
Листинг 4.2. Ввод чисел в других системах исчисления
В логических функциях используются битовые числа (ложь или истина). Они в Mathcad обозначаются обычными действительными числами 0 и 1.
4.1.2. Комплексные числа
Большинство операций в среде Mathcad по умолчанию осуществляются над комплексными числами. Комплексное число является суммой действительного и мнимого числа, получающегося путем умножения любого действительного числа на мнимую единицу (imaginary unit) i. По определению, i2=-1.
Чтобы ввести мнимое число, например 3i:
- Введите действительный сомножитель (3).
- Введите символ "i" или "j" непосредственно после него.
Для ввода мнимой единицы надо нажать клавиши <1>, <i.>. Если просто ввести символ "i", то Mathcad интерпретирует его как переменную i. Кроме того, мнимая единица имеет вид 1i, только когда соответствующая формула выделена. В противном случае мнимая единица отображается просто как i (рис. 4.1).
Рис. 4.1. Ввод мнимой единицы
Комплексное число можно ввести в виде обычной суммы действительной и мнимой частей или в виде любого выражения, содержащего мнимое число. Примеры ввода и вывода комплексных чисел иллюстрируются листингом 4.3.
Листинг 4.3. Комплексные числа
Для работы с комплексными числами имеются несколько простых функций и операторов (см. разд. "Функции работы с комплексными числами" гл. 10), действие которых показано в листинге 4.4.
Листинг 4.4. Функций работы с комплексными числами
Можно выводить мнимую единицу в результатах вычислений не как i, а как j. Для смены представления выберите нужное в списке Imaginary Value (Мнимое значение) диалогового окна Result Format (Формат результата), доступного по команде Format / Result / Display Options (Формат / Результат / Опции отображения).
4.1.3. Встроенные константы
Некоторые имена в Mathcad зарезервированы под системные переменные, которые называются встроенными константами (built-in constants). Встроенные константы делятся на два типа: математические, хранящие значения некоторых общеупотребительных специальных математических символов, и системные, определяющие работу большинства численных алгоритмов, реализованных в Mathcad.
Математические константы (math constants)
- символ бесконечности (вводится клавишами <Ctrl>+<Shift>+<z>);
- е — основание натурального логарифма (клавиша <е>);
- число "пи" (вводится клавишами <Ctrl>+<Shift>+<p>);
- i, j — мнимая единица (вводится клавишами <1>, <i> или <1>, <j>);
- % — символ процента, <%>, эквивалентный 0.01.
Математические константы по-разному интерпретируются при численных и символьных вычислениях. Вычислительный процессор просто воспринимает их как некоторые числа (листинг 4.5), а символьный распознает каждое из них, исходя из математического контекста, и способен выдавать математические константы в качестве результата.
Листинг 4.5. Значения математических констант
При желании можно изменить значение любой из перечисленных констант или использовать их в качестве переменных в расчетах (см. листинг 4.1, в котором переопределена константа е). Разумеется, если присвоить константе новое значение, прежнее станет недоступным.
Системные переменные (system variables)
- TOL — точность численных методов;
- CTOL — точность выполнения выражений, используемая в некоторых численных методах;
- ORIGIN — номер начального индекса в массивах (см. разд. 4.3.1);
- PRNPRECISION — установка формата данных при выводе в файл;
- PRNCOLWIDTH — установка формата столбца при выводе в файл;
- CWD — строковое представление пути к текущей рабочей папке.
Предустановленные значения системных переменных перечислены в листинге 4.6. Их можно поменять в любой части документа, присвоив соответствующей переменной новое значение. Кроме того, переопределение значения переменной для всего документа производится при помощи команды Tools / Worksheet Options / Built-in Variables (Сервис / Опции документа / Встроенные переменные) в диалоговом окне Worksheet Options (Опции документа ), приведенном на рис. 4.2. Чтобы в любой момент вернуть значения по умолчанию, нажмите кнопку Restore Defaults (Восстановить установки по умолчанию).
Листинг 4.6. Предустановленные значения системных переменных
Рис. 4.2. Вкладка Built-in Variables диалога Worksheet Options
Значением переменной или функции может быть не только число, но и строка, состоящая из любой последовательности символов, заключенной в кавычки (листинг 4.7). Для работы со строками в Mathcad имеется несколько встроенных функций (см. разд. "Строковые функции" гл. 10).
Листинг 4.7. Ввод и вывод строк
Совершенно аналогичным образом можно определять пользовательские функции строкового типа.
4.2. Размерные переменные
В Mathcad числовые переменные и функции могут обладать размерностью. Сделано это для упрощения инженерных и физических расчетов. В Mathcad встроено большое количество единиц измерения, с помощью которых и создаются размерные переменные.
4.2.1. Создание размерной переменной
Чтобы создать размерную переменную, определяющую, например, силу тока в 10 А:
- Введите выражение, присваивающее переменной i значение ю: i:=io.
- Сразу после ввода ю введите символ умножения "*".
- Находясь в области местозаполнителя, выберите команду Insert / Unit (Вставка / Единицы) либо нажмите кнопку с изображением мерного стакана на стандартной панели инструментов, либо клавиши <Ctrl>+<U> (рис. 4.3).
- В списке Unit (Единица измерения) диалогового окна Insert Unit (Вставк-единицы измерений) выберите нужную единицу измерения Ampere (A).
- Нажмите кнопку ОК.
Если Вы затрудняетесь с выбором конкретной единицы измерения, нэ знаете, какова размерность переменной (в нашем случае это электрический ток), то попробуйте выбрать ее в списке Dimension (Размерность) диалогового окна Insert Unit (Вставка единицы измерений) (рис. 4.4). Тогда в списке Unit (Единица измерения) появятся допустимые для этой величины единицы измерений, из которых выбрать нужную будет легче (рис. 4.5).
Просмотреть вставку единиц измерения можно и без выхода из диалогового окна Insert Unit, нажимая вместо кнопки ОК кнопку Insert (Вставить).
В этом случае Вы увидите, что единица измерений появилась в нужном месте документа, и можете поменять ее, оставаясь в диалоге Insert Unit.
Рис. 4.3. Вставка единиц измерения размерной величины
Рис. 4.4. Диалоговое окно Insert Unit
Рис. 4.5. Выбор размерности
Работая с размерными переменными, приготовьтесь к тому, что Mathcad будет постоянно контролировать корректность расчетов. Например, нельзя складывать переменные разной размерности, в противном случае (рис. 4.6) будет получено сообщение об ошибке "The units in this expression do not match" (Размерности в этом выражении не совпадают). Тем не менее, позволяется складывать, например, амперы с килоамперами (см. рис. 4.9).
Рис. 4.6. Нельзя складывать переменные разной размерности
Рис. 4.7. Изменение единиц измерения в ответе
Над размерными переменными можно производить любые корректные с физической точки зрения расчеты. Пример расчета сопротивления через отношение напряжения к току приведен в листинге 4.8.
Листинг 4.8. Расчеты с размерными переменными
Обратите внимание, что результат в листинге 4.8 выдан не в омах. Тем не менее, легко перевести его в омы, как и в другие единицы. Для этого достаточно дважды щелкнуть на местозаполнителе, присутствующем после вычисленного значения формулы в момент, когда она выделена (рис. 4.7, внизу). В результате появляется то же самое диалоговое окно Insert Unit (Вставка единицы измерений), в котором можно поменять единицу измерений вычисленного ответа. В результате ответ будет пересчитан в соответствии с вновь введенной единицей измерения (как сделано для верхней формулы на рис. 4.7).
Можно включить автоматический перевод единиц измерения в более простые единицы. Для этого перейдите в диалоговое окно Result Format (Формат результата) на вкладку, посвященную размерностям, с помощью команды Format/ Result/ Unit Display (Формат/ Результат/ Отображение размерности). Установите в ней флажок Simplify units when possible (Упрощать единицы, когда это возможно).
Процесс смены единиц в момент их выбора в диалоге Insert Unit (Вставка единицы измерений) показан на рис. 4.8. В результате приведенного выбора выведенное в амперах значение силы тока будет изменено на значение в килоамперах: 1.01 кА.
Рис. 4.8. Сложение переменных одной размерности, выраженных в разных единицах
4.2.3. Выбор системы единиц
Как легко заметить, во всех примерах этого раздела вставлялись единицы системы измерения SI. Об этом можно было судить как по перечню самих единиц, так и по недоступному списку System (Система) в диалоге Insert Unit (Вставка единицы измерений) с выбранным пунктом SI. Сменить систему единиц во всем документе можно, выполнив команду Tools / Document Options (Сервис / Опции документа) и переходя на вкладку Unit System (Система единиц). В ней следует выбрать один из переключателей, соответствующий желаемой системе.
4.2.4. Определение новой размерности
Чтобы определить новую (пользовательскую) единицу измерения, достаточно присвоить ее выражение через используемые размерности переменной с соответствующим именем. Пример создания новой единицы измерения "наноампер" приведен в листинге 4.9.
Листинг 4.9. Определение новой единицы измерения
Созданные пользователем единицы измерения недоступны в диалоговом окне Insert Unit (Вставка единицы измерений), поэтому их приходится вводить вручную с клавиатуры (как это сделано для новой единицы ПА во второй строке листинга 4.9).
Массивами (arrays) называют упорядоченные последовательности чисел или элементов массива. Доступ к любому элементу массива возможен по его индексу, т. е. номеру в последовательности чисел (в листинге 4.10 а — это массив, ах — его элемент). Применение массивов чрезвычайно эффективно в математических расчетах.
Листинг 4.10. Одномерный массив (вектор)
В Mathcad условно выделяются два типа массивов:
- векторы (одноиндексные массивы, листинг 4.10), матрицы (двухиндекс-ные, листинг 4.11) и тензоры (многоиндексные);
- ранжированные переменные (range variables) — векторы, элементы которых определенным образом зависят от их индекса.
Листинг 4.11. Двумерный массив (матрица)
4.3.1. Доступ к элементам массива Доступ ко всему массиву осуществляется по имени векторной переменной. Например, последовательность символов "а", "=" в листингах 4.10 и 4.11 приведет к выводу соответствующего вектора или матрицы. В Mathcad имеются и операторы, и встроенные функции, которые действуют на векторы и матрицы целиком (они рассматриваются в гл. 9), например, транспонирование, матричное умножение и т. д. Над элементами массива можно совершать действия как над обычными числами. Нужно только правильно задать соответствующий индекс или сочетание индексов массива. Например, чтобы получить доступ к нулевому элементу вектора а из листинга 4.10:
Если после этого ввести знак численного вывода, то справа от него появится значение нулевого элемента вектора, как показано во второй строке листинга 4.10. Чтобы получить доступ к элементу многоиндексного массива (например элементу а1,0 матрицы а из листинга 4.11):
В результате будет получен доступ к элементу, как показано в предпоследней строке листинга 4.11. В рассмотренных листингах нумерация индексов массивов начинается с нуля, иными словами, первый элемент массива имеет индекс о. Стартовый индекс массива задается системной переменной ORIGIN, которая по умолчанию равна нулю. Если Вы привыкли нумеровать элементы векторов и матриц с единицы, присвойте этой переменной значение 1 (листинг 4.12). Обратите внимание, что в этом случае попытка выяснить значение нулевого элемента вектора приводит к ошибке, поскольку его значение не определено. Помимо доступа к отдельным элементам массива, имеется возможность совершать действия над его подмассивами (например векторами-столбцами, образующими матрицу). Делается это с помощью оператора со значком х<> на панели Matrix (Матрица) (см. гл. 9). Листинг 4.12. Изменение нумерации индексов массивов 4.3.2. Ранжированные переменные
Ранжированные переменные в Mathcad являются разновидностью векторов и предназначены, главным образом, для создания циклов или итерационных вычислений. Простейший пример ранжированной переменной — это массив с числами, лежащими в некотором диапазоне с некоторым шагом. Например, для создания ранжированной переменной s с элементами 0,1,2,3,4,5:
Рис. 4.9. Создание ранжированной переменной Результат создания ранжированной переменной показан на рис. 4.10. Чтобы создать ранжированную переменную с шагом, не равным 1, например, 0,2,4,6,8:
Созданная ранжированная переменная будет иметь значения от о до 8 включительно, с шагом, равным 2.
Рис. 4.10. Вывод ранжированной переменной
Рис. 4.11. Создание ранжированной переменной с шагом, не равным 1 Чаще всего ранжированные переменные используются:
Обратите внимание на типичный пример использования ранжированной переменной из листингов 4.13 и 4.14. Большинство математических действий, реализованных в Mathcad, совершаются над ранжированными переменными точно так же, как над обычными числами. В этом случае одно и то же действие осуществляется параллельно над всеми элементами ранжированной переменной. Листинг 4.13. Ранжированная переменная при параллельных вычислениях Параллельные вычисления производятся точно так же и над произвольными векторами, не обязательно являющимися ранжированными переменными. Например, можно определить в листинге 4.14 вектор i, подобно вектору из листинга 4.10, и провести те же параллельные вычисления над его элементами. Листинг 4.14. Ранжированная переменная при параллельных вычислениях Листинг 4.15. Использование ранжированной переменной для определения матрицы Определяя массив с помощью ранжированных переменных (листинги 4.14 и 4.15), позаботьтесь о том, чтобы их значения пробегали все необходимые индексы массива. Например, если задать шаг изменения ранжированной переменной, равный 2, то половина элементов вектора будет не определена. Помните о том, что ранжированные переменные — просто разновидности векторов с упрощенной формой задания элементов. Часто необходимо провести одни и те же вычисления циклически, большое количество раз, например, вычисление некоторой функции f (х) в некотором диапазоне х для построения подробного графика. Задание вручную всех значений аргумента (наподобие вектора из листинга 4.10) очень трудоемко, а с помощью задания ранжированной переменной х это делается в одну строку.
|