Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 85
Текст из файла (страница 85)
Для этого сравнимрезультат расчета интеграла, произведенного ею, с точным аналитическим значениемданного интеграла:f(x) := sin(x)-xf(x) dx -» л - 4j0Romberg(f,0, я, 10~ 3 ) - \/ - AJ= 4.558x 10~ 75Rombergfeo.rc, 10" ) ~ V - 4)= -1.659x 10~Romberg(f,0,7i,10~ 8 )- V- 4/= 1.51x 10~1014Как видно из приведенных примеров, эффективность написанной программы оченьвысока и точность результата значительно превышает точность уровня TOL. Кроме того,алгоритм очень быстро сходится и расчет даже с предельной точностью занимает долисекунды.
А это означает, что метод Ромберга можно применять для вычисления интегралов любого типа, а также кратных интегралов.Описывать остальные встроенные в Mathcad методы мы не будем, прежде всего по причине их специфичности. При желании информацию о них вы сможете найти в справочной системе программы или в книге, посвященной численным методам.Глава 1 1 . ВычислениепроизводныхПроизводная — это одно из основных понятий современной математики, это инструмент, имеющий огромное практическое значение.
С помощью производной можно охарактеризовать скорость изменения функции, найти ее максимальные и минимальныезначения, а также точки перегибов. К вычислению производной сводятся решения значительного количества научных и производственных задач (например, нахождениескорости химической реакции или определение оптимальной формы бака для топлива). В этой главе мы обсудим особенности вычисления производных в Mathcad. В еепервой части приведены необходимые теоретические сведения. Во второй части главымы разберем, как решаются наиболее важные задачи, связанные с дифференцированием (построение касательной, нормали). Однако задачи, направленные на исследованиефункции (определение экстремумов, перегибов, асимптот), решаться в данной главене будут.
Подробному описанию этой объемной темы посвящена гл. 13. ,11.1. Принципы расчета производныхв MathcadАналогично большинству остальных наиболее важных математических операций, в Mathcad существует численное и символьное дифференцирование.С вычислительной точки зрения аналитическое определение производной почти любой встречаемой на практике функции — дело, в общем-то, технически очень простое.Однако, в случае сложных выражений и дробей, аналитическое дифференцированиеможет потребовать громоздких выкладок и быть чрезвычайно трудоемким. Очевидно,что такая работа вряд ли кому-то покажется интересной. Поэтому возможности системы Mathcad в этой области могут помочь сэкономить время и силы.
Ключевым моментом здесь является то, что, в отличие от символьного интегрирования или решенияуравнений, аналитически можно просчитать производную любой функции. Зачем жетогда нужно численное дифференцирование? По большому счету, в 99 % случаев безчисленного дифференцирования можно обойтись. Однако в ряде специфических задач оно более удобно, чем аналитическое дифференцирование. Так, если нужно получить значение производной в точке (к примеру, чтобы провести касательную), а аналитическое выражение производной слишком громоздко, дифференцирование проводитьстоит численно.
Иногда приходится дифференцировать зависимости, которые немогут быть выражены каким-то аналитическим выражением. Наиболее типичный3 7 4 •:• Глава 1 1 . Вычисление производныхслучай — интерполяция экспериментальной зависимости квадратичным или кубическим сплайном (подробно соответствующая задача разбирается в гл. 16). Естественно,что аналитическое дифференцирование в случае подобных зависимостей не имеетсмысла.
Также зачастую немаловажно то, что значение производной в точке численноопределяется гораздо быстрее, чем аналитически. Конечно, при вычислении однойпроизводной это не играет ровным счетом никакой роли: время, которое потребуетсясовременному компьютеру для дифференцирования любой функции, покажется вамнеуловимым мгновением, независимо от используемого подхода. Однако, если при решении задачи производные придется вычислить сотни или тысячи раз (например, припоиске корней системы уравнений), использование численных методов более эффективно. В то же время у численного дифференцирования есть значительные недостатки, главным из которых является значительная погрешность, возникающая при вычислении производных большой степени.Подводя итог, можно сказать: выбор метода дифференцирования должен зависетьот типа решаемой задачи.
Символьный метод имеет преимущество в том плане, чторезультат можно получить в виде функции, которую можно будет использовать в дальнейших расчетах (а погрешность вычисления, исходя из значения производной в интересующей точке, будет ограничена только ошибкой округления или же, если символьный подсчет возможен, будет вообще отсутствовать). Численный же подход имеетпреимущества в некоторых специфических задачах. Особенности как символьного, таки численного подхода мы продемонстрируем ниже на примерах.Mathcad позволяет вычислять как обычную производную, так и производные болеевысоких порядков, а также частные производные. Об особенностях расчета каждогоиз этих типов производной мы поговорим по отдельности.11.1.1.
Определение первой производнойОдним из наиболее важных достоинств системы Mathcad является то, что в ее основележит принцип WYSIWYG (What you see is what you get — что вы видите, то и получите). Исходя из этого принципа, запись производной в программе полностью соответствует принятым в математике правилам, и для того чтобы верно ввести какое-то выражение, не нужно знать специального синтаксиса.
Сделать это можно точно так же,как если бы вы проводили данную операцию на бумаге. Поэтому, приступая к вычислению производной какой-либо функции, следует найти такой знакомый любому студенту, инженеру или ученому оператор дифференцирования. Оператор первой производной (Derivative) расположен на панели Calculus (Вычисления) и, помимо того,вводится сочетанием клавиш Shift+«/» (рис.
11.1).i' n i г ,{ Derivative Shift+/1Рис. 1 1 . 1 . Оператор простого дифференцирования на панели CalculusОператор первой производной имеет два маркера, принцип заполнения которых абсолютно очевиден: в верхний вводится функция, в нижний — переменная, по которойпроводится дифференцирование.11.1. Принципы расчета производных в Mathcad • 3 7 5Когда оператор будет заполнен, следует решить, в какой форме необходимо получитьответ.
Если в результате дифференцирования должна быть получена функция производной, следует обратиться к возможностям символьного процессора. Для этого в качестве оператора вывода следует использовать оператор символьного вывода («—>»).При символьном дифференцировании можно оперировать функциями нескольких переменных и функциями с параметрами. Также оператор дифференцирования можетсочетаться с любым вычислительным или символьным оператором. Особенно полезеноператор simplify, так как выражение производной выдается в неупрощенном виде.Иногда для упрощения ответа стоит использовать операторы collect (приводит подобные слагаемые), factor (раскладывает выражение на множители) и expand (раскрываетскобки).Пример 1 1 .
1 . Аналитическое вычисление производныхЧтобы в этом примере выражение производной получилось компактным, его нужно упростить,а затем в знаменателе выполнить приведение подобных слагаемых по cos(x).2cos(x) - x-sin(x) ^simplifysin(x) + x-cos(x))collect, cos (x)(' 2-fe» )\2x - ll-cos(x) + 2sin(x)-x-cos(x) + 1Пример вычисления производной функции от функции. Условие получения компактного ответа — использование оператора simplify.5I in(x-2)-(x+l) -(x+2)dx 323simplify22-x -3'X -5-x+ 10(x-1)Пример вычисления производной от функции с буквенными параметрами.— (x-sin(a-x)) + cos(bx)sin(a-x) + x-cos(a-x)-a + cos(b-x)dxПример совмещения оператора дифференцирования с другим вычислительным оператором (иллюстрация правила Лопиталя-Бернулли — раскрытие неопределенности типа 0/0).lim— (sin(4x) + х)dx-•-5-(2x-sin(3x))dxЧтобы получить численное значение производной в нужной точке исходя из результатов символьного расчета, нужно поступить следующим образом.1.
Найти функцию производной, используя оператор символьного вывода («—>»).2. Присвоить переменной соответствующее численное значение.3. Скопировать полученное выражение для производной и вычислить его символьно.Также данное выражение можно просчитать, используя оператор simplify. При этомрезультат будет получен в удобной и не имеющей погрешности символьной форме.Однако порой ответ выходит громоздким, и его приходится пересчитать в десятичную дробь (поставив после выражения оператор численного вывода или, лучше,использовав оператор float).376 •Глава 11. Вычисление производныхЧтобы найти производную функции, не обязательно вводить ее выражение непосредственно в оператор дифференцирования.
Можно первоначально определить производную как некоторую функцию пользователя и в дальнейшем получать численные значения, просто вводя нужные величины переменной в скобки. Такой способ болееудобен тем, что позволяет получать одновременно значения производной во многихточках.
Просчитывать такую функцию можно только численно. Если те же расчетынужно провести аналитически, определите, используя оператор символьного вывода(«—»»), выражение производной в общем виде, а затем задайте его ниже как функцию.Указывая в скобках необходимые значения переменной, вы получите значения производной в различных точках в символьной форме.Пример 11.2. Определение значения производной в точкеЧисленный расчет:Г(Ф):=-г'(-л) = 5.142г'(п) =-1.142Аналитический расчет:d ф + tan(<|>)simplify —>-{^-2 - tan(<|>) - tan((|>) + ф + ф-1ап(ф) )(l + tanfo))2+ ф + <Иап(ф) )(lr'(-7l) -> 2 + ЯГ'(я) -> 2 - 71Существенным недостатком численного определения производной является то, чтоалгоритм находит значения в точках, где функция производной терпит разрыв.
Разумеется, такие результаты абсолютно некорректны и не имеют смысла. В случае же символьного расчета при попытке найти производную в точке, где она не существует, система выдаст сообщение об ошибке: Can't divide by zero (Невозможно деление на нуль).Чтобы убедиться в сказанном, попробуйте найти значение производной обоими методами в точке -я/4.Чтобы численно получить значение производной в конкретной точке, после операторадифференцирования можно сразу ввести оператор численного вывода («=»). Естественно, при этом выше самой производной следует определить соответствующее значение переменной.Пример 11.3.