Как увеличить точность в маткаде

от admin

Итоговые упражнения.

Измените цвет, тип и размер шрифта во всех математических выражениях данного документа.

Измените цвет фона и цвет, которым окрашивается выделенное выражение.

Исключите отдельное выражение из рассмотрения.

Перейдите в ручной режим вычислений.

Глава 3. Особенности организации вычислительного процесса в Mathcad.

1. Точность вычислений.

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

После ввода формулы в Mathcad пользователь должен сообщить, какому именно процессору (численному или символьному) он хочет поручить вычисления. Для этой цели используются операторы обращения к процессору (иначе — операторы вывода). Оператором обращения к численному процессору служит обычный знак равенства, т.е. “=”, а для обращения к символьному процессору служит оператор “” (его можно вызвать из палитры Symbolic или ввести с клавиатуры, нажав [Ctrl]+[.]). При этом, прежде чем написать оператор обращения к численному или символьному процессору следует выделить формулу (при работе с символьным процессором). После того, как оператор обращения написан, щелкните мышью вне формулы.

Замечание 1. В языке общения Mathcad используются два знака равенства – обычный и написанный жирным шрифтом (из палитры Boolean), которые имеют разное значение и их нельзя путать.

Замечание 2. Фирма MathSoft в руководстве пользователя достаточно подробно описывает работу численного процессора, но о символьном процессоре информация минимальна.

1.1. Вычисления посредством численного процессора.

Численный процессор работает с 64-битными числами с плавающей точкой.

Запись чисел в формате 64-битного слова обычно называют двойной точностью, а использование 32-битного слова — одинарной точностью.

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

Числа в компьютере всегда записываются в форме “мантисса — показатель степени” (иначе – в экспоненциальной форме):

где γ и β – ячейки в 1 бит, содержащие знаки чисел ±;

m – целое число, называемое мантиссой;

k – целое число, называемое показателем степени.

Mathcad для записи мантиссы использует 52 бита, а для записи показателя степени — 10 бит. Точнее, так делалось до 12-той версии Mathcad, где, по-видимому, (производитель не сообщает эту информацию пользователю) программными средствами может быть увеличено число бит для записи мантиссы. Это делается посредством уменьшения числа бит для записи показателя степени. Общая длина остается неизменной – 64 бит.

Хотя компьютер работает с двоичными числами, при рассмотрении процесса вычислений наглядней использовать привычную нам десятичную запись чисел. Поэтому можно сказать, что Mathcad в версиях до 12-той использовал 15-тиразрядную мантиссу. Если для записи некоторого числа требовалось более чем 15 разрядов мантиссы, то оно округлялось. в 12-той версии Mathcad декларируется точность в 17 разрядов мантиссы. Фактически она может быть реализована в подавляющем большинстве случаев, но не всегда. Исключение – очень большие и очень малые числа. Следует подчеркнуть очень важное обстоятельство. При вычислениях компьютера, если числа записываются в форме машинного слова фиксированной длины, то именно число разрядов мантиссы определяет предельную точность вычислений. Дело в том, что в научно-технических расчетах традиционно точность определяется числом верных знаков после запятой. Но для оценки математических программ это совершенно неприемлемо! Точность определяется длиной мантиссы, а формат вывода чисел позволяет записывать результаты с заданным числом знаков после запятой.

Из условия, что число бит для записи показателя степени фиксировано следует, что для очень больших и очень малых чисел мы столкнемся с проблемой: показатель степени «не влезает» в отведенное число бит. Таким образом возникают понятия «машинный нуль» и «машинная бесконечность». Если в процессе вычислений численный процессор получает число, меньшее машинного нуля, оно округляется до нуля. Если возникает число, большее, чем машинная бесконечность, численный процессор сообщает об ошибке: «число, большее чем 10 307 » (машинная бесконечность для Mathcad).

Отметим, что определить, чему равна машинная бесконечность для численного процессора можно следующим образом. Введем символ бесконечности ([Ctrl]+[Shift]+Z) и напишем знак равенства. Получим на экране:

если выбран формат записи чиселGeneral или Scientific (см. далее).

