MathCAD 7.0

         

Алфавит MathCAD 7. 0 PRO



Алфавит MathCAD 7. 0 PRO

Алфавит входного языка системы определяет совокупность символов и слов, которые используются при задании команд, необходимых для решения интересующего пользователя класса задач. Алфавит системы MathCAD содержит:

• строчные и прописные латинские буквы;

• строчные и прописные греческие буквы;

арабские цифры от 0 до 9;

системные переменные;

операторы;

имена встроенных функций;

спецзнаки;

строчные и прописные буквы кириллицы (при работе с русифицированными документами).

К укрупненным элементам языка относятся типы данных, операторы, функции пользователя и управляющие структуры. Все эти элементы присущи и любому другому языку программирования.

К типам данных относятся числовые константы, обычные и системные переменные, массивы (векторы и матрицы) и данные файлового типа. По числу типов данных система MathCAD несколько уступает современным языкам программирования (к примеру, в ней нет данных типа записей, множеств и др.). Это связано с определенной специализацией языка, направленной на математические расчеты общего характера. Впрочем, тенденция расширения типов данных в MathCAD налицо; в конце этой главы описан новый тип данных (строковые), которые появились в MathCAD 7. 0 PRO.



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



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

Арифметические операторы предназначены для выполнения арифметических действий над численными величинами и конструирования математических выражений. Система MathCAD содержит следующие арифметические операторы (приводится их форма ввода, последовательность нажатия клавиш для ввода и условное наименование операндов Х и Y):



Оператор

X: =Y X=Y Х--X X+ Y X-Y X. Y

Х

Y

XY

Vx"

X!

¦Z¦

z

(-) ( )

Клавиши

X: Y X-Y

X Ctrl = -X X+ Y X-Y

X* Y

X/Y X^

x\

X!

¦Z

z"

( )

Назначение оператора

Локальное присваивание X значения Y Глобальное присваивание Х значения Y Вывод значения Х Смена знака Х Суммирование Х с Y Вычитание из Х значения Y Умножение Х на Y

Деление Х на Y Возведение Х в степень Y

Вычисление квадратного корня из Х Вычисление факториала Вычисление модуля комплексного Z Вычисление комплексно-сопряженного с Z числа Ввод пары круглых скобок с шаблоном Ввод открывающей скобки Ввод закрывающей скобки





Базовые понятия входного языка системы



11. 1. Базовые понятия входного языка системы

Система MathCAD практически избавляет нас от необходимости программировать решение многих задач. Уходит в прошлое подход, когда пользователь, прежде чем вычислить определенный интеграл или производную заданной функции либо просто рассчитать ряд ее значений, был вынужден изучать основы программирования на Фортране, Бейсике или Паскале, а затем составлять свои простенькие и не очень надежные программы или же разыскивать их в статьях и книгах, подобных [2], и самостоятельно загружать эти программы в ПК.

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

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

Поэтому, рассматривая входной язык системы как язык программирования, мы можем выделить в нем типичные понятия и объекты, такие, как идентификаторы, константы, переменные, массивы и другие типы данных, операторы и функции, управляющие структуры и т. д. Четкое представление об их возможностях и правилах применения (синтаксисе) весьма полезно при решении задач умеренной и высокой сложности.

Ниже описан входной язык системы MathCAD PLUS 7. 0. Он содержит все операторы и функции, которые были во всех предшествующих версиях системы - MathCAD 3. 0/4. 0/5. 0/ PLUS 5. 0/6. 0/PLUS 6. 0 PRO, что позволяет использовать материал этой главы пользователям, работающим с любой из указанных версий. Для этого в приведенных ниже изображениях экрана, как правило, удалены элементы интерфейса, характерные для MathCAD 7. 0 PRO. Функции, имеющиеся только в профессиональных версиях (с приставкой PRO в названии), выделены символом Ф.



Числовые функции с условиями сравнения



Числовые функции с условиями сравнения

К числовым функциям с условиями сравнения относятся:

ceil(x) — наименьшее целое, большее или равное x,, floor(x) — наибольшее целое, меньшее или равное х;

mod(x,y) — остаток от деления х/у со знаком х;

angle(a,y) — положительный угол с осью х для точки с координатами (х,у)', Ф(х) — функция Хевисайда — единичного скачка (дает 0 при х<0 и 1 в

противном случае);

d(m,n) — функция, именуемая символом Кронекера, возвращающая 1

при т=п и 0 в противном случае. Назначение этих функций довольно очевидно. К примеру, функция Хевисайда может использоваться для задания импульса с шириной w.

pulse(t.w) := Ф(t) - Ф(t-w)

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

not(a):=Ф(.5-l) — функция логического отрицания NOT;

and(a,b):= Ф(а*Ь-.5) — функция логического перемножения AND;

or(a,b):= Ф(а+Ь-.5) — функция логического сложения OR.

Эти функции используются с параметрами а и Ь, которые имеют логические значения 0 (FALSE) и 1 (TRUE). Функции возвращают результат (О или 1) в соответствии с таблицами истинности логических функций NOT, AND и OR. Аналогичным образом можно задать и другие логические функции.



Числовые константы



Числовые константы

Константами называют поименованные объекты, хранящие некоторые значения, которые не могут быть изменены. В качестве имени числовых констант используются их числовые значения (к примеру, значения констант 0 и 1 есть соответственно ноль и единица). В системе MathCAD используются и числовые константы, значениями которых являются числа с разной системой исчисления: десятичные, восьмеричные или шестнадцатеричные.

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

123 — целочисленная десятичная константа;

12. 3 — десятичная константа с дробной частью;

12. 3* 10-5 —десятичная константа с мантиссой (12. 3) и порядком-5.

Эти формы представления числовых констант естественны, и их не стоит обсуждать, за исключением двух важных аспектов. Порядок числа вводится умножением мантиссы на 10 в степени, определяющей порядок. Во многих языках программирования принят ввод чисел в виде 12. 3е-5, где разделительный символ е указывает на порядок. Этот не вполне естественный для математики ввод числа в системе MathCAD устранен.

Далее надо отметить, что знак умножения* при выводе числа на экран меняется на привычную математикам точку, а операция возведения в степень (с применением спецзнака ^) отображается путем представления порядка в виде надстрочного элемента. Десятичные числа имеют основание 10. Диапазон их возможных значений лежит в пределах от 10^07 до 10^307 (это машинная бесконечность и машинный ноль).



Данные файлового типа



11 .4. Данные файлового типа

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

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

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

1. READ (Имя_файла)

Эта операция-функция считывает данные из файла с указанным именем Имя_файла и возвращает значение — вектор. Обычно она используется для присваивания значений векторам, например:

V: = READ (DATA)

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

2. WRITE (Имя_файла)

Эта операция записывает данные в файл и присваивает ему указанное имя. Данные могут порождаться математическим выражением, например:

WRITE (Имя_файла): = Выражение

Разумеется, выражение должно создавать данные векторного типа.

3. APPEND (Имя_файла)

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

4. READPRN (Имя_файла)

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

5. WRITEPRN (Имя_файла)

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

6. APPENDPRN (Имя_фaйлa)

Демонстрирует типовые операции с данными файлового типа.



Рис. 11.5 демонстрирует типовые операции с данными файлового типа.




Динамика протекания процесса эпидемии



Рис. 11.37 Динамика протекания процесса эпидемии


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



Директива Given для подготовки блока решения системы уравнений



Директива Given для подготовки блока решения системы уравнений

При решении систем нелинейных уравнений используется специальный вычислительный блок, открываемый служебным словом — директивой Given — и имеющий следующую структуру:

Given

Уравнения

Ограничительные условия Выражения с функциями find и minerr

Рекомендуется дополнить блок проверкой решения системы.



Дополнительные матричные функции



Дополнительные матричные функции

В профессиональные версии MathCAD включен ряд дополнительных матричных функций Они перечислены ниже.

eigenvals(M) — возвращает вектор, содержащий собственные значения матрицы М,

eigenvec(M,Z) для указанной матрицы М и заданного собственного значения Z возвращает принадлежащий этому собственному значению вектор,

eigenvecs(M) — возвращает матрицу, столбцами которой являются собственные векторы матрицы М (порядок расположения собственных векторов соответствует порядку собственных значений, возвращаемых функцией eigenvals),

genvals(M,N) — возвращает вектор обобщенных собственных значений v1 соответствующий решению уравнения M-x=v,-N-x (матрицы М и N должны быть вещественными),

genvals(M,N) — возвращает матрицу, столбцы которой содержат нормированные обобщенные собственные векторы,

Ф1и(М) — выполняет треугольное разложение матрицы М- P-M=L-U, L и U — соответственно нижняя и верхняя треугольные матрицы Все четыре матрицы квадратные, одного порядка;

Фqr(A) — дает разложение матрицы A, A=Q-R, где Q, — ортогональная матрица и R — верхняя треугольная матрица,

