ГЛАВА 10

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

Примечание
Вставлять в документ не очень знакомую спецфункцию легче всего, пользуясьдиалоговым окном Insert Function (Вставить функцию), которое вызываетсянажатием кнопки с надписью f(x) на стандартной панели инструментов(см. разд. "Знакомство с MathCAD" гл. 1). В этом диалоге функции разбиты нанесколько групп, поэтому несложно выбрать из них нужную. При выделении какой-либо группы в левом списке упомянутого диалога справа обнаруживаетсясписок функций, принадлежащих этой группе. Названия групп функций, появляющихся в левом списке диалогового окна Insert Function, приведены в скобках после названия каждого раздела этой главы.

10.1. Функции Бесселя (Bessel)
Функции Бесселя, по определению, являются решениями различных краевых задач для некоторых обыкновенных дифференциальных уравнений(ОДУ).
10.1.1. Обычные функции Бесселя
Функции Бесселя первого и второго рода обычно возникают как решенияволнового уравнения с цилиндрическими граничными условиями.

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


Рисунок 10.1
Рис. 10.1. Функции Бесселя первого рода

Рисунок 10.2
Рис. 10.2. Функции Бесселя второго рода
JO (х) - функция Бесселя первого рода нулевого порядка;л (х) - функция Бесселя первого рода первого порядка;Jn(m,x) - функция Бесселя m-ro порядка;YO (х) - функция Бесселя второго рода нулевого порядка, х>о;
YI (x) - функция Бесселя второго рода первого порядка, х>о;Yn(m,х) - функция Бесселя второго родат-го порядка, х>о;
 х - действительный безразмерный скаляр;
 m - порядок, целое число о<т<юо.
Внешний вид нескольких первых функций Бесселя первого и второго родапоказан на рис. 10.1 и 10.2 соответственно.
10.1.2. Модифицированные функции Бесселя
Перечислим их:
I0 (х) - модифицированная функция Бесселя первого рода нулевого порядка;
I1 (х) - модифицированная функция Бесселя первого рода первого порядка;
in(m,x) - модифицированная функция Бесселя первого рода m-го порядка;
ко (х) - модифицированная функция Бесселя второго рода нулевого порядка, х>о;
К1(х) - модифицированная функция Бесселя второго рода первого порядка, х>о;
кп(т,х) - модифицированная функция Бесселя второго рода m-го порядка, х>о;
 х - действительный безразмерный скаляр;
 m - порядок, целое число о<т<юо.
Примеры нескольких первых модифицированных функций Бесселя показаны на рис. 10.3 и 10.4.

Рисунок 10.3
Рис. 10.3. Модифицированные функции Бесселя первого рода

Рисунок 10.4
Рис. 10.4. Модифицированные функции Бесселя второго рода
10.1.3. Функции Эйри
Функции Эйри являются независимыми решениями ОДУ у'' =ху. Их видпоказан на рис. 10.5. Итак:
Ai (х) - функция Эйри первого рода;Bi (x) - функция Эйри второго рода; х - действительный безразмерный скаляр, х<103.892.

Рисунок 10.5
Рис. 10.5. Функции Эйри
10.1.4. Функции Бесселя-Кельвина
Комплексная комбинация функций Бесселя-Кельвина вида ber(n,x) ++i-bei(n,x) является решением соответствующего ОДУ, зависящего от параметра п. Вид графиков функции bei для п=1 и 2 показан на рис. 10.6.
bei(n,x) - мнимая часть функции Бесселя-Кельвина порядка п;ber(n,x) - действительная часть функции Бесселя-Кельвина порядка п;
 п - порядок (безразмерное неотрицательное целое число);
 х - действительный безразмерный скаляр.

Рисунок 10.6
Рис. 10.6. Функции Бесселя-Кельвина
10.1.5. Сферические функции Бесселя
График сферических функций Бесселя первого порядка показан на рис. 10.7.
js (п,х) - сферическая функция Бесселя первого рода порядка п, х>о;ys (n,x) - сферическая функция Бесселя второго рода порядка п, х>о;
 п - порядок (целое число), п>200;
 х - действительный безразмерный скаляр, х>о.