Подведем итог. Численный процессор Mathcad работает с числами, имеющими мантиссу 15 (до версии 12) или 17 десятичных разрядов. Количество разрядов мантиссы определяет точность вычислений. Число знаков после запятой не является показателем точности, так как в сумме число разрядов целой и дробной частей числа не может превысить 15 (или 17).

Вычисления в Mathcad

В практике инженерных расчетов наиболее массовыми являются расчетно-графические работы. Удобной средой для их выполнения является система компьютерной математики Mathcad [26]. Поэтому сначала дается описание основных правил работы в этой среде и демонстрируются простейшие вычисления.

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

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

На рис. II 1.1 показано рабочее окно Mathcad и основные панели инструментов, содержащие наборы пиктограмм: 1 — Калькулятор (Calculator); 2 — Логические (Boolean); 3 — Графические (Graph); 4 — Матричные (Matrix); 5 — Вычислительные (Calculus); 6 — Программные (Programming); 7 — Греческие (Greek). Последняя панель инструментов, снабженная символом «академическая шапочка», содержит набор пиктограмм для выполнения символьно-аналитических вычислений.

П1.1

Рис. П1.1

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

Определение переменной. В Mathcad используются переменные различных типов: обычная, глобальная, дискретная, индексная и др. Значение обычной переменной может быть использовано только правее или ниже того места на рабочем документе Mathcad, где эта переменная была определена. Чтобы определить переменную нужно:

  • 1) напечатать имя переменной, подлежащей определению;
  • 2) напечатать символ «двоеточие» (:) — при этом на экране появится знак определения переменной «двоеточие равно» (:=);
  • 3) напечатать выражение, определяющее переменную.

Вводим с клавиатуры:

Наблюдаем на экране:

s .*= 100

W: 1/2[пробел] * т*и Л 2

Примечание. Для отделения дробной части числа от его целой части в Mathcad используется символ «точка» (.)

Кроме обычной переменной в Mathcad можно задать глобальную переменную. Ее значение можно использовать в любом месте рабочего документа Mathcad. Для этого вместо обычного оператора присваивания (:=) используется оператор глобального присваивания (=).

Вычисление выражений. Если переменные определены, то их значения можно использовать при вычислении выражений, которые должны располагаться правее или ниже мест определения переменных, участвующих в формировании выражений. Для вычисления выражения нужно его напечатать и нажать клавишу «вывод числового результата» (=). Mathcad вычисляет выражение и показывает его значение справа от этого знака.

t := 11.5

s := 100 v:= — t

v — 8.696 m := 15

Повторяющиеся вычисления. Для выполнения повторяющихся вычислений Mathcad использует специальный тип переменной — дискретный аргумент. Такая переменная имеет ряд равноотстоящих друг от друга значений, т.е. представляет собой массив чисел.

Чтобы задать дискретный аргумент, нужно:

  • 1) напечатать имя переменной;
  • 2) нажать клавишу «двоеточие» (:) — в результате появится знак присваивания (:=);
  • 3) напечатать первое значение, принимаемое переменной;
  • 4) нажать клавишу «запятая» (,);
  • 5) напечатать второе (соседнее) значение переменной;
  • 6) нажать клавишу «точка с запятой» (;) — в результате появится символ «две точки подряд» (..);
  • 7) напечатать последнее значение переменной.

Вводим с клавиатуры:

Наблюдаем на экране:

а : .5; 8

а := 0.5..8

d : -5 , -3.5 ; 5

d := -5-3.5. .5

Дискретный аргумент изменяет свои значения в сторону возрастания (см. переменные ау b, d)y или убывания (переменная с).

Когда соседнее значение дискретного аргумента не указано (как это сделано при определении переменной /;), то шаг его изменения равен +1, если последнее значение аргумента больше начального, или -1, если последнее значение аргумента меньше начального.

Для просмотра значений дискретного аргумента нужно напечатать имя соответствующей переменной и нажать клавишу «вывод числового результата» (=). В результате выводится таблица значений дискретного аргумента.

Пример П1.5 демонстрирует применение дискретного аргумента для присвоения значений переменной с индексом (индексной переменной).

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

