[Список тем] [Вступление к этой теме] страницы темы: [1] [2]


Сохранение и использование данных


Файловые данные

Mathcad может успешно использоваться в современных физических установках для обсчета данных эксперимента. Но для этого необходима связь между такими установками (точнее, их программным обеспечением) и системой Mathcad. Для осуществления подобной связи система Mathcad имеет специальный тип данных - файловые данные. В сущности это те же векторы и матрицы, но с элементами, которые могут записываться в виде файлов текстового формата, имеющих свои имена. Файлы данных в системе представляют собой запись матриц в их естественной форме. Имеются операции считывания таких файлов, позволяющие присваивать содержащиеся в них данные переменным, векторам или матрицам.

В ходе создания файла система считывает значения элементов вектора или матрицы поэлементно (для матриц слева направо и сверху вниз) и по ходу считывания преобразует числовые значения элементов в их символьные эквиваленты, использующие ASCII-коды цифр и относящиеся к заданию чисел символы. Эти символьные значения и записываются в виде файлов данных.

Операции с файловыми данными

Существует шесть простых файловых операций, используемых во всех версиях Mathcad под Windows. Создаваемые или используемые ими файлы легко просмотреть в любом текстовом редакторе, воспринимающем тексты в виде ASCII-кодов. При считывании файлов система обеспечивает обратное преобразование символьных представлений значений элементов в их числовые значения. Такая форма задания облегчает "стыковку" Mathcad с программами, написанными на любом языке программирования, даже таком простом, как Бейсик (или Паскаль), и обеспечивает взаимный обмен файлами текстового формата.

Начнем рассмотрение данных операций с операции считывания файла, содержащего элементы вектора.

READ("Имя_файла")

Эта функция считывает данные из файла с указанным именем: Имя_файла.

Аргументом функций типа READ является строковая переменная, по этой причине собственно Имя_файла помещается в обращении к функции в кавычки.

Функция READ обычно используется для присваивания значений векторам, например:

V := READ("DATA")

Элементы вектора V получают значения, считанные из файла с именем DATA. Естественно, что такой файл должен существовать на диске, иначе ситуация будет считаться ошибочной. Для указания полного имени файла (если его нет в текущей папке системы) следует использовать общеупотребительные для MS-DOS составные имена, например D:\EXPER\DATA, если файл DATA расположен на диске D в папке EXPER. Следующая функция записывает данные в файл и присваивает ему указанное имя: WRITE("Имя_файла")

Данные могут порождаться математическим выражением, например:

WRITE("Имя_файла") := Выражение Разумеется, выражение должно создавать данные векторного типа.

Следующая функция подобна функции WRITE, но она дописывает данные в конец уже существующего файла:

АРРЕND("Имя_файла")

Нельзя использовать другие функции для дописывания данных - они, записывая новые данные, уничтожат прежние данные в файле.

ВНИМАНИЕ Функции READ, WRITE и APPEND в версиях Mathcad 8.0 и Mathcad 2000 сохранены только ради совместимости с программами предшествующих версии Mathcad. Их применение не рекомендуется, хотя и возможно.

Следующая операция подобна функции RЕАD, но считывает данные в виде двухмерного массива - матрицы:

READPRN("Имя_файла")

функция READPRN возвращает матрицу, значения элементов которой однозначно связаны со значениями элементов файла. Или, точнее, каждая строка или столбец возвращаемой матрицы подобны соответствующим строкам или столбцам текстового представления файла.

Следующая операция подобна функции WRITE, но применяется для записи матричного выражения (или матрицы) в файл с указанным именем:

WRITEPRN("Имя_фаЙла")

Структура текста файла подобна структуре матрицы. Следующая операция дописывает данные в уже существующий матричный файл:

APPENDPRN("Имя_файла")

Следует особо отметить, что при работе с векторами и матрицами, имеющими комплексные элементы, эти операции используют расширенные векторы или матрицы, элементы которых - действительные числа.

На рис. 16.4 показаны типовые операции с данными файлового типа. Этот рисунок иллюстрирует эффективные возможности занесения данных в файл и их последующего считывания.

Рис. 16.4. Основные операции с данными файлового типа Полезно просмотреть в текстовом редакторе созданный Mathcad файл данных. Нетрудно заметить, что данные представлены наглядно и естественно, поэтому такой файл легко обрабатывать (создавать или модифицировать) с применением программ, созданных с помощью любых других языков программирования, что создает предпосылки для обеспечения легкого обмена данными через файлы. Следующая функция используется для считывания RGB-изображений:

