Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 16
Текст из файла (страница 16)
В менюBuilt-in можно указать, нужно ли вести контроль за переопределением встроенныхфункций (пункт Functions), размерностей (пункт Units), констант (пункт Constants), переменных (пункт Variables). В меню User Defined можно определить, необходимо ли отслеживать переопределение пользовательских функций (пункт Functions), переменныхсо скалярными значениями (пункт Scalar Variables), переменных, значениями которыхявляются матрицы или вектора (пункт Vectors and Matrices).
Полностью отключить отслеживание переопределений можно, сняв флажок Show warnings on redefenitions of:(Отображать предостережения при переопределениях:).Описанный выше контроль за переопределением предназначен исключительно дляинформирования пользователя. Однако можно ли действительно решить проблемуперекрывания идентификаторов? К примеру, можно ли добиться того, чтобы в документе использовалась переменная N и при этом была доступна размерность N (ньютон)? В Mathcad 12 появился новый оператор, который делает это возможным. Называется он оператором пространства имен (Namespace operator).Пространство имен — это классическое понятие программирования, которое появилось на заре развития объектно-ориентированных методов для снижения риска конфликта идентификаторов при написании объемных программ. Суть этого понятия заключается в том, что программа разделяется на автономные блоки — пространстваимен.
Переменные и функции напрямую «видят» только те элементы, которые от-2.2. Задание переменных и функций •:• 6 5носятся к тому же пространству имен, что и они сами. Если же необходимо обратитьсяк переменной или функции другого пространства имен, то оно должно быть явно адресовано.
Если отдельные блоки программы малы и каждый из них создается одним программистом, то использование пространств имен сводит вероятность конфликта идентификаторов практически к нулю.Использование оператора Namespace дает возможность имитировать пространства именв Mathcad. Чтобы задействовать этот оператор, нужно проделать следующие шаги.1. Введите имя переменной или функции.2. Поставив курсор ввода правее последней буквы имени, нажмите Ctrl+Shift+N. Приэтом появится оператор Namespace, который представляет собой нижний индексс квадратными скобками.
Например:sin Q3. В квадратных скобках укажите, к какому пространству имен относится данная переменная или функция. Всего в Mathcad четыре пространства имен:• т с — к этому пространству имен принадлежат все встроенные функции, переменные и константы;• unit — пространство имен единиц измерения;• user — к этому пространству относятся пользовательские функции, реализованныев виде встраиваемых в Mathcad компонентов (к примеру, пакеты расширений);• doc — функции и переменные, заданные непосредственно в документе.
Если функция или переменная несколько раз переопределялась, то использовано будетпоследнее определение. Если пространство имен не указано, то первым по умолчанию на предмет наличия переменной или функции просматривается данноепространство.К примеру, чтобы вычислить значение синуса на основании встроенной функции,нужно набрать:sin[mcj "Оператор пространства имен можно использовать только в численных расчетах. Припроведении подсчета аналитически наличие данного оператора приведет к ошибке.Пример 2.6.
Использование оператора пространства именЗададим переменную с именем N:N:=5Переменная N перекрывает размерность N (ньютон). Поэтому задать переменную с такой размерностью без использования оператора Namespace не получится:Force : = 1 ONForce = 50Чтобы задать переменную с размерностью силы, нужно посредством оператора Namespace указать, что N относится к пространству имен единиц измерения unit:Force :• 10N|- u n i t ]Force = 10 N66•:• Глава 2. Вычисления и типы данныхг2.3. Проведение расчета численноПри работе в Mathcad нужно очень четко понимать, что в программе реализовано двапринципиально разных подхода к вычислениям — численный и символьный.
Болеетрадиционный и простой тип расчета — численный. Он характеризуется тем, что подсчет значения функции или выражения производится приблизительно, для чего используются специальные численные алгоритмы. Символьный же подсчет происходиттак же, как при решении задач на бумаге (то есть используются разного рода аналитические преобразования). В этом разделе мы подробно обсудим особенности численныхрасчетов. Символьной же математике посвящен следующий раздел.2.3.1. Оператор численного выводаЗначение многих функций или выражений может быть подсчитано как символьно, таки численно. Чтобы система могла определить, каким именно способом должен бытьпроизведен расчет, существуют два оператора вывода: численный и символьный.В качестве численного оператора вывода выступает обычное «=». Ввести его можно какс клавиатуры, так и с двух панелей семейства Math (Математические): Calculator (Калькулятор) и Evaluation (Выражение), на которых он носит название Evaluate Numerically(Подсчитать численно).Чтобы найти численное значение некоторого выражения, нужно просто ввести посленего оператор «=».Пример 2.7.
Расчет численного значения выражениякх:= —3у:=452у -sin(x)i|-23= 8.251 xlO?-9= 1.876x10-5Аналогично можно найти численное значение и некоторой функции.Пример 2 . 8 . Численный расчет значения функцииf(x,y) :=х:=622х +ух-уу:=5Впрочем, для того чтобы подсчитать значение корректно заданной функции, совершенно не обязательно определять величины переменных выше ее выражения. Для этого можно просто записать в скобках ее имени вместо буквенных обозначений переменных их численные значения. Такой способ намного эффективнее описанного выше,поскольку позволяет получать одновременно значение функции при разных величинах переменных.2.3. Проведение расчета численно •67Пример 2.9. Расчет численного значения функции в нескольких точкахf(5,6) = -61f(6,5)=61f(3,7)=-14.5f(67,98) =-454.613По умолчанию отображается лишь четыре знака мантиссы числа.
Как увеличить количество отображаемых знаков, рассказывается в подразд. 2.3.4.Точность численного расчета в Mathcad ограничена 17 знаками после запятой. Поэтому, если в ходе расчета будет получено число, меньшее 10~17, оно будет округлено до307нуля.
Верхняя граница при численных расчетах равна машинной бесконечности: 10 .Чтобы разобраться в природе данных ограничений, внимательно прочитайте следующий подраздел.2.3.2. Особенности представления чисел и проведенияарифметических расчетовПри проведении расчетов численно (в отличие от символьных расчетов) Mathcad использует аппаратно реализованные арифметические инструменты самого компьютера,оперируя 64-битными числами с плавающей точкой.
Именно отсюда проистекают всеособенности и недостатки численных расчетов, которые на первый взгляд могут показаться следствием несовершенства самой программы.В математике считается, что множество чисел бесконечно. Это означает, что число может быть как сколь угодно большим, так и сколь угодно малым. Оно может быть образовано любым количеством цифр. Так, существуют бесконечные дроби и бесконечныетрансцендентальные константы (например, число я или число е). Но в реальном миревсе конечно. Даже вселенная имеет границы. Ограничена и память компьютера. А таккак на каждую цифру числа нужно выделить несколько бит, то любая вычислительнаямашина считает с конечной точностью.Точность вычислений определяется тем, сколько памяти выделяется на хранение каждого числа.
На современных компьютерах используется 64-битный формат двойнойточности (соответственно формат одинарной точности — 32-битный). Это позволяетнапрямую закодировать 264=18 446 744 073 709 551 616 целых чисел. Совсем немного,не правда ли? На практике приходится работать куда с большим количеством числовых значений. Как же «запихнуть» в скромные 64 бита все необходимые числа?Решением описанной сложности является формат представления чисел с использованием плавающей точки.
Основная его идея заключается в следующем. Число разделяется на две части — значащую часть (мантиссу) и степень. Например, число 123 можно25записать, как 1.23х10 , число 123 000 - как 1.23хЮ , число 0.123 - как 1.23x10-'. Приэтом возможное число вариантов для передаваемых 64 битами чисел резко возрастает.Правда, точность представления чисел от этого не повышается — она всегда равна номеру последнего знака мантиссы. Но так как нас практически всегда интересуют результаты ограниченной точности (чаще всего, всего лишь до третьего знака после запятой), то модель чисел с плавающей точкой вполне приемлема.В общем случае число имеет форму sxmx2c, где s — знак числа (1 бит), m — целоечисло, определяющее мантиссу (в процессорах Pentium под него отведено 52 бита),68•:• Глава 2.
Вычисления и типы данныхе — показатель степени (обычно 10 бит). Проанализируем приведенные цифры.Если значимая часть числа может определяться 53 двоичными разрядами, то количество его десятичных разрядов не может превышать 53xlg(2)»15. Это означает, что точность вычислений ограничена 15 действительными знаками. Так и было во всех версияхMathcad вплоть до 12. В 12 версии, вероятно, в связи с переходом на технологию .NET,длина мантиссы чисел увеличилась до 17 знаков. Это означает, что под мантиссу сейчас выделяется 55-56 бит.
На показатель степени, как и раньше, выделяется 11 бит (этолегко установить по значению максимального представимого числа). Итого получается 67-68 бит на число. Но как это возможно, если на аппаратном уровне под числес плавающей точкой выделяется всего 64 бита? Вероятно, среда Net Framework, в которой исполняется Mathcad, выделяет под мантиссу разное количество бит в зависимости от величины представляемого числа.