Определение функции. При определении функции у- f(x) необходимо указать ее имя / и аргумент х (или список аргументов для функции нескольких переменных).

Построение графика функции. Чтобы создать график функции одной переменной нужно выполнить следующие операции:

  • 1) поместить курсор (щелкнуть мышью) там, где требуется создать график — обязательно правее или ниже того места, где определялась функция;
  • 2) выбрать команду XY — Plot из меню Graph, или нажать соответствующую кнопку на пиктограмме. В рабочем документе Mathcad появится заготовка для графика с полями ввода в виде двух черных прямоугольников (рис. П 1.2);
  • 3) в поле, расположенное левее оси ординат, ввести имя функции (рис. П1.3), или выражение, определяющее ее значения (рис. П1.4);
  • 4) в поле, расположенное под осью абсцисс, ввести имя аргумента х.

Рис. П1.2

Для того чтобы увидеть график, нужно нажать клавишу [F9] или щелкнуть мышью вне поля графика.

Для того чтобы задать диапазон изменения аргумента х, нужно заполнить поля ввода, появляющиеся по краям оси абсцисс, или заранее (выше или левее) задать аргумент как дискретную переменную (см. пример П1.3), например х := -3, — 2.9..5.

Если этого не сделать, то переменная х будет изменяться в интервале -10 _3 .

П1.3

Рис. П1.3

Рис. П1.4

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

Построить и отформатировать графики функций

[1] [2] [3] [4]

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

Если на графике необходимо создать горизонтальную линию (например, линию у = 0), нужно поместить дискретную переменную (х) в среднее поле на оси абсцисс и константу (0) в поле на оси ординат (рис. П1.5, б).

П1.5

Рис. П1.5

Другая возможность — при форматировании графика активизировать опцию Show Markers (показывать маркеры) для оси Y. В этом случае слева от этой оси появятся два дополнительных поля ввода. Заполняя одно из них, можно получить желаемую горизонтальную линию. Точно так же можно создавать (две) вертикальные линии в нужном месте графика.

Для того чтобы переместить график, необходимо:

  • 1) выделить график пунктирной рамкой (см. выше);
  • 2) поместить курсор в поле рамки (при этом изображение курсора заменяется жирным черным крестом);
  • 3) нажав левую клавишу мыши, переместить рамку с графиком в нужное место и отпустить клавишу.

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

П1.6

Рис. П1.6

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

Читать:
Как построить 2 графика на одном в матлабе

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

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

Этот пример иллюстрирует возможность построения графика окружности (единичного радиуса) х + у = 1 в декартовой системе координат (рис. П1.7). Для этого необходимо, используя у равнение окружности, определить зависимость у отх. В данном случае имеем у = ±Vl-x, т.е. график окружности образован графиками двух функций /<(х) = у1 -х и /2(х) = yj-x , которые в области х > 1 принимают комплексные значения.

П1.7

Рис. П1.7

Уравнение такой окружности можно задать в параметрической форме (рис. П1.8) или с помощью полярной системы координат (рис. П1.9).

П1.8

Рис. П1.8

Рис. П1.9

Чтобы создать график функции двух переменных z — z(x, у), например график функции z(x, у) = (х 2 + y 2 )sin(xy/5), необходимо:

  • (х-уЛ
  • 1) задать функцию z(x, у):=(х 2 + ;у 2 )-sin —— ;

2) установить курсор в свободном месте рабочей области правее или ниже места определения функции и с помощью команды Surfance Plot вставить шаблон трехмерного графика (рис. ГТ 1.10). В отличие от рис. П1.2, он имеет только одно поле для ввода, куда нужно ввести имя функции (в данном случае z). Затем нужно щелкнуть мышью вне шаблона. Результат показан на рис. П1.11.

Puc.nt.tO Рис. П1.11

По умолчанию диапазон изменения аргументов устанавливается равным |х| 2 + у 2 )$т(ху/5) для случая хп = -4, xv = 3, уп = -2.

Рис. 111.12