READRGB("Иия_файла")

Она используется вместе с графическими файлами и возвращает массив из трех подмассивов, несущих данные о разложении цветного изображения на три основных цвета - красный, зеленый и синий. Благодаря введению данных файлового типа возможности системы Mathcad существенно расширяются. Она может использоваться в сложных программных комплексах. Например, некоторая специализированная программа может управлять экспериментальной установкой и формировать файлы данных, которые в дальнейшем обрабатываются системой Mathcad с использованием ее мощных и гибких математических возможностей. При этом предусмотрена обработка множества пакетов данных.

ЗАМЕЧАНИЕ В Malhcad 2000 PRO данные файлового типа существенно расширены. Помимо упомянутых функций имеется ряд функций для так называемого графического процессора, позволяющих работать с цветовыми параметрами изображений - например, с разложением их на отдельные цвета, управлением интенсивностью отдельных составляющих цвета, их насыщенностью и яркостью. В приложении 2 можно найти данные об этих функциях.

Выполнение арифметических операций

Арифметические операторы

Арифметические операторы предназначены для выполнения арифметических действий над численными величинами (операндами) и конструирования математических выражений. Полный перечень операторов системы Mathcad приведен в приложении 1. Самыми распространенными являются операторы арифметических действий (+, -, * и /), возведения в степень ^, извлечения квадратного корня и др. На рис. 16.5 показаны примеры использования арифметических операторов.

Рис. 16.5. Примеры применения арифметических операторов

Для работы с комплексными величинами необходимо указать используемое в данном документе обозначение мнимой единицы - либо i, либо j (в виде корня квадратного из -1). Примеры работы с комплексными числами представлены на рис. 16.6.

Рис. 16.6. Примеры арифметических операций с комплексными числами

В дальнейшем будут рассмотрены дополнительные функции комплексного аргумента. Многие встроенные функции Mathcad, в частности элементарные, могут иметь комплексный аргумент.

Расширенные операторы