Рисунок 10.7
Рис. 10.7. Сферические функции Бесселяпервого порядка
10.2. Функции работы
с комплексными числами (Complex Numbers)
В MathCAD имеется несколько функций, облегчающих работу с комплексными числами.
Re(z) - действительная часть комплексного числа z;
im(z) - мнимая часть комплексного числа z;
arg(z) - аргумент комплексного числа z,-7i<arg(z)<n;
csgn(z) - функция комплексного знака числа (возвращает либо о, еслиz=o; либо 1, если Re(z)>o, или если Re(z)=o и im(z)>o; либо -1 - в остальных случаях);
signum(z) - возвращает 1, если z=o, и z/|z| - в остальных случаях; z - действительное, мнимое или комплексное число.
Комплексное число можно ввести как обычно, в виде суммы действительной и мнимой частей, либо как результат любого комплексного выражения.Несколько примеров действия функций работы с комплексными числамиприведены в листингах 10.1-10.3.
Листинг 10.1. Базовые функции работы с комплексными числами
Листинг 10.1
Листинг 10.2. Пример действия функции csgn
Листинг 10.2
Листинг 10.3. Пример действия функции signum
Листинг 10.3
10.3. Логарифмы и экспонента(Log and Exponential)
Перечислим без комментариев хорошо известные логарифмические функции (рис. 10.8) и экспоненциальную функцию:
exp(z) - значение е (основание натурального логарифма) в степени z;in(z) - натуральный логарифм;log(z) -десятичный логарифм;iog(z,b) - логарифм z по основанию b.

Рисунок 10.8
Рис. 10.8. Логарифмические функции
10.4. Тригонометрические функции(Trigonometric)
acos(z) -арккосинус;
acot(z) -котангенс;
acsc(z) - арккосеканс (листинг 10.4);
angle (х, у) - угол между точкой (х,у) и осью ох;
asec(z) -арксеканс;
asin(z) - арксинус (листинг 10.4);
atan(z) -арктангенс;
atan2(x,y) - угол, отсчитываемый от оси ох до точки (х,у)(листинг 10.5);
cos(z) - косинус;
cot(z) -котангенс;
csc(z) - косеканс (листинг 10.4);
sec(z) - секанс;
sin(z) - синус (листинг 10.4);
tan(z) - тангенс;
 z - безразмерный скаляр.

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

Аргумент тригонометрических функций может быть комплексным.
Листинг 10.4. Примеры тригонометрических функций
Листинг 10.4
Листинг 10.5. Примеры расчета угла между прямой и осью ох
Листинг 10.5
Листинг 10.6. Расчет тригонометрических функций в градусах
Листинг 10.6
10.5. Гиперболические функции (Hyperbolic)
Гиперболические функции, согласно определению, выражаются через различные комбинации ez и e"z (пример приведен в листинге 10.7). Аргументгиперболических функций также может быть комплексным. Графики трехосновных гиперболических функций показаны на рис. 10.9.
acosh(z) - гиперболический арккосинус;acoth(z) - гиперболический котангенс;asinh(z) - гиперболический арксинус;acsch(z) - гиперболический арккосеканс;atanh(z) - обратный гиперболический тангенс;asech(z) - обратный гиперболический секанс;cosh(z) -гиперболический косинус;coth(z) - гиперболический котангенс;sinh(z) - гиперболический синус;csch(z) - гиперболический косеканс;tanh(z) - гиперболический тангенс;sech(z) - гиперболический секанс; z - безразмерный скаляр.
Листинг 10.7. Пример гиперболических функций
Листинг 10.7

Рисунок 10.9
Рис. 10.9. Основные гиперболические функции
10.6. Другие спецфункции (Special)
Приведем перечень остальных спецфункций, которые рассчитываютсяMathCAD встроенным образом. Действие некоторых функций иллюстрируется листингом 10.8, а некоторые полиномы - графиками на рис. 10.11-10.13.
erf (х) - функция ошибок (см. разд. "Нормальное (Гауссово) распределение"гл. 13);
erfc(x)=l-erf(x);
fhyper (а,b,с,х) - гауссова гипергеометрическая функция;
mhyper (а,b,х) - конфлюэнтная гипергеометрическая функция;
 а, b, с - параметры;
 х - действительный скаляр, -1<х<1.Gamma (z) - гамма-функция Эйлера;
 z - скаляр, | z <1.
Gamma (а,х) - неполная гамма-функция порядка а;
 х - действительный положительный скаляр.

Примечание
Гамма-функция в документе MathCAD отображается греческой буквой Г(листинг 10.8).