Для построения графика функции z = z(xf у) в криволинейной области G, ограниченной заданными «верхней» и «нижней» кривыми уп = уп<х) и yv = yv(x), можно средствами Mathcad задать «обрезанную» функцию

а затем применить к ней команду CreateMesh, выбирая параметры хп, xvy уп, yv гак, чтобы соответствующая прямоугольная область xn (решить уравнение /(х) = 0). В этом случае Mathcad находит точное решение уравнения (см. Пример 1.1.2.4). К сожалению, эта возможность ограничена, особенно в тех случаях, когда уравнение является трансцендентным и (или) имеет несколько корней. В этих случаях нередко появляется сообщение did not find solution — «решение не найдено» или выводится только одно из нескольких возможных решений. Исключением является вычисление корней полинома (П2.9).

Для численного решения уравнения /(х) = 0 используется команда root (Дх), х). Она определяет значение переменной х, при котором выражение /(х) обращается в нуль с заданной точностью. Последняя определяется значением встроенной переменной TOL. По умолчанию TOL = 10 _3 .

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

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

Пример П1.12

П1.13

Рис. П1.13

х .*= -2 х .*= 0 х3

root(f(x), х) = -3.258 root(f(x), х) = 0.201 root(f(x), х) = 3.057.

Начиная с версии Mathcad 2000, для вычисления корня х = х1 уравнения f(x) = 0, появилась расширенная команда root вида

В этом случае в списке аргументов функции root дополнительно указываются нижняя и верхняя границы интервала локализации искомого корня xn,xv, т.е. предполагается, что диапазон, в котором этот корень расположен, известен. Применение этой команды для вычисления минимального корня в задаче примера П1.12 дает

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

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

Часто необходимо вычислять корни степенного уравнения (полинома)

Число корней такого уравнения совпадает со степенью полинома п. Для их вычисления можно использовать команду polyroots, которая применяется к вектору коэффициентов полинома А г = [а0. ап Например, для полинома f(x) = х 3 -х + 2, имеющего три вещественных корня (см. пример П1.12), имеем

Для полинома /(х) = х 3 + 10х + 2 имеем

Видно, что в первом случае все корни полинома вещественные (действительные), во втором случае один корень вещественный, а два других — комплексно-сопряженные.

Решение этих уравнений с помощью команды solve дает

В этом примере команда solve применяется в сочетании с командой float, т (вывод результата с точностью т знаков), что избавляет от возможности вывода громоздкого точного ответа.

Если решение не найдено, то появляется сообщение об ошибке did not find solution (решение не найдено). Эта ошибка может быть вызвана следующими причинами:

  • 1) уравнение не имеет корней;
  • 2) корни расположены далеко от начального приближения;
  • 3) функция у = f(x) имеет локальные максимумы (минимумы) или разрыв между начальным приближением и корнями;
  • 4) выражение f имеет комплексный корень, но начальное приближение было вещественным, или наоборот.

В заключение приведем несколько советов по использованию команды root:

  • 1) для повышения точности вычисления корня можно уменьшить значение встроенной переменной TOL (по умолчанию TOL = 0,001), однако эта процедура может увеличить время вычислений;
  • 2) если график функции у = f(x) имеет малый наклон вблизи искомого корня, то вместо уравнения f(x) = 0 следует решить уравнение

3) для выражения f(x) с известным корнем х = а нахождение дополнительных корней равносильно поиску корней уравнения

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

Решение системы алгебраических уравнений. С решением систем уравнений приходится сталкиваться столь же часто, как и с решением обычных уравнений. Для численного решения системы алгебраических уравнений в Mathcad необходимо:

  • 1) задать начальное приближение для всех неизвестных, входящих в систему;
  • 2) напечатать ключевое слово Given, указывающее на то, что далее (правее, или ниже) следует система уравнений;
  • 3) ввести уравнения, используя сочетание клавиш [Ctrl] и [=] для печати символа «равно», при этом на экране появится символ «жирное равно» (=), означающий логическое равенство;
  • 4) ввести выражение, определяющее результат решения системы, с помощью команд Find или Мгпегг.