(Bsvd(A) — дает сингулярное разложение матрицы А размером n m A*S*VТ где U и V — ортогональные матрицы размером m m и n n соответственно, S - диагональная матрица, на диагонали которой расположены сингулярные числа матрицы А,

Фsvds(A) — возвращает вектор, содержащий сингулярные числа матрицы А размером т-п, где т>п;

Egeninv(A) - возвращает матрицу левую обратную к матрице А.

L-A=E, где Е — единичная матрица размером п* п, L — прямоугольная матрица размером n-rn, A — прямоугольная матрица размером п*п.



Дополнительные неактивные функции



Дополнительные неактивные функции

При загрузке символьного процессора система распознает ряд дополнительных специальных функций, например:

FresnelC(x) — интеграл Френеля С(х);

FresnelS(x) — интеграл Френеля S(x);

Ci(x) — интегральный косинус;

Si(x) — интегральный синус;

Ег(х) — интегральная показательная функция;

dilog(x) — дилогарифм;

erf(z) — интеграл ошибок для комплексного аргумент z;

Psi(x) := , In(Go(x)) — "пси"-функция;

Psi(n,x) — п-я производная "пси"-функции.

К сожалению, статус этих функций необычен, они могут фигурировать в результатах символьных операций, но недоступны для обычных операций. Эти функции не обладают свойством эволюции, т. е. они не активны. Например, невозможно вычислить значения функций при подстановке в них числового значения аргумента и применении знака = для вывода результата вычислений. Однако, используя известные (в основном интегральные) представления для этих функций, их можно определить как функции пользователя. Выражения с неактивными функциями MathCAD размещает в буфере обмена, и их можно извлечь оттуда для обозрения.

Здесь не приводятся представления для этих функций, поскольку их легко найти в справочной системе помощи MathCAD либо в литературе, например в [14, 21]. В связи с особым статусом данного класса функций их имена не выделены жирным шрифтом.



Двумерная линейная сплайн-интерполяция и сплайн-аппроксимация



Двумерная линейная сплайн-интерполяция и сплайн-аппроксимация

Для повышения качества построения 3D-графиков имеется возможность осуществления двумерной сплайн-интерполяции. Это позволяет существенно повысить представительность сложных графиков 3D-функций, в том числе контурных (см. рис. 11.20).

На этом рисунке слева показан контурный график после проведения двумерной сплайн-интерполяции, а справа — без нее (с применением линейной

Единицы измерения



Единицы измерения

В системе может применяться особый вид констант — единицы измерения размерных величин. Помимо своего числового значения они характеризуются еще и указанием на то, к какой физической величине они относятся. Для этого указания используется символ умножения. В системе MathCAD заданы следующие основные типы физических величин: time (время), length (длина), mass (масса) charge (заряд) и др. При необходимости их можно изменить на другие.



Функции альтернативного преобразования Фурье



Функции альтернативного преобразования Фурье

Помимо описанных функций MathCAD содержит ряд функций альтернативного преобразования Фурье. Они записываются прописными буквами: FFT, IFFT, CFFT и ICFFT. При альтернативном преобразовании используются иные нормирующие множители. Выражения, определяющие суть преобразований Фурье, можно легко найти в справочной базе данных системы (поэтому здесь они не приводятся).



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



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

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


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

Существуют также модифицированные функции Бесселя, которые являются решениями следующего дифференциального уравнения:


Эти функции также представлены функциями первого рода 1п(x) и второго рода Кп(х).

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

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

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

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

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

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

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

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

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

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

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

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

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



Функции для линейной регрессии



Функции для линейной регрессии

Другой широко распространенной задачей обработки данных является представление их совокупности некоторой функцией у(х). Задача регрессии заключается в получении параметров этой функции такими, чтобы функция приближала облако исходных точек (заданных векторами VX и VY) с наименьшей среднеквадратичной погрешностью. Чаще всего используется линейная регрессия, при которой функция у(х) имеет вид

у(х) =а+ Ь*х

и описывает отрезок прямой. К линейной регрессии можно свести многие виды нелинейной регрессии при двупараметрических зависимостях у(х).

Для проведения линейной регрессии в систему встроен ряд приведенных ниже функций:

corr(VX, VY) — возвращает скаляр — коэффициент корреляции Пирсона;

intercrpt(VX, VY) — возвращает значение параметра а (смещение линии регрессии по вертикали);

slope(VX, VY) — возвращает значение параметра b (наклона линии регрессии).

На рис. 11.23 показан пример проведения линейной регрессии для данных, представленных значениями элементов в векторах VX и VY.




Функции для одномерной и многомерной полиномиальной регрессии



Функции для одномерной и многомерной полиномиальной регрессии

Введена в новую версию MathCAD и функция для обеспечения полиномиальной регрессии при произвольной степени полинома регрессии

regress(VX,VY, n)

Она возвращает вектор VS, запрашиваемый функцией interp(VS,VX,VY,x), содержащий коэффициенты многочлена п-й степени, который наилучшим образом приближает «облако» точек с координатами, хранящимися в векторах VX и VY

На рис 11 25 показан пример выполнения полиномиальной регрессии Для вычисления коэффициентов полинома регрессии используется функция submatrix




Функции для решения дифференциальных уравнений



11.19. Функции для решения дифференциальных уравнений

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

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

В прежних версиях MathCAD пользователю приходилось самостоятельно составлять документы с решением таких уравнений, например, методом Эйлера или Рунге — Кутта, что было делом не очень простым. К тому же решение загромождало текст документа. Теперь эта проблема решена, и довольно изящно.



Функции для решения дифференциальных уравнений Пуассона и Лапласа



Функции для решения дифференциальных уравнений Пуассона и Лапласа

Для решения дифференциальных уравнений Пуассона (в частных производных второго порядка) и уравнений Лапласа в систему введены следующие функции:

Фbvalfit(vl, v2, х1, х2, xi, — устанавливает начальные условия для F, LI, L2, score) краевой задачи, заданной в векторах F, vl и v2

на интервале от х1 до х2, где решение известно в некоторой промежуточной точке xi;

Фге1ах(М1, М2, МЗ, — возвращает квадратную матрицу решения М4, М5, A, U, г) уравнения Пуассона для спектрального радиуса г, Фmultigrid(M, п) — возвращает матрицу решения уравнения Пуассона, у которого решение равно нулю на границах;

sbval(y, х1, х2, F, L.,score) — дает установку начальных условий для краевой задачи, определенной в символьном векторе F; вектор у — начальные условия на интервале от х1 до х2.



Функции для решения жестких систем дифференциальных уравнений



Функции для решения жестких систем дифференциальных уравнений

Система дифференциальных уравнений, записанная в матричной форме у=А-х, где А — почти вырожденная матрица, называется жесткой. Для решения жестких дифференциальных уравнений в последние версии MathCAD введен ряд функций:

Фbulstoer (у, x1, x2, — возвращает матрицу решения системы обыкновен-асс, n, F, k, s) ных дифференциальных уравнений, правая часть которых записана в символьном векторе F с заданными начальными условиями в векторе у, на интервале от x1 до x2. Используется Bulirsch-Stoer-метод решения с переменным шагом. Параметры k и s задают максимальное число промежуточных точек, на которых ищется решение и минимально допустимый интервал между ними;

Ф Stiffb — возвращает матрицу решений жесткого дифферен-(у, х1, х2, п, F, J) циального уравнения, записанного в F и функции

Якобиана J; у - вектор начальных значений на интервале от х1 до х2. Для решения используется Bulirsch-Stoer-метод;

Ф stiffb (у, х1, х2, — возвращает матрицу решений только в конечной асc, п, F, J, k, s) точке жесткого дифференциального уравнения, записанного в F и функции Якобиана J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Bulirsch-Stoer с переменным шагом;

Ф Stiffr(y, х1, х2, — возвращает матрицу решений дифференциального п, F, J) уравнения, записанного в F и функции Якобиана

J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Розенброка;

Ф stiffr(y, х1, х2, — матрица решений только в конечной форме жест-асе,n, F, J, k, s) кого дифференциального уравнения, записанного в F и функции Якобиана J; у — вектор начальных значений на интервале от х1 до х2. Для решения используется метод Розенброка с переменным шагом. В приведенных функциях: асc — погрешность решения (рекомендуется порядка 0.001), k — максимальное число промежуточных точек ид— минимально допустимый интервал между точками, в которых ищется решение. Обратите внимание, что функции, начинающиеся со строчной буквы, дают решения только для конечной точки. Различаются функции также и методом решения.



Функции для решения краевых задач



Функции для решения краевых задач

Для решения двухточечных краевых задач предназначены функции

shval(v^c1,x2,D,load,score)

bvalfit(vl,v2,x1,x2,xf,S,loadl,load2,score)

В них векторы v, vl, v2 задают начальные условия; х, х1, х2 — граничные точки интервала решений; D(х,у) — функция, возвращающая п-компонент-ный вектор с первыми производными неизвестных функций, \oad(x1,v), \oadi(x1,vi), load2(;c2,v2) — векторзначные функции, возвращающие значения начальных условий в точках х1 (х2); score(xf,y) — векторзначная функция, возвращающая п-элементный вектор соответствия. Вектор указывает, насколько значения решений, начинающихся из точек х1 и х2, должны соответствовать xf. Например, если нужно совпадение решений, то score(xf, у):=у.

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



Функции для решения нелинейных уравнений и систем



11.16. Функции для решения нелинейных уравнений и систем



Функции для решения обыкновенных дифференциальных уравнений



Функции для решения обыкновенных дифференциальных уравнений

Для решения задач такого класса в MathCAD введен ряд функций. Вначале остановимся на функциях, дающих решения для систем обыкновенных дифференциальных уравнений:

rkadapt — возвращает матрицу, содержащую таблицу (у, х1, х2, асc, п, F, k, s) значений решения задачи Коши на интервале от х1 до х2 для системы обыкновенных дифференциальных уравнений, вычисленную методом Рунге — Кутта с переменным шагом и начальными условиями в векторе у (правые части системы записаны в векторе F, n — число шагов, k — максимальное число промежуточных точек решения и s — минимально допустимый интервал между точками);

Rkadapt(y, х1, х2, п, F) — возвращает матрицу решений методом Рунге — Кутта с переменным шагом для системы обыкновенных дифференциальных уравнений с начальными условиями в векторе у, правые части которых записаны в символьном векторе F, на интервале от х1 до х2', п - число шагов;

rkfixed(y, х1, х2, п, F) — возвращает матрицу решений методом Рунге —

Кутта системы обыкновенных дифференциальных уравнений с начальными условиями в векторе у, правые части которых записаны в символьном векторе F, на интервале от х1 до х2 при фиксированном числе шагов п.



Функции find и minerr для решения систем нелинейных уравнений



Функции find и minerr для решения систем нелинейных уравнений

В блоке используется одна из следующих двух функций:

find(vl, v2, ..., vn) — возвращает значение одной или ряда переменных

для точного решения;

minerr(vl, v2, ..., vn) — возвращает значение одной или ряда переменных

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



Функции прямого и обратного преобразований Фурье



11.18. Функции прямого и обратного преобразований Фурье

К фундаментальным положениям математики относится возможность представления периодических (а при определенных условиях и непериодических) функций совокупностью их гармонических составляющих в виде так называемого ряда Фурье [14]. Эта возможность используется во множестве прикладных сфер применения. Достаточно отметить, что на ее основе реализуется передача через каналы связи практически любой информации, например речи или музыки.



Функции распределения



Функции распределения

Эти функции дают вероятность того, что случайная величина будет иметь значения, меньшие или равные определенной величине. Они представлены ниже (смысл и значения параметров были указаны ранее):

Ф pbeta(x, s1, s2) — значение в точке х функции стандартного нормального распределения;

pbinom(^, п, р) — значение функции распределения биномиального закона для k успехов в серии п испытаний;

Ф pcauchy(x, /, s) — значение в точке х функции распределения Коши со шкалой параметров / и s;

pchisq(x, d) — значение в точке х кумулятивного {Хи-квадрат-распре-деления, в котором d - степень свободы;

Ф рехр(х, r) — значение в точке х функции экспоненциального распределения;

pf(x, d1, d2) — значение в точке х функции распределения Фишера;

Ф pgamma(x, s) — значение в точке х функции гамма-распределения;

Ф pgeom(k, р) — значение в точке х функции геометрического распределения;

Ф plnonn(x, m, о) — значение в точке х функции логнормального распределения;

Ф plogis(;c, /, s) — значение в точке х функции последовательного распределения;

plnonn(:c, jU, о) — значение в точке х функции нормального распределения;

Ф pnbinom(k, п, р) — значение в точке х функции отрицательного биномиального распределения;

ppois(k, Л) — значение для k функции распределения Пуассона;

pt(x, d) — значение в точке х функции распределения Стьюдента;

punif(x, a, b) — значение в точке х функции равномерного распределения;

Ф pweibull(x, s) — значение в точке х функции распределения Вейбулла.



Функции с условиями сравнения



11.8. Функции с условиями сравнения

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



Функции сглаживания данных



11.14. Функции сглаживания данных

Данные большинства экспериментов имеют случайные составляющие погрешности. Поэтому часто возникает необходимость статистического сглаживания данных. Ряд функций MathCAD предназначен для выполнения операций сглаживания данных различными методами (в их названии имеется слово smooth - гладкий). Вот перечень этих функций:

medsmooth(VY,n) — для вектора с т действительными числами возвращает т-мерный вектор сглаженных данных по методу скользящей медианы, параметр п задает ширину окна сглаживания (п должно быть нечетным числом, меньшим т),

Ф ksmooth(VX, VY, b) — возвращает n-мерный вектор сглаженных VY, вычисленных на основе распределения Гаусса. VX и VY — п-мерные векторы действительных чисел Параметр b (полоса пропускания) задает ширину окна сглаживания (b должно в несколько раз превышать интервал между точками по оси х),

Ф supsmooth(VX, VY) — возвращает и-мерный вектор сглаженных VY, вычисленных на основе использования процедуры линейного сглаживания методом наименьших квадратов по правилу k-ближайших соседей с адаптивным выбором k. VX и VY — и-мерные векторы действительных чисел Элементы вектора VX должны идти в порядке возраст ания На рис 11 28 показан пример применения функции subsmooth(X,Y), ко

торая выполняет сглаживание функции Y(X), представленной векторами Х и

Y координат ее точек Обратите внимание на применение и другой функции —

sort(Y), сортирующей данные векторов, что иногда уменьшает погрешности

численного алгоритма сгтаживания



Функции сортировки для векторов и матриц



Функции сортировки для векторов и матриц

Начиная с третьей версии в системе MathCAD появились некоторые дополнительные функции сортировки — перестановки элементов векторов и матриц:

sort(V) — сортировка элементов векторов в порядке возрастания их значений;

reverse(V) — перестановка элементов (после sort) в обратном порядке;

csort(M,n) — перестановка строк матрицы М таким образом, чтобы отсортированным оказался п-й столбец;

rsort(M,n) — перестановка столбцов матрицы М таким образом, чтобы отсортированной оказалась п-я строка.

Примеры применения дополнительных векторных и матричных функций

На рис. 11.17 представлены примеры, иллюстрирующие работу некоторых дополнительных векторных и матричных функций.



Функции создания векторов m различными законами распределения



Функции создания векторов m различными законами распределения

Последняя группа статистических функций служит для создания векторов с определенными законами распределения значений их элементов:

Ф rbeta(m, s1, s2) — бетта-распределение;

rbinom(m, n, p) — биномиальное распределение;

Ф rcauchy(m, /, s) — распределение Коши;

rchisq(m, d) — Хи-квадрат-распределение;

Ф rexp(m, r) — экспоненциальное распределение, rF(m, d1, d2) — распределение Фишера;

Ф rgamma(m, s) — гамма-распределение;

Ф rgeom(m, p) — геометрическое распределение;

Ф rlnorm(m, /л, сг) — логарифмическое нормальное распределение;

Ф rlogis(m, /, s) — последовательное распределение;

Ф mbinom(m, n, p) — негативное биномиальное распределение;

morm(m, m, о) — нормальное распределение;

rpois(m, Я) — распределение Пуассона;

rt(m, d) — распределение Стьюдента;

rumf(m, а, b) — равномерное распределение;

Ф rweibull(m, s) — распределение Вейбулла.




Функции волновых дискретных преобразований



Функции волновых дискретных преобразований

В системы MathCAD 6.0/7.0 включены еще две функции дискретных волновых преобразований:

Ф wave(V) — дискретное волновое преобразование действительных чисел с использованием четырехкоэффициентного волнового базиса Даубечи. Вектор V должен содержать 2" действительных значений, где п - целое число;

Ф iwave(V) — обратное преобразование относительно преобразования wave

(V — вектор размером 2").

Это довольно редкие функции, представляющие интерес для специалистов — разработчиков электронных фильтров.



Функции, возвращающие специальные характеристики матриц



Функции, возвращающие специальные характеристики матриц

Специальные характеристики матриц возвращаются следующими функциями:

cols(M) — возвращает число столбцов матрицы М;

rows(M) — возвращает число строк матрицы М;

rank(M) — возвращает ранг матрицы М;

tr(M) — возвращает след (сумму диагональных элементов) квадратной

матрицы М;

mean(M) — возвращает среднее значение элементов массива М;

median(M) — возвращает медиану элементов массива М;

condl(M) — возвращает число обусловленности матрицы, вычисленное в

норме L1;

cond2(M) — возвращает число обусловленности матрицы, вычисленное в

норме L2;

conde(M) — возвращает число обусловленности матрицы, вычисленное

в норме евклидова пространства;

condi(M) — возвращает число обусловленности матрицы, основанное на

равномерной норме;

norml(M) — возвращает L1, норму матрицы М;

norm2(M) — возвращает L2, норма матрицы М;

поппе(М) — возвращает евклидову норму матрицы М;

normi(M) — возвращает неопределенную норму матрицы М.



Функции встроенные и задаваемые пользователем



Функции встроенные и задаваемые пользователем

MathCAD имеет множество встроенных функций, которые обладают особым свойством: в ответ на обращение к ним по имени с указанием аргумента (или списка аргументов) они возвращают некоторое значение — символьное, числовое, вектор или матрицу. В систему встроен ряд функций, например функция вычисления синуса sin (x) аргумента х, логарифма \п (х) и т. д. Наряду со встроенными функциями могут задаваться и функции пользователя, отсутствующие в MathCAD. Благодаря встроенным функциям обеспечивается расширение входного языка системы и его адаптация к задачам пользователя.



Функции вычисления плотности вероятности распределения



Функции вычисления плотности вероятности распределения

Функции вычисления плотности вероятности распределения представлены

следующим набором:

Ф dbeta(x, s1, s2) —B-распределение (s1, s2>0 — параметры формы, 0<x<1);

dbinom(k, п, р) — биномиальное распределение (возвращает значение вероятности P(x=k), где п и k целые числа, причем 0<k<n и0<р<1);

Ф dcauchy(x, L, s) — распределения Коши (L — параметр разложения, s>0 — параметр масштаба);

dchisq(x, d) — Хи-квадрат-распределение (х, d>0, причем d — число степеней свободы);

Ф dexp(x, r) — экспоненциальное распределение (г, х>0);

dF(x, d1, d2) — распределение Фишера (d1, d2>0 — числа степеней свободы, х>0)',

Ф dgamma(x, s) — гамма-распределение (s>0 — параметр формы, х>0);

Ф dgeom(k, р) — геометрическое распределение (0<p<^i — вероятность успеха в отдельном испытании, k — целое неотрицательное число);

Ф dlnorm(x, р., о") — логнормальное распределение (р. — натуральный логарифм среднего значения, о">0 — натуральный логарифм среднеквадратичного отклонения, х>0)',

Ф dlogis(x, /, s) — логистическое распределение (/ — параметр разложения, s>0 — параметр масштаба);

Ф dnbinom(^, п, р) — отрицательное биномиальное распределение (и>0 и k>0 — целые числа, 0<p<i);

dnorm(x, р., а) — нормальное распределение (^ — среднее значение,

++ о>0 — среднеквадратичное отклонение);

dpois(k. Л) — распределение Пуассона (А>0, k — целое неотрицательное число);

dt(a', d) — распределение Стьюдента (d>0 — число степеней свободы, х — вещественное число);

dunif(-c, а, Ь) — равномерное распределение (а и b — граничные точки интервала, причем а<Ь и а<х<Ь);

Ф dweibull(x, s) — распределение Вейбулла (s>0 — параметр формы).



Функция для линейной регрессии общего вида



Функция для линейной регрессии общего вида

В MathCAD реализована возможность выполнения линейной регрессии общего вида При ней заданная совокупность точек приближается функцией вида

F(x, К1 ,К2, ., Kn)= K1, F1(x)+K2 F2(x)+ +КnFn(x)

Таким образом, функция регрессии является линейной комбинацией функций F1(x), F2(x), ., Fn(x), причем сами эти функции могут быть нелинейными, что резко расширяет возможности такой аппроксимации и распространяет ее на нелинейные функции

Для реализации линейной регрессии общего вида используется функция linfit(VX,VY,F) Эта функция возвращает вектор коэффициентов линейной регрессии общего вида К, при котором среднеквадратичная погрешность приближения облака исходных точек, если их координаты хранятся в векторах VX и VY, оказывается минимальной Вектор F должен содержать функции F1(x), F2(x), , Fn(x), записанные в символьном виде

Рис 11 24 поясняет проведение линейной регрессии общего вида с применением функции Unfit Процедура проведения вычислений настолько проста, что не нуждается в особых комментариях




Функция для нелинейной регрессии общего вида



Функция для нелинейной регрессии общего вида

Под нелинейной регрессией общего вида подразумевается нахождение вектора К параметров произвольной фучнкции F(x,K1,K2,...,Kn), при котором обеспечивается минимальная среднеквадратичная погрешность приближения облака исходных точек.

Для проведения нелинейной регрессии общего вида используется функция genfit(VX, VY, VS, F). Эта функция возвращает вектор К параметров функции F, дающий минимальную среднеквадратичную погрешность приближения функцией Р(х,К1,К2,...,Кп) исходных данных.

F должен быть вектором с символьными элементами, содержащими уравнение исходной функции и ее производных по всем параметрам. Вектор VS должен содержать начальные значения элементов вектора К, необходимые для решения системы нелинейных уравнений регрессии итерационным методом.

На рис. 11.27 показан пример выполнения нелинейной регрессии общего вида для нелинейной функции F(x,a,b)=a-exp(-b-x)+a-b.



Функция поиска корней многочлена polyroots



Функция поиска корней многочлена polyroots

Для поиска корней обычного полинома р(х) степени п MathCAD содержит очень удобную функцию:

polyroots(V)

Она возвращает вектор корней многочлена (полинома) степени п, коэффициенты которого находятся в векторе V, имеющем длину равную п+1.

Заметим, что корни полинома могут быть как вещественными, так и комплексными числами. Не рекомендуется пользоваться этой функцией, если степень полинома выше пятой-шестой, так как тогда трудно получить малую погрешность вычисления корней. На рис. 11.30 в конце документа приведен пример вычисления корней кубического полинома с применением функции polyroots.



Функция поиска корня нелинейного уравнения root



Функция поиска корня нелинейного уравнения root

Многие уравнения, например трансцендентные, и системы из них не имеют аналитических решений. Однако они могут решаться численными методами с )аданной погрешностью (не более значения, заданного системной переменной TOL). Для простейших уравнений вида F(x)=0 решение находится с помощью функции

гооt (Выражение, Имя_переменной)

Эта функция возвращает значение переменной с указанным уровнем, при котором выражение дает 0. Функция реализует вычисления итерационным методом, причем можно задать начальное значение переменной. Это особенно полезно, если возможно несколько решений. Тогда выбор решения определяется выбором начального значения переменной.



Функция предсказания



11.15. Функция предсказания

Весьма интересной является функция предсказания predikt(datai,k,N), где data — вектор данных, k — степень полинома регрессии и N — число точек. Она по ряду заданных равномерно расположенных точек позволяет рассчитать некоторое число N последующих точек, т. е. по существу выполняет жстраполяцию произвольной (но достаточно гладкой и предсказуемой) зависимости. На рис. 11.29 показано применение функции предсказания — экстраполяции.




Функция root в составе функции пользователя



Функция root в составе функции пользователя

Функцию root можно использовать и в составе функций пользователя, что нередко позволяет получать довольно простые решения для нетривиальных задач. Примером может служить вычисление неполной гамма-функции G(a,x), показанное на рис. 11.31.



Функция until и ее применение



Функция until и ее применение

Более актуальна задача реализации итерационных вычислений с их окончанием по некоторому заданному условию. Для этого система MathCAD содержит специальную операцию

until(Выражение_1, Выражение_2)

Эта операция-функция реализует итерационные вычисления и возвращает значение выражения 2, если выражение 1 больше или равно 0. В противном случае итерационные вычисления прекращаются.

На рис. 11.36 показано действие этой функции на другом классическом примере — вычислении квадратного корня из числа N итерационным методом Ньютона.

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




Функция условных выражений if



Функция условных выражений if

Более широкие возможности дает функция if для создания условных выражений:

if (Условие, Выражение 1, Выражение 2)

Если в этой функции условие выполняется, то будет вычисляться выражение 1, в противном случае — выражение 2 Заметим, что эта функция широко распространена в языках программирования.

На рис 11. 10 приведены примеры применения функции if для моделирования процессов однополупериодного и двухполупериодного выпрямления синусоиды (используется в электротехнике для преобразования переменного тока в пульсирующий одной полярности) Этот процесс иллюстрируется наглядной графикой



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



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

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

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



Иллюстрирует подготовку вектора...



Рис. 11.35 иллюстрирует подготовку вектора, содержащего десять чисел Фибоначчи. Этот пример соответствует вычислениям по рекуррентной формуле заданное число раз.




Иллюстрирует решение другой задачи...



Рис. 11.33 иллюстрирует решение другой задачи — поиск точек пересечения параболы отрезком прямой. В нашем случае с помощью функции Find решается система из двух уравнений (одно из них нелинейное) с ограничительными условиями, задающими область поиска корня (x<0 для отрицательного корня и х>0 для положительного).




Индексация элементов массивов



Индексация элементов массивов

Порядковый номер элемента, который является его адресом, называется индексом. Напоминаем, что нижняя граница индексации задается значением системной переменной ORIGIN, которая может принимать значение 0 или 1.

Имя массива естественно увязать с именами индексированных переменных, значениями которых являются элементы массива. Для этого достаточно в виде подстрочного индекса указать индекс элемента. Например, если третий из представленных массивов имеет имя V, то его элементами при ORIGIN=0 будут индексированные переменные:

Vo=0 V1=x V2=2x2 Vз-Зх3 V4=4x4

Векторы могут быть двух типов: векторы-строки и векторы-столбцы. Например:


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



Комплексные числа



Комплексные числа

Большинство вычислений система выполняет как с действительными, так и с комплексными числами, которые обычно представляются в алгебраическом виде:

Z = ReZ+ i* ImZ или Z = ReZ+ j* ImZ

Здесь ReZ — действительная часть комплексного числа Z, ImZ — его мнимая часть, а символы i или j обозначают мнимую единицу, т. е. корень квадратный из -1. Такое представление характерно и для системы MathCAD (за исключением того, что знак равенства не есть знак присваивания). Итак, если ReZ = 2, а ImZ = 3, то комплексная числовая константа в системе MathCAD должна быть задана в виде 2+ г* 3 или 2+ j* 3.

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



Квантили распределения



Квантили распределения

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

Ф qbeta(p, s1, s2) — квантили обратного бетта-распределения с параметрами формы s1 и s2;

qbinom(p, n, q) — количество успешных определений при п-м количестве испытаний при решении уравнения Бернулли при условии, что вероятность этого количества успешных определений есть р (q - вероятность успеха при однократном испытании (0<<7<1 и 0<=р<1);

Ф qcauchy(p, /, q) — квантили обратного распределения Коши со шкалой параметров 1 и s (s>0 и 0<p<i);

qchisq(p, d) — квантили обратного Хи-квадрат-распределения;

Ф qexp(p, r) — квантили обратного экспоненциального распределения, при котором г>0, определяет частоту (0<=р<1);

qF(p, d1, d2) — квантили обратного распределения Фишера, в котором d1 и d2 — степени свободы);

Ф qgamma(j0, s) — квантили обратного гамма-распределения;

Ф qgeomQo, q) — квантили обратного геометрического распределения;

Ф qlnorm(p, p., <т) — квантили обратного логнормального распределения;

Ф qlogis(p, /, s) — квантили обратного последовательного распределения;

Ф qnbinom(p, n, q) — квантили обратного отрицательного биномиального

распределения с размером п и вероятностью ошибки q;

qnorm(p, m, о) — квантили обратного нормального распределения со

средним значением р. и стандартным отклонением (г, qpois(p, Я) — квантили обратного распределения Пуассона;

qt(p, d) — квантили обратного распределения Стьюдента

((^определяет степени свободы, d>0 и 0<р<1);

qunif(p, a, b) — квантили обратного равномерного распределения;

Ф qweibull(q, s) — квантили обратного распределения Вейбулла.



Линейная и сплайновая аппроксимации функции



Рис.11.19 Линейная и сплайновая аппроксимации функции





Линейная регрессия



Рис.11.23 Линейная регрессия

Как видно на рис 11 23, прямая регрессии проходит в «облаке» исходных точек с максимальным среднеквадратичным приближением к ним Чем ближе коэффициент корреляции к 1, тем точнее представленная исходными точками зависимость приближается к линейной



Локальные переменные в теле функций пользователя



Локальные переменные в теле функций пользователя

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

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

А: =10 fun (x): =A* (l-exp (x))

поскольку переменная А определена до задания функции. Однако, если убрать строку с ее определением, задание функции fun (x) станет невозможным, точнее, в введенном выражении переменная А будет выделена как несуществующая. Разумеется, эту переменную можно определить глобально и после задания функции пользователя, используя для этого символ глобального присваивания =:

fun (x): = А* (1 - ехр (х)) А =10



Массивы-векторы



Массивы-векторы

Ниже представлено три пятиэлементных массива-вектора:

Номер элемента 0 1 2 3 4 Значение О 1 4 9 16 Значение а Ь с d e Значение 0 х 2* x^2 3*x^3 4* х4

Первый из представленных массивов — числовой, два других — символьные.



Математические выражения



Математические выражения

Функции (наряду с операторами) могут входить в математические выражения. Например, в выражении

У := 2* ln (x)+ i

Y — переменная, 1 и 2 — числовые константы,* и+ — операторы, ln (x) — встроенная функция с аргументом х. Напоминаем, что встроенные функции в данной книге выделяются полужирным шрифтом (за исключением примеров их записей в документах, где специальных выделений нет).

При выполнении символьных операций переменные р и е используются только в символьном виде. Это значит, что их числовые значения не вычисляются при выводе результатов вычислений. К примеру, число 2л=6. 141... выводится как 2п, а не как приближенное численное значение.



Матричные функции



Матричные функции

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

augment(Ml,M2) — объединяет в одну матрицы Ml и М2, имеющие одинаковое число строк (объединение идет "бок о бок");

identity(n) — создает единичную квадратную матрицу размером п*п;

stack(Ml,M2) — объединяет две матрицы Ml и М2, имеющие одинаковое число столбцов, располагая Ml над М2;

submatrix(A,ir,jr,ic,jc) — возвращает субматрицу, состоящую из всех элементов, содержащихся в строках от ir no jr и столбцов с ic по JC (irfjr и icfjc);

diag(V) — создает диагональную матрицу, элемент главной диагонали которой — вектор V;

matrix(ff2,n,f) — матрицу, в которой (i,j)-vi элемент содержит f(i,j), где г=0, 1,... т uj=0, 1,... п;

Re(M) — возвращает матрицу действительных частей матрицы М с комплексными элементами;

Im(M) — возвращает матрицу мнимых частей матрицы М с комплексными элементами.



Матрицы



Матрицы

Матрица может рассматриваться как совокупность ряда векторов одинаковой длины, например:


Элементы матриц являются индексированными переменными, имена которых совпадают с именами матриц. Но в этом случае для каждой индексированной переменной указываются два индекса: один — для номера строки, другой — для номера столбца. Например, для указанной матрицы М средний элемент обозначается как М1,1, а последний как М;2,2

Для задания векторов и матриц можно воспользоваться операцией Matrix... (Матрицы...) в позиции Math (Математика) основного меню, нажав клавиши Ctrl+V или введя пиктограмму с изображением шаблона матрицы. Это вызывает вначале появление диалогового окна, в котором надо указать размерность матрицы, т. е. количество ее строк т и столбцов п. Для векторов один из этих параметров должен быть равен 1. При m=1 получим вектор-столбец, а при п=\ — вектор-строку. Матрица является двумерным массивом с числом элементов тхп. Элементы векторов и матриц помещаются между большими квадратными скобками.



Обратное преобразование Фурье



Обратное преобразование Фурье

Перейдем к обратному БПФ. Функция ifft(V) реализует обратное (инверсное) преобразование Фурье для вектора V с комплексными элементами. Вектор V здесь имеет 2m+l элементов. Функция возвращает вектор D с действительными элементами.

Функция cifft(B) выполняет обратное преобразование Фурье по полному алгоритму, при котором как исходный, так и результирующий векторы или матрицы содержат элементы с комплексными значениями. Если задана матрица В, реализуется двумерное обратное преобразование Фурье. Заметим, что в ранних версиях эта возможность отсутствовала, но могла быть реализована (хотя и более сложным путем) с помощью одномерного БПФ.



Одномерная линейная аппроксимация



Одномерная линейная аппроксимация

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

При кусочно-линейной интерполяции, или аппроксимации, вычисления дополнительных точек выполняются по линейной зависимости. Графически это означает просто соединение узловых точек отрезками прямых, для чего используется следующая функция:

linterp(VX, VY, х)

Для заданных векторов VX и VY узловых точек и заданного аргумента х эта функция возвращает значение функции при ее линейной аппроксимации. При экстраполяции используются отрезки прямых с наклоном, соответствующим наклону крайних отрезков при линейной интерполяции.



Одномерная сплайн-интерполяция и сплайн-аппроксимация



Одномерная сплайн-интерполяция и сплайн-аппроксимация

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

Гораздо лучшие результаты дает сплайн-аппроксимация. При ней исходная функция заменяется отрезками кубических полиномов, проходящих через три смежные узловые точки. Коэффициенты полиномов рассчитываются так, чтобы непрерывными были первая и вторая производные. Линия, которую описывает сплайн-функция, напоминает по форме гибкую линейку, закрепленную в узловых точках (отсюда и название аппроксимации: splain — гибкая линейка).

Для осуществления сплайновой аппроксимации система MathCAD предлагает четыре встроенные функции. Три из них служат для получения векторов вторых производных сплайн-функций при различном виде интерполяции:

cspline(VX, VY) — возвращает вектор VS вторых производных при приближении в опорных точках к кубическому полиному;

pspline(VX, VY) — возвращает вектор VS вторых производных при приближении к опорным точкам параболической кривой;

lspline(VX, VY) — возвращает вектор VS вторых производных при приближении к опорным точкам прямой. Наконец, четвертая функция

interp(VS, VX, VY, x)

возвращает значение у(х) для заданных векторов VS, VX, VY и заданного значения x.

Таким образом, сплайн-аппроксимация проводится в два этапа. На первом с помощью функций cspline, pspline или Ispline отыскивается вектор вторых производных функции у(х), заданной векторами VX и VY ее значений (абсцисс и ординат). Затем, на втором этапе для каждой искомой точки вычисляется значение у(х) с помощью функции interp.



Операция векторизации



Операция векторизации

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

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

Если А и В — векторы, то АЧВ дает скалярное произведение этих векторов. Но то же произведение под знаком векторизации создает новый вектор, каждый 7-й элемент которого есть произведение J-X элементов векторов А и В

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



Операторы



Операторы

Операторы представляют собой элементы языка, с помощью которых можно создавать математические выражения. К ним, например, относятся символы арифметических операций, знаки вычисления сумм, произведений, производной и интеграла и т. д. После указания операндов (параметров операторов) операторы становятся исполняемыми по программе блоками. MathCAD позволяет задавать и свои новые операторы.



Операторы отношения (логические операторы)



Операторы отношения (логические операторы)

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

Оператор Клавиши Наименование операции

Х > Y Х > Y Х больше Y Х < Y Х < Y Х меньше Y

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

He следует путать оператор сравнения (знак равенства) с похожим знаком вывода значений переменных. В системе MathCAD знак равенства как оператор отношения имеет больший размер и более жирное написание (=), чем обычный знак равенства (=) — оператор вывода. Все операторы отношения могут вводиться самостоятельно в место расположения курсора. В этом случае по обе стороны от них появляются маленькие темные прямоугольники. Они являются шаблонами для указания подлежащих сравнению выражений. Например, если ввести знак "меньше", то на экране дисплея появится блок вида' • < •. Знак вывода при этом будет появляться с сообщением об ошибке — Missing operand (пропущенный операнд)

Необходимо отметить, что выражения с логическими операторами возвращают логическое значение, соответствующее выполнению или невыполнению условия, заданного оператором. Эти значения в системе MathCAD являются логической единицей (1), если условие выполнено, и логическим нулем (0), если оно не выполнено Математически значения логической единицы и нуля совпадают со значениями числовых констант 1 и 0. Например'

2 > 1 = 1 — условие выполнено, результат 1;

1 > 2 = 0 — условие не выполнено, результат^).

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

2* (5 > 0) = 2

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



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



Рис. 11. 5 Основные операции с данными файлового типа

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

READRGB (Имя_файла)

Эта операция стоит явно в стороне от других и скорее относится к системным операциям Она используется вместе с графическими файлами и возвращает массив из трех подмассивов, несущих данные о разложении цветного изображения на три основных цвета- красный, зеленый и синий Таким образом, операция выполняет функции цветоделения, используемого в полиграфии для цветной печати графиков и рисунков

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



Особенности локального и глобального присваивания переменным их числовых значений



Рис. 11. 1 Особенности локального и глобального присваивания переменным их числовых значений


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

Статус присваивания не следует путать со статусом самих переменных. Все переменные, описанные выше, являются глобальными, поскольку можно определять их в любом месте документа и также в любом месте изменять их значение. Локальные переменные в системе MathCAD содержатся в телах функций пользователя. Эти функции будут рассмотрены ниже.

Переменные могут быть и размерными, т. е. характеризоваться не только своим значением, но и указанием физической величины, значение которой они хранят. Для присваивания значений таким переменным используется знак =. На рис. 11. 2 представлены примеры работы с размерными переменными.

Проведение расчетов с размерными величинами и переменными особенно удобно при решении различных физических задач. При этом правильная




Переменные



Переменные

Переменные являются поименованными объектами, имеющими некоторое значение, которое может изменяться по ходу выполнения программы. Имена констант, переменных и иных объектов называют идентификаторами. Тип переменной определяется ее значением; переменные могут быть числовыми, строковыми, символьными и т. д.

Идентификаторы в системе MathCAD могут иметь практически любую длину, и в них могут входить любые латинские и греческие буквы, а также цифры. Однако начинаться идентификатор может только с буквы, например:

х, xl, alfa, X_coordinate. Кроме того, идентификатор не должен содержать пробелов. Некоторые спецсимволы (например, знак объединения _) могут входить в состав идентификаторов, другие (например, знаки операторов арифметических действии) — недопустимы. Нельзя использовать для идентификаторов буквы русского языка. Строчные и прописные буквы в идентификаторах различаются. Идентификаторы должны быть уникальными, т. е. они не могут совпадать с именами встроенных или определенных пользователем функций.

Переменные могут также быть строкового типа, например N: ="My_name". Для обработки строковых констант и переменных в MathCAD 7. 0 PRO введен ряд строковых функций, которые мы рассмотрим в дальнейшем. Заметим, что этот вид данных в прежних версиях системы MathCAD отсутствовал.



Полиномиальная регрессия



Рис. 11.25 Полиномиальная регрессия

На практике не рекомендуется делать степень аппроксимирующего поли нома выше четвертой — шестой, поскольку погрешности реализации регрессии сильно возрастают

Функция regress создает единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек, т е глобально Иногда полезна другая функция полиномиальной регрессии, дающая локальные приближения отрезками полиномов второй степени, — loess(VX, VY, span). Эта функция возвращает используемый функцией interp(VS,VX,VY,x) вектор VS, дающий наилучшее приближение данных (с координатами точек в векторах VX и VY) отрезками полиномов второй степени Аргумент span>0 указывает размер локальной области приближаемых данных (рекомендуемое начальное значение — 0,75) Чем больше span, тем сильнее сказывается сглаживание данных При больших span эта функция приближается к regress(VX,VY,2)

На рис 11 26 показан пример приближения сложной функции со случайным разбросом ее ординат с помощью совокупности отрезков полиномов вто рой степени (функция loess) для двух значений параметра span

На рис 11 26 нетрудно заметить, что при малом значении span, равном 0 05, отслеживаются характерные случайные колебания значений функции, тогда как уже при span=0,5 кривая регрессии становится практически гладкой К сожалению, из-за отсутствия простого описания аппроксимирующей




Понятие о массивах



Понятие о массивах

Важным типом данных в системе MathCAD являются массивы. Массив — имеющая уникальное имя совокупность конечного числа числовых или символьных элементов, упорядоченных заданным образом и имеющих определенные адреса. В системе MathCAD используются массивы двух наиболее распространенных типов: одномерные (векторы) и двумерные (матрицы).



Применение БПФ для спектрального разложения и синтеза прямоугольного импульса



Рис. 11.39 Применение БПФ для спектрального разложения и синтеза прямоугольного импульса

Техника проведения БПФ на примере разложения прямоугольного импульса и последующего его синтеза с помощью ряда Фурье с ограниченным (k-10) числом гармоник показана на рис. 11.39. Здесь исходный вектор задан с элементами действительного типа и используются функции fft и ifft.

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



Применение функции if



Рис. 11. 10 Применение функции if


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



Применение функции предсказания — экстраполяции



Рис. 11.29 Применение функции предсказания — экстраполяции

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



Применение операторов для работы с векторами



Рис. 11.12 Применение операторов для работы с векторами

РИС.11.13 Примеры матричных операций (начало)


MathCAD делает работу с векторами и матрицами столь же простой, как и с обычными числами и переменными Это, безусловно, способствует проникновению векторных и матричных методов математических вычислений в практику научно-технических и иных расчетов

Применение операторов для работы с матрицами показано на рис 11 13 Поскольку не все матричные операции поместились в окне документа, представленного на рис 1113, конец документа с другими матричными операциями показан на рис 11 14



Применение ранжированных переменных



Применение ранжированных переменных

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

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

Привыкшие к обычному программированию пользователи часто забывают, что ранжированная переменная — вектор. Поэтому они пытаются выполнять с такими операциями действия, корректные лишь для обычных (скалярных) переменных. Например, задают выражение вроде f: =i* 2, используя обычную переменную f, что приведет к явной ошибке — система укажет (красным цветом), что f не соответствует векторному типу. Однако если использовать выражение, например, вида

f,: = i^2

то будет получен новый вектор с именем f, элементы которого в нашем случае являются квадратами значений элементов вектора i. Более подробно особенности задания и применения векторов рассматриваются далее.

Ранжированные переменные широко применяются при построении графиков. Например, для построения графика некоторой функции f (x) прежде всего надо позаботиться о создании ряда значений переменной х, для этого она должна быть ранжированной.



Пример двумерной сплайн-интерполяции...



Рис. 11.20 Пример двумерной сплайн-интерполяции для построения контурного графика 3D-функ-ции, имеющей сложную поверхность

интерполяции). Сразу бросается в глаза гораздо большая информативность левого графика.



Пример проведения линейной регрессии общего вида



Рис. 11.24 Пример проведения линейной регрессии общего вида

Расположение координат точек исходного массива может быть любым, но вектор VX должен содержать координаты, упорядоченные в порядке их возрастания, а вектор VY ординаты, соответствующие абсциссам в векторе VX



Пример регрессии отрезками полиномов второй степени



Рис. 11.26 Пример регрессии отрезками полиномов второй степени

функции в виде отрезков полиномов этот вид регрессии широкого применения не нашел.



Пример решения простой некорректной задачи



Рис. 11.32 Пример решения простой некорректной задачи


Более правомерной является постановка вопроса о приближенном решении уравнения х2 =3 при приближенном задании x=10 в качестве начального приближения к решению. При этом для записи уравнения используется особый (жирный) знак равенства. Как видно на рис. 11.32, здесь обе функции (find и minerr) дают одинаковое решение.



Пример решения системы рекуррентных уравнений



Пример решения системы рекуррентных уравнений

В общем случае итерационные вычисления могут осуществляться по нескольким формулам, причем возможно перекрестное применение в них переменных. Такого рода вычисления в системе MathCAD необходимо выполнять в векторной форме.

Пример выполнения нелинейной регрессии общего вида



Рис. 11.27 Пример выполнения нелинейной регрессии общего вида


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

Вторая проблема связана с необходимостью применения функции genfit в ее стандартном виде. Поэтому пришлось заменить параметр а на k1 а параметр b на k2. В остальном операции в примере на рис. 11.27 достаточно очевидны.



Примеры линейной и сплайновой аппроксимаций



Примеры линейной и сплайновой аппроксимаций

На рис. 11.19 показано применение описанных функций для линейной и сплайновой аппроксимаций.

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



Примеры матричных операций (конец)



Рис. 11.14 Примеры матричных операций (конец)


На рис 1115 приведен ряд примеров применения наиболее распространенных матричных функций




Примеры на преобразование Фурье



Примеры на преобразование Фурье

На рис. 11.38 показано в комплексном виде прямое преобразование Фурье, а затем обратное. При этом преобразованный вектор полностью совпадает с исходным.



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



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

Х N X [ п Ввод нижнего индекса п X<N> Х Ctrl n Ввод верхнего индекса п На рис. 11.6 показаны примеры использования арифметических операторов Из приведенных примеров видно, что MathCAD оперирует как с действительными, так и комплексными величинами.

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



Примеры применения матричных функций (конец)



Рис. 11.16 Примеры применения матричных функций (конец)




Примеры применения матричных функций (начало)



Рис.11.15 Примеры применения матричных функций (начало)

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



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



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


Применение расширенных операторов значительно облегчает решение математических задач. Раньше для того, чтобы они выполняли определенные действия, приходилось писать отдельные программы



Примеры применения статистических функций



Рис. 11.22 Примеры применения статистических функций

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

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



Примеры применения строковых функций



Рис.11.42 Примеры применения строковых функций


В состав системных переменных добавлена еще одна — строковая переменная CWD. Она возвращает путь к текущему каталогу, где хранится документ, с которым в данный момент происходит работа.

Примеры применения векторных и матричных операций



Примеры применения векторных и матричных операций

На рис. 11.12 приведены примеры использования наиболее распространенных векторных операторов, описанных выше.




Примеры типового применения ранжированных переменных



Рис. 11. 3 Примеры типового применения ранжированных переменных

Полезно учитывать некоторые свойства таблиц вывода:

• число строк в них не может быть больше 50 (большие таблицы придется составлять из нескольких малых);

• числа в таблицах можно задавать в требуемом формате с помощью операций задания формата чисел;

• при использовании в таблице единиц размерности все данные таблицы будут содержать единицы размерности (поделите результат с размерными переменными на размерность для указания ее только в заголовке таблицы вывода);

Есть три способа показать значения векторов:

Х, = выводится обычная таблица вывода;

Х= выводится вектор, если число его элементов меньше 10;

Х= выводится таблица вывода со слайдером, если число элементов вектора больше 10.

В таблицы вывода можно и вставлять числовые значения, и корректировать их. Естественно, это меняет значения элементов соответствующего вектора.



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



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


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



Примеры задания функций пользователя



Примеры задания функций пользователя

Функции пользователя можно вводить для задания новых специальных математических функций. Ряд таких примеров содержится в справочнике системы и приведен на рис. 11. 11.

Заданные с применением знака: = функции являются определенными локально. Поэтому они должны быть заданы в документе до того, как будут использованы. С помощью знака = можно определить функции пользователя как глобальные. Тогда это можно сделать в любом месте документа, в том числе в конце. Если же функция нигде и никак не задана, то применять ее, естественно, нельзя. Попытки такого применения будут сопровождаться сообщениями об ошибке: имя функции окажется выделенным черным фоном.

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



Примеры задания и применения функций пользователя



Рис. 11. 11 Примеры задания и применения функций пользователя




Примеры задания и применения размерных переменных



Рис. 11. 2 Примеры задания и применения размерных переменных

размерность результата является дополнительным фактором, свидетельствующим о корректности таких расчетов

Использование незаданной переменной ошибочно Такая переменная отмечается красным цветом (в предшествующих версиях MathCAD — черным фоном) Использование несуществующих переменных в математических выражениях может привести к различным ошибкам Все они диагностируются и требуют исправления для продолжения вычислений



Присваивание переменным значений



Присваивание переменным значений

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

В версии MathCAD 7. 0 допустимо при первом присваивании вводить знак = (например, х=123). Система сама заменит его на знак: =. Эта возможность скорее исключение, чем правило; знаком присваивания все же является знак: =.

Если переменной присваивается начальное значение с помощью оператора: =, такое присваивание называется локальным. До этого присваивания переменная не определена и ее нельзя использовать. Однако с помощью знака = (три горизонтальные черточки) можно обеспечить глобальное присваивание, т. е. оно может производиться в любом месте документа. К примеру, если переменной присвоено таким образом значение в самом конце документа, то она будет иметь это же значение и в начале документа. Разумеется, в дальнейшем значение можно изменить и с помощью операции локального присваивания (см. рис. 11. 1).



Прямое и обратное преобразования Фурье для векторов с комплексными коэффициентами



Рис. 11.38 Прямое и обратное преобразования Фурье для векторов с комплексными коэффициентами





Прямое преобразование Фурье



Прямое преобразование Фурье

Если некоторая временная функция f(t) задана рядом отсчетов, переход от нее к параметрам ряда Фурье (амплитудам и фазам гармоник) называется прямым преобразованием Фурье, а обратный переход — обратным преобразованием Фурье. К сожалению, эти переходы связаны с вычислениями интегралов, подынтегральные функции которых быстро осциллируют (т. е. приобретают колебательный характер), что существенно затрудняет вычисление таких интегралов с заданной точностью и ведет к значительным затратам времени.

Поэтому были разработаны специальные методы быстрого преобразования Фурье — БПФ (Fast Fourier Transform). К сожалению, сложность этого процесса не позволяет детально описать эти методы в настоящей книге. Отослав читателя к специальной литературе [10, 14], займемся описанием функций, реализующих прямое и обратное БПФ в системе MathCAD. Они предоставляют возможность проводить указанные преобразования для данных в виде векторов с действительными и комплексными числами.

Функция fft(V) выполняет прямое БПФ для данных, представленных действительными числами — значениями исходного вектора V. Однако при этом вектор V должен иметь 2" составляющих, где п — целое число. Если число составляющих иное, функция отказывается от быстрого преобразования и вычисляет прямое преобразование Фурье гораздо медленнее.

Функция cfft(A) аналогична предыдущей, но реализует прямое преобразование Фурье для вектора А с комплексными элементами. Если А — матрица, реализуется двумерное преобразование. Введение функции fft(V) обусловлено тем, что преобразование для векторов с действительными элементами реализуется по более быстрому алгоритму (БПФ) и занимает меньше времени (при числе отсчетов, соответствующем 2", где п — целое число). В этом случае более прост и ввод исходных данных.



Работа дополнительных векторных и матричных функций



Рис. 11.17 Работа дополнительных векторных и матричных функций




Работа со случайными числами



Рис. 11.21 Работа со случайными числами

На рис. 11.21 представлен документ, в котором организована генерация вектора Х из 1000 случайных чисел, представлено их распределение и вычислены основные статистические параметры массива случайных чисел — вектора X. Этот документ демонстрирует и применение функции hist.

В MathCAD содержится множество различных статистических функций, возможности которых интересны специалистам по обработке статистической информации. Приведем сводку таких функций.



Расширенные арифметические операторы



Расширенные арифметические операторы

Система MathCAD содержит ряд расширенных арифметических операторов:

вычисления суммы ($) и произведения (#) ряда, вычисление производной (?) и определенного интеграла (&). Здесь в скобках даны символы, ввод которых задает вывод шаблона соответствующей операции. Шаблон содержит места, подлежащие заполнению числовыми или символьными значениями. Разумеется, для вызова шаблона можно использовать и соответствующую панель набора математических спецсимволов.

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



Реализация итерационных вычислений с помощью функции until



11.17. Реализация итерационных вычислений с помощью функции until



Рекуррентное вычисление чисел Фибоначчи



Рекуррентное вычисление чисел Фибоначчи

Система MathCAD позволяет реализовать итерационные вычисления, обычно осуществляемые по рекуррентным выражениям. Это такие выражения, при которых значение некоторой функции ищется по одному или нескольким предшествующим ее значениям. Классическим примером рекуррентных вычислений является создание чисел Фибоначчи. Как известно, два первых числа Фибоначчи определены как 1, а последующие есть сумма двух предыдущих.



Решение систем линейных уравнений



Решение систем линейных уравнений

В целом векторные и матричные операторы и функции системы MathCAD позволяют решать широкий круг задач линейной алгебры. К примеру, если задана матрица А и вектор В для системы линейных уравнений в матричной форме АхХ:=В, то вектор решения можно получить из очевидного выражения Х:=А-1*В. На рис. 11.18 приведен пример решения системы линейных уравнений.




Решение системы дифференциальных уравнений с применением функции rkfixed



Рис. 11.40 Решение системы дифференциальных уравнений с применением функции rkfixed


На рис. 11.41 показано решение той же системы с применением функции Rkadapt. Обычно она, благодаря автоматическому изменению шага решения,



Решение системы из двух дифференциальных уравнений с применением функции Rkadapt



Рис. 11.41 Решение системы из двух дифференциальных уравнений с применением функции Rkadapt


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

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

Если решение системы дифференциальных уравнений имеет вид гладких функций, то вместо функции rkfixed, описанной ранее, целесообразно применять новую функцию:

Bulstoer(y, x1, x2, n, F)

Она возвращает матрицу решения системы обыкновенных дифференциальных уравнений, правая часть которых (в виде первых производных неизвестных функций) записана в векторе F(x, у) при заданных в векторе у начальных условиях и при решении на интервале от x1 до x2 для n точек решения, не считая начальной точки. Вы можете заменить функцию Rkadapt в примере, показанном на рис. 11.40, на Bulstoer и опробовать последнюю в работе.



Решение системы из двух уравнений с помощью функции minerr



Рис. 11.34 Решение системы из двух уравнений с помощью функции minerr


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



Решение системы линейных уравнений



Рис. 11.18 Решение системы линейных уравнений

Для решения систем линейных уравнений в MathCAD PLUS введена встроенная функция

Isolve(A.B),

которая возвращает вектор Х для системы линейных уравнений А-Х=В при заданной матрице коэффициентов А и векторе свободных членов В. Если уравнений п, размерность вектора В должна быть п, а матрицы А — п-п. Пример применения этой функции также дан на рис. 11.18.



Сглаживание данных, представленных рядом значений XnY



Рис. 11.28 Сглаживание данных, представленных рядом значений XnY


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



Системные переменные



Системные переменные

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

Объект Ввод Назначение

л Ctrl+ P Число "пи" (3.14..)

е е Основание натурального

логарифма (2. 71..)

Ctrl+ Z Системная бесконечность (1 (^307)

% % Процент (0. 01)

TOL Погрешность численных методов (0. 001)

ORIGIN Нижняя граница индексации массивов (0)

PRNCOLWIDTH Число столбцов оператора WRITEPRN (8)

PRNPRECISSION Число десятичных знаков, используемых оператором WRITEPRN (4)

FRAME Переменная счетчика кадров при работе с анимационными рисунками (0)

Пять последних переменных вводятся набором их имен. Значения системных переменных, как и обычных, могут быть в дальнейшем изменены путем присваивания им новых значений. К примеру, значение е можно изменить так, что эта переменная будет означать заряд электрона, а вовсе не основание натурального логарифма. Однако рекомендуется этого не делать во избежание двойного истолкования таких переменных.



Статистические функции для векторов



Статистические функции для векторов

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

mean(V) — возвращает среднее значение элементов вектора V;

var(V) — возвращает дисперсию (вариацию) для элементов вектора V;

side(V) — возвращает среднеквадратичную погрешность, т. е квадратный корень из дисперсии, stdev(V) — задает стандартное отклонение элементов вектора V;

hist(int,V) — возвращает вектор частот попадания данных V в заданные интервалы int (служит для построения гистограмм) В функции hist(int,V) вектор int должен содержать значения границ, число попаданий данных из вектора V должно подсчитываться Если строится гистограмма из N элементов, то вектор int должен содержать N+1 элементов. Функция возвращает вектор из N элементов, числовые значения которых можно использовать для графического построения гистограмм.




Строковые функции



11. 20. Строковые функции

В версию MathCAD 7.0 PRO включен новый тип данных — строковые функции. Напоминаем, что они задаются как символьные строки в кавычках. Имеется также ряд строковых функций, указанных в документе, показанном на рис. 11.42.

Как видно из рис. 11.42, строковые значения могут быть присвоены переменным и над ними можно выполнять различные операции: объединять строки, выделять из них подстроки, преобразовывать строки в числа и в ASCII-коды (и наоборот), вычислять длину строки и т. д. Строковые функции можно применять и в программных конструкциях.



Строковые константы



Строковые константы

В описываемую версию MathCAD включены данные строкового типа. Как обычно, строковая константа — это строка, заключенная в кавычки, например:

"My_name" или "My first example". В строковую константу могут входить один или несколько символов либо слов.



Таблицы вывода



Таблицы вывода

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




Типовые статистические функции



Типовые статистические функции

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

Помимо уже упомянутой гамма-функции, широко применяемой в статистических расчетах, существуют следующие встроенные статистические функции скалярного аргумента х cnorm(x) — кумулятивная нормальная функция;

erf(x) — функция ошибок (или интеграл вероятности), md(x) — функция генерации случайных чисел, corr(VX,VY) — коэффициент корреляции двух векторов — VX и VY, cvar(X,Y) — коэффициент ковариации Х и Y

Через функцию erf(x) легко вычисляется дополнительная функция ошибок.

cerf(x) := 1- erf(x).

Функция rnd(x) при каждом обращении к ней возвращает случайное число с равномерным распределением на отрезке [0, 1] Эта функция широко применяется при статистическом моделировании различных физических процессов Числа являются не строго случайными — в действительности это повторяющиеся последовательности из большого количества чисел, распределение которых близко к равномерному



Векторные функции



Векторные функции

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

length(V) — возвращает длину вектора;

last(V) — возвращает индекс последнего элемента;

max(V) — возвращает максимальный по значению элемент;

min(V) — возвращает минимальный по значению элемент;

Re(V) — возвращает вектор действительных частей вектора с комплекс ными элементами;

Im(V) — возвращает вектор мнимых частей вектора с комплексными элементами;

e(i,j, k) — полностью асимметричный тензор размерности три. г, j и k

должны быть целыми числами от 0 до 2 (или между ORIGIN и ORIGIN+2, если ORIGINS). Результат равен 0, если любые два аргумента равны, 1 — если три аргумента являются четной перестановкой (0, 1, 2), и минус 1, если три аргумента являются перестановкой (0, 1, 2), кратной 2 и некратной 4.



Векторные и матричные операторы



Векторные и матричные операторы

Для работы с векторами и матрицами система MathCAD содержит ряд операторов и функций. Вначале рассмотрим операторы, введя следующие обозначения: для векторов — V, для матриц —Ми для скалярных величин — Z. Ниже представлены операторы для работы с векторами и матрицами:

Оператор V1+ V2 VI-V2 -V

V-Z

z* v, v* z

Z* M, M* Z V1* V2 M* V M1* M2 V

z

M

z

м-1

M" IV]

Ввод

V1+ V2 V1-V2 -V -M V-Z

z* v, v* z

Z* M, M* Z

V1* V2 M* V M1* M2

v/z

M/Z

ivr-i

M^

IV

Назначение оператора

Сложение двух векторов VI и V2 Вычитание двух векторов VI и V2 Смена знака у элементов вектора V Смена знака у элементов матрицы Вычитание из вектора V скаляра Z Умножение вектора V на скаляр Z Умножение матрицы М на вектор Z Умножение двух векторов VI и V2 Умножение матрицы М на вектор V Умножение двух матриц Ml и М2

Деление вектора V на скаляр Z

Деление матрицы М на скаляр Z

Обращение матрицы М Возведение матрицы М в степень п

Вычисление квадратного корня из ^V


¦М¦ ¦М Вычисление определителя матрицы

VT V Ctrl! Транспонирование вектора V

МT М Ctrl! Транспонирование матрицы М

VlxV2 VI Ctrl * V2 Кросс-умножение двух векторов VI и V2

V V" Получение комплексно-сопряженного

вектора М М" Получение комплексно-сопряженной

матрицы ZV Alt $ V Вычисление суммы элементов вектора V

V V Ctrl - Векторизация вектора V

М М Ctrl - Векторизация матрицы М

М<n> М Ctrl л п Выделение п-го столбца матрицы М

Vn V [ п Выделение п-го элемента вектора V

Мm,n М [(m,п) Выделение элемента (т,п) матрицы М

Следует отметить, что в некоторых операторах для ввода используется клавиша Ctrl, тогда как в ранних версиях системы MathCAD для этого предназначалась клавиша Alt (в последней версии Alt используется для начала активизации главною меню)



Восьмеричные и шестнадцатеричные числа



Восьмеричные и шестнадцатеричные числа

Система MathCAD может работать с восьмеричными и шестнадцатеричными числами. Восьмеричные числа имеют основание 8, так что один их разряд может иметь значения от 0 до 7. Такие числа в конце отмечаются латинской буквой О (от слова octal — восьмеричное).

Шестнадцатеричные числа имеют основание 16, и их разряд может иметь значения:

HEX 0123456789ABCDEF DEC О 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Шестнадцатеричные числа имеют в конце отличительный признак в виде буквы h или Н (от слова hexagonal — шестнадцатеричное). Под сокращенным названием этих чисел HEX приведены их десятичные значения DEC (от decimal — десятичное).

Применение восьмеричных и шестнадцатеричных чисел в обычной математике ограничено, и в дальнейшем мы эти числа (а также константы на их основе) использовать не будем. Однако отметим, что если шестнадцатеричное число начинается с буквы (например, АВС0), то система будет путать его с возможным именем переменной. Для устранения потенциальных ошибок такие числа надо начинать с цифры 0 (ноль). В математических выражениях можно комбинировать числа различного типа (например, 10+ 0eh = 18H).



Встроенные элементарные функции



11.6. Встроенные элементарные функции

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

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

Гиперболические функции sinh (z) — гиперболический синус cosh (z) — гиперболический косинус tanh (z) — гиперболический тангенс sech (z) — гиперболический секанс

csch (z) — гиперболический косеканс coth (z) — гиперболический котангенс

Обратные тригонометрические функции asin (2) — обратный тригонометрический синус асов (г) — обратный тригонометрический косинус atan (z) — обратный тригонометрический тангенс

Обратные гиперболические функции asinh (2) — обратный гиперболический синус acosh (2) — обратный гиперболический косинус atanh (z) — обратный гиперболический тангенс

Показательные и логарифмические функции ехр (г) — экспоненциальная функция 1п (г) — натуральный логарифм (по основанию е) log (2) — десятичный логарифм (по основанию 10)

Функции комплексного аргумента Ке (г) выделение действительной части г Im (z) — выделение мнимой части г arg (z) вычисление аргумента (фазы)

Обратите внимание, что большинство из этих функций набирается строчными латинскими буквами Рис 118 иллюстрирует работу с элементарными функциями как при действительном, так и при комплексном аргументе



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



11.7. Встроенные специальные математические функции

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



Ввод элементов векторов и матриц



Ввод элементов векторов и матриц

Для указания подстрочных индексов после имени переменной вводится знак открывающей квадратной скобки:

Ввод Изображение в окне

V3 [ 2 : V32 :=

Для элементов матрицы подстрочные индексы вводятся в круглых скобках с разделением их запятыми:

Ввод Изображение в окне редактирования

М [ ( 1, 2 ) : M1,2 : =

Индексы могут иметь только целочисленные значения Они могут начинаться с нуля или с целого числа, например с единицы, в соответствии со значением системной переменной ORIGIN



Ввод ограничений при решении систем нелинейных уравнений



Ввод ограничений при решении систем нелинейных уравнений

Ограничительные условия задаются обычно с помощью операторов — знаков отношения величин. Особо следует отметить знак приближенного равенства (в версиях MathCAD под Windows это жирный знак равенства, тогда как в более ранних версиях под MS-DOS это был знак приближенного равенства), который используется для указания начального значения переменных при итерационных вычислениях.

Оператор Клавиши Значение оператора

е1>е2 е1>е2 е1 больше е2 е1 < е2 е1<е2 е1 меньше е2 е1 > е2 el Ctrl ) е2 е1 больше или равно е2 е1 < е2 Ctrl ( е2 е1 меньше или равно е2 е1у:е2 el Ctrl # е2 е1 не равно е2 el=e2 elCtrl=e2 el равно е2



Вычисление функции G(a,x) с помощью функции root в составе функции пользователя



Рис. 11.31 Вычисление функции G(a,x) с помощью функции root в составе функции пользователя




Вычисление координат точек пересечения параболы прямой



Рис. 11.33 Вычисление координат точек пересечения параболы прямой

Еще один пример решения системы нелинейных уравнений (на этот раз с помощью функции minerr) показан на рис. 11.34.



Вычисление корней кубического полинома



Рис. 11.30 Вычисление корней кубического полинома


Как известно, кубическое уравнение обязательно имеет хотя бы один кубический корень х1. Он найден вначале функцией root. Два других корня могут оказаться и комплексными. Функция root может отыскивать и такие корни. Для поиска второго корня, х2, первый исключается делением F(x) на (х-х1). Соответственно для поиска третьего корня, х3, F(X) делится еще и на (х-х2). Эту процедуру можно распространить и на поиск корней полиномов более высокой степени, однако надо помнить, что найти корни полинома можно гораздо более изящным и простым способом — используя операцию символьных вычислений.



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



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


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



Выполнение многомерной регрессии



Выполнение многомерной регрессии

MathCAD позволяет выполнять также многомерную регрессию, самый типичный случай которой — приближение трехмерных поверхностей. Их можно характеризовать массивом значений высот z, соответствующих двумерному массиву Мху координат точек (х, у) на горизонтальной плоскости.

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

regress(Mxy, Vz, n) — возвращает вектор, запрашиваемый функцией

interp (VS,Mxy,Vz,V) для вычисления многочлена n-v. степени, который наилучшим образом приближает точки множества Мху и Vz. Мху — матрица т-2, содержащая координаты х и у. Vz — т-мерный вектор, содержащий z-координат, соответствующих т точкам, указанным в Мху;

loes(Mxy,Vz,span) — аналогична loes(VX,VY, span), но в многомерном случае;

interp(VS, Mxy,Vz,V) — возвращает значение z по заданным векторам VS (создается функциями regress или loess) и Мху, Vz и V (вектор координат х и у заданной точки, для которой находится z).

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



Задание функций пользователя



Задание функций пользователя

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

Имя_функции (Список_параметров): = Выражение

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

Примеры задания функций одной и двух переменных

fun (x): - 10. (1 - ехр (х)) module (x, y): - ^ х2+ у2



Задание матриц без применения их шаблонов



Рис. 11. 4 Задание матриц без применения их шаблонов


Такой способ задания матриц очень напоминает применяемый в обычных программах метод, при котором значения элементам матриц присваиваются в двух вложенных циклах с управляющими переменными и г. Однако это сходство чисто внешнее, так как в нашем случае ранжированные переменные i и j — векторы.



Задание ранжированных переменных



Задание ранжированных переменных

Ранжированные переменные — особый класс переменных, который в системе MathCAD зачастую заменяет управляющие структуры, называемые циклами (однако полноценной такая замена не является) Эти переменные имеют ряд фиксированных значений (либо целочисленных, либо в виде чисел), с определенным шагом меняющихся от начального значения до конечного.

Ранжированные переменные характеризуются именем и индексом каждого своего элемента Для создания ранжированной переменной целочисленного типа используется выражение

Name Nbegin Nend

где Name — имя переменной, Nbegin — ее начальное значение, Nend — конечное значение, — символ, указывающий на изменение переменной в заданных пределах (он вводится знаком точки с запятой,). Если Nbegin < Nend, то шаг изменения переменной будет равен+ 1, в противном случае -1

Для создания ранжированной переменной общего вида используется выражение

Name = Nbegin, (Nbegin+ Step) Nend

Здесь Step — заданный шаг изменения переменной (он может быть положительным, если Nbegin < Nend или отрицательным в противном случае).



Задание векторов и матриц



Задание векторов и матриц

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