Нег(п,х) - полином Эрмита порядка п с аргументом х;
 п - порядок (неотрицательное целое число);
 х - скаляр.
ibeta(a,x,y) - неполная бета-функция для х и у с параметром а;
 а - действительный скаляр, о<а<1;
 х,у - действительные скаляры, х>о, у>о.
Jac(n,a,b,x) - полином Якоби степени п в точке х с параметрами а и b;Lag(n,x) - полином Лагерра степени п в точке х (рис. 10.10);Leg(n,x) - полином Лежандра степени п в точке х (рис. 10.11);
 п - порядок (неотрицательное целое число);
 х - действительный скаляр;
 а,b - действительные скаляры, а>-1, b>-1.
Tcheb(n,x) - полином Чебышева первого рода степени п в точке х(рис. 10.12);
ucheb(n,x) - полином Чебышева второго рода степени п в точке х(рис. 10.12);
 п - порядок (неотрицательное целое число);
 х - действительный скаляр.
Листинг 10.8. Примеры вычисления некоторых спецфункций
Листинг 10.8

Рисунок 10.10
Рис. 10.10. Полиномы Эрмита

Рисунок 10.11
Рис. 10.11. Полиномы Лаггера

Рисунок 10.12
Рис. 10.12. Полиномы Лежандра

Рисунок 10.13
Рис. 10.13. Полиномы Чебышева
10.7. Строковые функции (String)
Приведем перечень функций, блаагодаря которым пользователь может оперировать со строковыми переменными, подобно операциям с числами:
concat(si,s2,...) - строковая переменная, полученная объединениемстроковых переменных или констант si, S2,... (листинг 10.9);
error (s) - возвращает строку s как сообщение об ошибке (рис. 10.14);
isstring(x) - возвращает 1, если х строковая переменная, и о - в остальных случаях (листинг 10.10);
num2str(z) - возвращает строку, чьи знаки соответствуют десятичномузначению числа z (листинг 10.10);

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

search(s,Subs,m) - стартовая позиция подстроки Subs в строке s при поиске, начиная с позиции т, при неуспешном поиске возвращает -1(листинг 10.9);
str2num(S) - преобразование строкового представления числа s (в любойформе) в число (листинг 10.10);
str2vec(S) - преобразование в вектор ASCII-кодов строки s (листинг 10.10);
strien(S) - количество знаков в строке s (листинги 10.9, 10.10);
substr(s,m,n) - подстрока, полученная из строки s выделением п знаков, начиная с позиции m в строке s (листинг 10.9);
vec2str (v) - строковое представление элементов вектора v ASCII-кодов;
 s - строка;
 v - вектор ASCII-кодов (целых чисел, o<v<255).
Листинг 10.9. Примеры использования строковых функций
Листинг 10.9
Листинг 10.10. Функции взаимных преобразований чисел и строк
Листинг 10.10

Рисунок 10.14
Рис. 10.14. Использование функции создания сообщения об ошибке
10.8. Функции сокращения и округления(Truncation and Round-Off)
ceii(x) - наименьшее целое, не меньшее х (листинг 10.11);
floor (х) - наибольшее целое число, меньшее или равное х (листинг 10.11);
round (х,п) - при п>о возвращает округленное значение х с точностью доп знаков после десятичной точки, при п<о - округленное значение х с пцифрами слева от десятичной точки, при п=о - округленное до ближайшего целого значение х (листинг 10.12);
trunc(x) - целая часть числа (листинг 10.11); х - действительный скаляр или целое число.
Листинг 10.11. Функции сокращения и округления
Листинг 10.11
Листинг 10.12. Округление чисел
Листинг 10.12

Примечание
При округлении не забывайте о принципах представления чисел в MathCAD.Чтобы отобразить нужное количество знаков после десятичной точки, воспользуйтесь диалогом Result Format (Формат результата) (см. гл. 4).

10.9. Кусочно-непрерывные функции(Piecewise Continuous)
heaviside step(x) - функция Хевисайда, возвращает 1, если х>о, и о -в остальных случаях (рис. 10.15);
 х - действительный скаляр.
if(cond,x,y) - возвращает х, если логическое условие cond верно (неноль), и у в остальных случаях (листинг 10.13);
Kronecker delta (х, у) - дельта-символ Кронекера: возвращает 1, еслих=у, иов остальных случаях (рис. 10.15);
sign(x) - возвращает о, если х=о, 1, если х>о, и -1 - в остальных случаях (листинг 10.13);
 х - действительное число.