Система Mathcad содержит ряд расширенных арифметических операторов: вычисление суммы (клавиша $) и произведения (клавиша #), вычисление производной (клавиша ?) и определенного интеграла (клавиша &).

Нажатие указанных клавиш приводит к выводу на экран шаблона соответствующего оператора. Шаблон содержит места ввода, подлежащие заполнению операндами - числовыми или символьными значениями. Разумеется, для вызова шаблона можно использовать и соответствующую палитру математических спецсимволов.

На рис. 16.7 показано применение этих операторов. Заметим, что выражения с расширенными операторами возвращают вычисленные значения, поэтому их можно использовать в составе сложных математических выражений, представленных в наглядном виде. Поэтому расширенные операторы являются важным компонентом комплексной визуализации вычислений.

Обратите внимание на весьма поучительный пример вычисления определенного интеграла с подынтегральной функцией х*ехр (-х). Даже в версии Mathcad 7.0 этот интеграл при бесконечном верхнем пределе вычислялся некорректно - вместо точного значения 1 получалось значение 0. Причиной этого "парадокса" был используемый алгоритм численного интегрирования. В версиях Mathcad 8.0 и Mathcad 2000 интеграл вычислен точно. Это следствие применения существенно усовершенствованного адаптивного алгоритма численного интегрирования. Можно, конечно, удивиться тому, что и при верхнем пределе, равном 10, также получается точная единица. В данном случае, помимо уже отмеченного обстоятельства (значения функции при больших значениях х быстро стремятся к нулю), сказывается конечная точность вывода результатов вычислений - учитываются только три значащие цифры, причем последующие нули по умолчанию не пишутся. Точность вывода результатов можно изменить с помощью контекстного меню, при этом точность расчетов определяется значением системной переменной TOL, изменение которой позволяет пользователю установить необходимую ему минимальную точность вычислений.

Рис. 16.7. Примеры применения расширенных операторов

Применение расширенных операторов облегчает решение математических задач - раньше для выполняемых ими действий приходилось писать отдельные программы. Достигаемая при использовании этих операторов прекрасная визуализация вычислений - важное достоинство системы Mathcad.

Операторы отношения

Ряд операторов предназначен для сравнения двух величин.

Они называются операторами отношения или логическими операторами.

Оператор Клавиши Наименование операции X > Y X>Y X больше Y
X < Y X X >= Y X Ctrl ) Y X больше или равно Y
X <= Y X Ctrl ( Y X меньше или равно Y
X <> Y X Ctrl # Y X не равно Y
X = Y X Ctrl = Y X равно Y

Не следует путать оператор сравнения (знак равенства) с похожим знаком вывода значений переменных. В системе Mathcad знак равенства как оператор отношения имеет больший размер и более жирное начертание, чем обычный знак равенства - оператор вывода. Все операторы отношения могут вводиться самостоятельно в месте расположения курсора. В этом случае по обе стороны от них появляются маленькие темные прямоугольники. Они являются местами ввода для подлежащих сравнению выражений.

Необходимо отметить, что выражения с логическими операторами возвращают логическое значение, соответствующее выполнению или невыполнению условия, заданного оператором. Эти значения в системе Mathcad являются логической единицей 1, если условие выполнено, и логическим нулем 0, если оно не выполнено. Математически значения логической единицы и нуля совпадают со значениями числовых констант 1 и 0. Например: 2 > 1 = 1 - условие выполнено, результат 1; 1 > 2 = 0 - условие не выполнено, результат 0.

Указанное свойство логических операторов позволяет строить не совсем обычные выражения, содержащие в себе логические операторы, например:

2 * (5 > 0) = 2

Нетрудно понять, что выражение (5 > 0) возвращает единицу, поэтому результат вычисления такого выражения даст число 2. Логические операторы часто используются совместно с условными функциями, которые будут описаны далее.

Логические операторы

Поскольку логические операторы легко имитируются функцией Ф(х), долгое время они в систему Mathcad не вводились. Однако в Mathcad 2000 введен минимум таких операторов. Они находятся в палитре Boolean (булевы) и имеют обычные обозначения:

not
0-1=1
and or xor
0&0=0 0v0=0 0R0=0
1&0=0 1v0=1 1R0=1
0&1=0 0v1=1 0R1=1
1&1=1 1v1=1 1R1=0
Действие логических операторов задается таблицей истинности, которая представлена под списком операторов. Аргументами операторов должны быть логические нули - 0, или логические единицы - 1. Их иногда называют значениями FALSE и TRUE. Можно сказать, что данные операторы реализуют четкую логику. Однако эксперимент показал, что в роли логической единицы может выступать любое вещественное число, даже отрицательное. Например, для оператора not справедливо следующее: not(123) = 0. Иногда это позволяет реализовать так называемую нечеткую логику.

Элементарные функции

Mathcad содержит достаточно широкий набор встроенных элементарных функций. Функции задаются своим именем и значением аргумента, который записывается круглых скобках. В ответ на обращение к ним функция возвращает вычисленное значение. Аргумент и значение функции могут быть действительными или комплексными числами. Ниже представлены эти функции, разбитые на группы. Полные на звания распространенных и общеизвестных функций опущены.

Типовые элементарные функции

Показательные и логарифмические функции: exp(z), ln(z), log(z, [b]).

Тригонометрические функции: angle(х, у), sin(z), cos(z), tan(z), sec(z), csc(z), cot(z)

Обратные тригонометрические функции: asin(z), acos(z), atan(z), asec(z), acsc(z) acot(z).

Гиперболические функции: sinh(z), cosh(z), tanh(z),sech(z),csch(z),coth(z).

Обратные гиперболические функции: asinh(z), acosh(z), atanh(z), asech(z), acsch(z), acoth(z).

Большинство элементарных функций имеет один параметр, и их применение не вызывает никаких трудностей даже у начинающих пользователей. Особо стоит отметить две функции:

log(z, b) - вычисляет логарифм z по основанию b (если b опущено, вычисляется логарифм по основанию 10),

angle (х, у) - возвращает угол (от 0 до 2p) радиус-вектора, имеющего начало в точке (0, 0) и конец в точке (х, у).

Функции комплексного аргумента

arg(z) - вычисление аргумента;

Im(z) - выделение мнимой части комплексного числам;

Re(z) - выделение действительной части комплексного числа z;

csgn(z) - возвращает либо 0, если z=0, либо 1, если Re(z)>0 или если Re(z)=0 и

Im(z )>0, либо -1 в остальных случаях; signum(z) - возвращает 0, если Z=0, И Z/|Z| в ином случае.

Рис. 16.8 иллюстрирует работу с элементарными функциями как при действительном, так и при комплексном аргументе z.

Функции комбинаторики и теории чисел

combin(n, k) - возвращает число сочетаний k из n, где n>k;

lcm(v) - целое положительное число, которое является наименьшим общим кратным для всех элементов вектора v, имеющего не менее двух элементов типа геаl или двух целых неотрицательных чисел;

Рис. 16.8. Примеры вычисления значений элементарных функций

gcd (v) - целое число, которое является наибольшим общим делителем для всех элементов вектора v, содержащего не менее двух элементов типа real или двух целых неотрицательных чисел;

mod (х, у) - остаток от деления х на у, записанный со знаком числа х;

permut(n, k) - возвращает число размещений из n элементов по k, причем n и k должны быть целыми неотрицательными числами.

Набор элементарных функций в системе Mathcad функционально полон, точнее, он даже избыточен. Например, гиперболические функции можно вычислить через экспоненту, тангенс и котангенс легко выражаются через синус и косинус и т. д. Соответствующие формулы общеизвестны и потому здесь не приводятся.

Специальные математические функции

Наряду с элементарными функциями в системе Mathcad содержится ряд встроенных специальных математических функций. Их применение расширяет возможности системы в решении сложных математических задач.

Функции Бесселя

К важнейшим из специальных математических функций принадлежат функции Бесселя, являющиеся решениями дифференциального уравнения второго порядка:

Здесь n - порядок функции (рассматриваются функции только целого порядка при действительном х). Функции Бесселя описывают колебательные процессы и широко используются в физике, электро- и радиотехнике. Приведенное уравнение имеет решения в виде функций Бесселя Jn (х) первого рода и Yn (х) второго рода. Существуют также модифицированные функции Бесселя, которые являются решениями следующего дифференциального уравнения:

Эти функции также представлены функциями первого рода In(х) и второго рода Kn(х). ФУНКЦИИ Бесселя используются с вещественным аргументом. Ниже приведен список функций Бесселя, вычисление которых реализовано в системе Mathcad:

J0( х) - функция Бесселя первого рода нулевого порядка;

I0( х) - модифицированная функция Бесселя первого рода нулевого порядка;

Y0 (х) - функция Бесселя второго рода нулевого порядка;

K0 (х) - модифицированная функция Бесселя второго рода нулевого порядка;

J1 (х) - функция Бесселя первого рода первого порядка;

I1 (х) - модифицированная функция Бесселя первого рода первого порядка;

Y1(x) - функция Бесселя второго рода первого порядка;

К1 (х) - модифицированная функция Бесселя второго рода первого порядка;

J n (n, х) - функция Бесселя первого рода n -го порядка;

In(n, х) -модифицированная функция Бесселя первого рода n-го порядка;

Yn(n, х) - функция Бесселя второго рода n-го порядка;

Kn(n, х) -модифицированная функция Бесселя второго рода n-го порядка.

Эти функции есть во всех подверсиях Mathcad 8.0/2000.

Гамма-функция

Другой широко распространенной специальной функцией, вычисление которой (причем как при действительном, так и при комплексном аргументе z) предусмотрено в системе Mathcad, является гамма-функция Г( z). Она широко применяется в статистических расчетах, в которых используется также функция ошибок е rf (х}, называемая еще интегралом вероятности.

На рис. 16.9 представлены примеры вычисления ряда специальных математических. функций и графики этих функций.

Наличие встроенных в систему наиболее распространенных математических функций расширяет ее возможности. Многие другие специальные математические функции могут быть определены через перечисленные встроенные функции или заданы своим интегральным либо дифференциальным представлением.

Рис. 16.9. Вычисление специальных математических функций

Дополнительные специальные функции Mathcad 8.0/2000 PRO

В Mathcad 8.0/2000 PRO было введено около 50 новых функций. Среди них имеется ряд специальных математических функций. Дополнительные функции Бесселя:

Ai (х) - функция Эйри первого рода;

bei(n, х) -мнимая часть функции Бесселя-Кельвина порядка n;

berг (n, х) - действительная часть функции Бесселя-Кельвина порядка n;

Bi(x) - функция Эйри второго рода; js(n, х) - сферическая функция Бесселя первого рода целого порядка n (n>-200) в точке х (х>0);

ys(n, х) - сферическая функция Бесселя второго рода порядка n (n>-200) в точке х (х>0).

Гипергеометрические функции:

dhypergeom(m, n, M, N) - гипергеометрическая функция;

fhyper(a, b, с, х) - гипергеометрическая функция Гаусса в точке х с параметрами a, b и с;

mhyper(a, b, х) - конфлюэнтная гипергеометрическая функция в точке х с параметрами а и b.


[Список тем] [Вступление к этой теме] страницы темы: [1] [2]

[В начало страницы]