Выполнение перечисленных пунктов задает так называемый блок решения уравнений Given . Find или Given . Minerr. Если команда Find имеет только один аргумент, то ее использование равносильно использованию команды root. В качестве примера ниже рассматривается решение уравнения х 1 +10 = е х с помощью команд Find и root.

Пример П1.13

Если команда Find имеет более одного аргумента, например Find (х, у), то она

возвращает вектор , содержащий значения переменных .г и г/, являющихся реше-

нисм системы уравнений и неравенств (если они есть), расположенных в блоке решения уравнений.

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

Пример П1.14

Решить систему уравнений

Первое уравнение этой системы задает окружность радиуса R = 2 с центром в начал е системы координат. Верхняя часть окружности описывается кривой У<(х)

-Ja-x 2 , нижняя часть — кривой у2(х) =

У(х) (см. пример 111.11). Второму уравнению системы соответствует прямая у = -х. Она пересекает окружность в двух точках, координаты (Х^ Y<) и 2, У2) которых являются решениями рассматриваемой системы уравнений системы (рис. П1.14). Найдем эти координаты.

Для определения первого решения зададим начальное приближение (-2, 2), близкое к верхней точке пересечения прямой с окружностью. Аналогично для определения второго решения зададим начальное приближение (2, -2), близкое к нижней точке пересечения прямой с окружностью

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

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

Если функция имеет п переменных, то координаты ее экстремумов находятся решением системы п уравнений

Для этого можно использовать команду Minerr (от MINimal ERRor — «минимальная ошибка»), которая, как и команда Find, работает в связке с ключевым словом Given. Отличие состоит в том, что команда Minerr возвращает такие значения своих аргументов, при которых левые и правые части уравнений, записанных в блоке решения уравнений Given — Minerr, минимально различаются. Описанное свойство команды Minerr позволяет успешно использовать ее вместо команд root и Find для решения алгебраических уравнений и систем, так как нуль — самое минимальное отклонение.

В современных версиях Mathcad для определения значений переменных х<, х2, хгг при которых функция f(xt, х2, х„) имеет экстремум, можно

использовать команды Maximize(f, xif х2. хп) или Minimize(f, хи х2. хп). Эти команды завершают блок решения, открываемый директивой Given, и возвращают вектор аргументов хх, х2, . хп, при котором функция f(xx, х2. хп) имеет экстремум (максимум или минимум соответственно).

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

Пример П1.15

Определить координаты точек экстремумов функции

Просмотр графика функции (рис. П1.15, а) и графика ее производной (рис. П1.15,6) показывает наличие двух критических точек: максимума при х 0.

Рис. П1.15

Определим координаты этих точек с использованием команд root, Mitierr, Maximize и Minimize.

1. Решение задачи с использованием команды root:

2. Решение задачи с использованием команды Minerr

При поиске максимума значения функции у = у(х) в области х ) или специальные команды. Операции, относящиеся к работе символьного процессора, содержатся в подменю позиции Symbolics (Символика) главного меню (рис. П1.16) или в меню команд, возникающих на экране монитора после активизации пиктограммы «академическая шапочка» (рис. П1.17).

П1.16

Рис. П1.16

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

Пример 111.16

Команда evaluate или —> (вычислить): • вычислить в символах

• вычислить с п знаками после запятой, evaluate float, п или float, п -> :

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

Команда coeJJs (полиномиальные коэффициенты):

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

Пример П1.22

Команда differentiate (дифференцирование по выделенной переменной):

Пример П1.23

Команда integreate (интегрирование по выделенной переменной):

Пример П1.24

Команда solve (решить относительно выделенной переменной):

Пример П1.25

Команда expand to series (разложить в ряд):

Команда convert to partial fraction (разложить на элементарные дроби):

Пример П1.27

Команда matrix transpose (транспонирование матрицы):

Пример П1.28

Команда matrix determinant (вычисление определителя):

Пример П1.29

Команда matrix invert (обращение матрицы):

Пример П1.30

Команды Fourier и invers Foureir (прямое и обратное преобразования Фурье):

Пример П1.31

Команды laplace и invlaplace (преобразования Лапласа): • прямое

Похожие статьи