Примечание
В документах символ Кронекера обозначается греческой буквой 5, а функцияХевисайда - буквой Ф.


Рисунок 10.15
Рис. 10.15.ФункцииКронекера и Хевисайда
Листинг 10.13. Функции условия и знака
Листинг 10.13
10.10. Функции преобразования координат (Vector and Matrix)
В MathCAD 2001 появилось семейство новых функций, позволяющих перейти от одних координат к другим, как на плоскости, так и в пространстве:
xy2pol (х,у) - преобразование прямоугольных координат в полярные;роl2ху(г,6) - преобразование полярных координат в прямоугольные;angle (х, у) - угол между точкой (х,у) и осью ох (см. разд. 10.4)',
atan2(x,y) - угол, отсчитываемый от оси ох до точки (х,у)(см. разд. 10.4)',
xyz2cyi (x,y, z) - преобразование прямоугольных координат в цилиндрические;
cyl2xyz(г,8,z) - преобразование цилиндрических координат в прямоугольные;
xyz2sph(x,y, z) - преобразование прямоугольных координат в сферические;
sph2xyz (г,е,ф) - преобразование сферических координат в прямоугольные;
 х, у - прямоугольные координаты на плоскости;
 х,у, z - прямоугольные координаты в пространстве;
 r,е - полярные координаты на плоскости;
 r,e, z - цилиндрические координаты;
 г, В, ф - сферические координаты.
Несколько примеров преобразования координат приведены в листингах10.14 и 10.15. Обратите внимание на возможность ввода аргументов этихфункций как в виде списка, так и в виде вектора.
Листинг 10.14. Функции преобразования координат на плоскости
Листинг 10.14
Листинг 10.15. Функции преобразования координат в пространстве
Листинг 10.15
10.11. Финансовые функции (Finance)
Начиная с версии 2000, в MathCAD появились функции, облегчающие финансовый анализ. Приведем список этих функций, не вдаваясь в поясненияи надеясь на то, что заинтересованный читатель найдет подробное описаниеи практические примеры их применения в справочной системе MathCAD.
cnper(rate,pv,fv) - отвечает числу составных периодов, необходимыхдля получения будущего значения вклада при заданных текущем значении вклада и проценте начислений;
 rate - фиксированный процент по вкладу; должен быть действительным скаляром, rate>-i;
 pv - текущее значение вклада, pv>o;
 fv - будущее значение вклада, fv>o.
crate (nper,pv,fv) - отвечает фиксированному проценту начислений повкладу на период, необходимый для прироста от текущего значениявклада до будущего значения при заданном числе составных периодов;
 nрег - число составных периодов; должно быть целым числом,
nрег>1;
 pv - текушее значение, pv>o;
 f v - будущее значение вклада, fv>o.
cumint(rate, nper, pv, start, end, [type] ) - отвечает совокупному проценту по заему между начальным и конечным периодами при фиксированномпроценте, общем числе составных периодов и текущем значении заема;
cumprnfrate, nper, pv, start, end, [type]) - отвечает совокупной сумме по заему между начальным и конечным периодами при фиксированномпроценте, общем числе составных периодов и текущем значении заема;
 rate - фиксированный процент по вкладу; должен быть действительным скаляром, rate>o;
 nper - общее число составных периодов; должно быть положительным целым числом;
 pv - текущее значение заема, pv>o;
 start - начальный период накопления; должен быть положительнымцелым числом;
 end - конечный период накопления; должен быть положительнымцелым числом; start< end;
 type=o для платежа, сделанного в конце периода, или 1 для платежа, iсделанного в начале периода. I
eff(rate,nper) - отвечает эффективной ежегодной процентной ставкепри данной номинальной ежегодной процентной ставке и числе составных периодов в год;
 rate - номинальная процентная ставка; должна быть действительнымскаляром;
 nper - общее число составных периодов в год, nper >o.
fv(rate,nper,pmt, [ [pv], [type] ]) - соответствует будущему значениювклада или заема через особое число составных периодов, установленныхпериодически, при постоянных платежах и фиксированной процентнойставке;
 rate - фиксированная процентная ставка за период; должна бытьдействительным скаляром, rate>o;
 nper - общее число составных периодов в год, nper >o;
 pv - текущее значение заема;
 type=o для платежа, сделанного в конце периода, или 1 для платежа,сделанного в начале периода.
fvadj (prin,v) - соответствует будущему значению ежегодной общейсуммы капитала, на который начисляются проценты, при применениисерии составных процентных ставок;
 prin - ежегодная общая сумма;
 v - вектор процентных ставок, каждая из которых применяется с тойже самой основной суммой и процентами с нее за период времени.
fvc(rate,v) - соответствует будущему значению серии денежных потоков, происходящих с регулярными интервалами, и приносящими специальную процентную ставку;
 rate - фиксированная процентная ставка за период; должна бытьдействительным скаляром;
 v - вектор регулярных денежных потоков.
ipmt(rate,per,nper,pv, [ [fv], type] ]) - соответствует процентному платежу по вкладу или заему за данный период, основанному на периодичности, постоянных платежах через данное число составных периодов,использующих фиксированную процентную ставку и особое текущеезначение;
 rate - фиксированная процентная ставка за период, rate>o;
 per - период, за который вы хотите найти ставку; должен быть положительным целым числом;
 nper - общее число составных периодов, per< nper;
 pv - текущее значение;
 fv - будущее значение;
 type=o для платежа, сделанного в конце периода, или i для для платежа, сделанного в начале периода.
irr(v, [guess]) - отвечает внутренней ставке возврата для серии денежных потоков, происходящих с регулярными интервалами;
 v - вектор денежных потоков, определяемых за регулярные интервалы; должен состоять по крайней мере из одного положительного и отрицательного числа;
 guess - численное значение, которым вы предполагаете аппроксимировать ответ, если им пренебрегается, то guess=o.i(io%).
mirr (v, fin_rate,rein_rate) - соответствует модифицированной Процентной ставке возврата для серии денежных потоков с регулярными интервалами при условии, что ставка финансирования подлежит оплатев соответствии с суммой заимствования, а ставка реинвестирования приносит доход с суммы, которую вы повторно инвестируете;
 v - вектор денежных потоков, определяемых за регулярные интервалы; он должен состоять по крайней мере из одного положительного иотрицательного числа;
 f in_rate - финансовая ставка платежа по заимствованным денежнымпотокам;
 rein_rate - ставка реинвестирования.
nom(rate,nper) - соответствует номинальной процентной ставке, включающей эффективную ежегодную процентную ставку и число составныхпериодов за год;
 rate - эффективная ежегодная процентная ставка; должна быть действительным скаляром, rate>-i;
 nper - общее число составных периодов за год, прег>о.
npv(rate,v) - вычисляет чистое текущее значение вклада, включающеескидки и регулярные денежные потоки;
 rate - фиксированная процентная ставка, с которой вклад зарабатывает процент за период; должна быть действительным скаляром;
 v - вектор регулярных денежных потоков.
nper (rate,pmt,pv, [ [fv], [type] ]) - отвечает числу периодов для вкладаили заема, основанных на периодичности, постоянных платежах, использующих фиксированную процентную ставку и особое текущее значение;pmt (rate, nper, pv, [ [fv], [type]]) - соответствует платежу по вкладу илизаему, основанному на периодичности, постоянных платежах через данное число составных периодов, использующих фиксированную процентную ставку и особое текущее значение;
ppmt (rate,per,nper,pv, [ [fv], [type] ]) - соответствует платежу по общей сумме вклада или заема, основанному на периодичности, постоянных платежах через данное число составных периодов, использующихфиксированную процентную ставку и особое будущее значение;pv(rate,nper,pmt, [ [fv], [type] ]) - соответствует текущему значениювклада или заема, основанному на периодичности, постоянных платежахчерез данное число составных периодов, использующих фиксированнуюпроцентную ставку и особый взнос;
rate (nper,pmt, pv, [ [fv], [type], [guess] ]) - соответствует процентнойставке на период вклада или заема при особом числе периодических составных периодов, постоянных платежах и особом текущем значении;
 rate - фиксированная процентная ставка;
 per - период;
 nper - общее число составных периодов за год; должно быть положительным целым числом;
 pmt - платеж, делаемый каждый период;
 pv - текущее значение вклада;
 fv - будущее значение вклада;
 type=o для платежа, сделанного в конце периода, или 1 для платежа,сделанного в начале периода;
 guess - численное значение, которым вы предполагаете аппроксимировать ответ, если им пренебрегается, то guess=o.oi (io%).

Глава 9 Содержание Глава 11