Кирьянов Д. - MathCad 11 (1077323), страница 29
Текст из файла (страница 29)
разд. "Встроенные константы"гл, 4). Отметим, что Mathcad в режиме автоматического выбора алгоритма(AutoSelect) предлагает именно алгоритм Infinite Limit.Листинг 7.7. Плохо выбранный численный алгоритмневерно находит расходящийся интегралdx = 6.325 Х 1 01537.1.4. Кратные интегралыДля того чтобы вычислить кратный интеграл:1. Введите, как обычно, оператор интегрирования.2.
В соответствующих местозаполнителях введите имя первой переменнойинтегрирования и пределы интегрирования по этой переменной.174Часть lit. Численные методы3. На месте ввода подынтегральной функции введите еще один операторинтегрирования.4. Точно так же введите вторую переменную, пределы интегрирования иподынтегральную функцию (если интеграл двукратный) или следующийоператор интегрирования (если более чем двукратный) и т. д., пока выражение с многократным интегралом не будет введено окончательно.Пример символьного и численного расчета двукратного интеграла в бесконечных пределах приведен в листинге 7.8.
Обратите внимание, что символьный процессор "угадывает" точное значение интеграла я, а вычислительный определяет его приближенно и выдает в виде числа з. 142.Листинг 7.8. Символьное и численное вычисление кратного интегралаYеdx dy-> ndx dy = 3.142Внимание!Аккуратнее вводите в редакторе Mathcad кратные интегралы, если они имеютразличные пределы интегрирования по разным переменным. Не перепутайтепределы, относящиеся к разным переменным. Если Вы имеете дело с такогорода задачами, обязательно разберитесь с листингом 7.9, в котором символьный процессор вычисляет двукратный интеграл.
В первой строке пределы интегрирования [ а , Ы относятся к переменной у, а во второй строке — к переменной X.Листинг 7.9. Символьное вычисление кратных интеграловЬаГ1"-b-a3х+у3•'- 1141dx dy—* — ' Ь24-а2x + у dy dx —» b - a7.2. ДифференцированиеС помощью Mathcad можно вычислять производные скалярных функцийлюбого количества аргументов, от о-го до 5-го порядка включительно.И функции, и аргументы могут быть как действительными, так и комплекс-Глава 7. Интегрирование и дифференцирование175ными.
Невозможно дифференцирование функций только вблизи точек ихсингулярности.Вычислительный процессор Mathcad обеспечивает превосходную точностьчисленного дифференцирования. Но больше всего пользователь оценитвозможности символьного процессора, который позволяет с легкостью осуществить рутинную работу вычисления производных громоздких функций,поскольку, в отличие от всех других операций, символьное дифференцирование выполняется успешно для подавляющего большинства аналитическизаданных функций.В Mathcad П для ускорения и повышения точности численного дифференцирования функций, заданных аналитически, автоматически задействуетсясимвольный процессор (см.
разд. "Оптимизация вычислений" гл. 3).7.2.1. Первая производнаяДля того чтобы продифференцировать функцию f (x) в некоторой точке:1. Определите точку х, в которой будет вычислена производная, напримерх:=1.2. Введите оператор дифференцирования нажатием кнопки Derivative(Производная) на панели Calculus (Вычисления) или введите с клавиатуры вопросительный знак <?>.3. В появившихся местозаполнителях (рис. 7.3) введите функцию, зависящую от аргумента х, т. е. f (x), и имя самого аргумента х.4. Введите оператор <=> численного или <^> символьного вывода для получения ответа.'•Ль1 Derivative Shift+/|d—'IРис. 7 .
3 . Оператор дифференцированияПример дифференцирования функции f(x)=cos(x)-in(x) приведен в листинге 7.10.Часть III. Численные методы176Листинг 7.10. Численное и символьное дифференцированиех :- 0 . 0 1— c o s (х) -In (х) = 1 0 0 . 0 4 1dx— c o s ( х) • I n ( х) —* - s i n ( l . - 1 0 ~ 2 ) - l n ( l . - 1 0 " 2 ) + 1 . dx2. -10" )Внимание!He забывайте предварительно определять точку, в которой производится численное дифференцирование, как это сделано в первой строке листинга 7.10.Иначе будет выдано сообщение об ошибке, показанное на рис. 7.4, гласящее,что переменная или функция, входящая в выражение, ранее не определена.Между тем, символьное дифференцирование не требует обязательного явногозадания точки дифференцирования. В этом случае вместо значения производной (числа или числового выражения) будет выдана аналитическая зависимость (см. верхнюю часть рис.
7.4).— s i n (и) -> cos U )dx— s i n (х) = ••This variable or functionis not defined above.Рис. 7.4. Ошибка в примененииоператора дифференцированияКонечно, можно, как и при использовании других операторов, предварительно определить функцию в отдельном выражении, а затем посчитать еепроизводную (см. листинг 7.11); или применить оператор дифференцирования для определения собственных функций пользователя (см. листинг 7.12).Листинг 7.11. Символьное и численное дифференцированиефункции пользователяf U) :=— f (x)dxX—>-1X2x := 0 . 1dj- ,—f (x), = -100dxГлава 7. Интегрирование и дифференцирование177dx; Листинг 7.12.
Определение функции через оператор дифференцированияf (х)э(х)\1Xddxg (0. 1 >f (x)-1002g ( 0 . 1 ) —> -(1..10В обоих листингах первой строкой определяется функция f (x)=i/x. Во второй строке листинга 7.11 с помощью символьного процессора находитсяаналитическое выражение ее производной, а в оставшейся части, подобнолистингу 7.10, сначала численно, а затем аналитически определяются значения этой производной в точке х=о.1. В листинге 7.12 через производнуюот f (х) определяется еще одна пользовательская функция д<х) и затем находится ее конкретное значение в той же точке х=о.1.Как Вы заметили, оператор дифференцирования, в основном, соответствует его общепринятому математическому обозначению.
Однако в некоторых случаях при его вводе следует проявить осторожность. Рассмотримодин показательный пример, приведенный в листинге 7.13. Его первыедве строки вычисляют производную sin(x) в точке х=о.5. Последняястрока демонстрирует неправильное применение оператора дифференцирования. Вместо вычисления производной sin(x) в той же точке, какэтого можно было ожидать, получено нулевое значение. Это случилосьпотому, что аргумент функции sin(x) введен не в виде переменной х, ав виде числа. Поэтому Mathcad воспринимает последнюю строку как вычисление сначала значения синуса в точке х=о.5, а затем дифференцирование этого значения (т.
е. константы) также в точке х=о.5, в соответствии с требованием первой строки листинга. Поэтому ответ, на самомделе, неудивителен — в какой точке ни дифференцируй константу,результатом будет ноль.Листинг 7.13. Пример правильного и неправильногоприменения дифференцированиях := 0 . 5— s i n (х)dx= 0.878178— sin (0.5)dxЧасть III. Численные методы- 0Для численного дифференцирования Mathcad применяет довольно сложныйалгоритм, вычисляющий производную с колоссальной точностью до 7—8-гознака после запятой. Этот алгоритм (метод Риддера) описан во встроеннойсправочной системе Mathcad, доступной через меню Help (Справка).
Погрешность дифференцирования не зависит от констант TOL ИЛИ CTOL, В противоположность большинству остальных численных методов, а определяетсянепосредственно алгоритмом.Исключение составляют функции, которые дифференцируются в окрестности сингулярной точки; например для рассмотренной нами функцииf (x)=i/x это будут точки вблизи х=о. При попытке найти ее производнуюпри х=о будет выдано сообщение об одной из ошибок деления на ноль"Can't divide by zero" (Деление на ноль невозможно) или "Found a singularitywhile evaluating this expression.
You may be dividing by zero" (Найдена сингулярность при вычислении этого выражения. Возможно, Вы делите наноль). Если попробовать численно определить производную очень близкок нулю, например, при х=ю 10°, то может появиться сообщение об ошибке"Can't converge to a solution" (Невозможно найти решение). Встретившись содной из упомянутых ошибок, присмотритесь повнимательнее к дифференцируемой функции и убедитесь, что Вы не имеете дело с точкой сингулярности.7.2.2. Производные высших порядковMathcad позволяет численно определять производные высших порядков, ото-го до 5-го включительно.
Чтобы вычислить производную функции f(x)N-ГО порядка в точке х, нужно проделать те же самые действия, что и привзятии первой производной (см. разд. 7.2.1), за тем исключением, что вместо оператора производной необходимо применить оператор N-Й производной (Nth Derivative). Этот оператор вводится с той же панели Calculus (Вычисления) либо с клавиатуры нажатием клавиш <Ctrl>+<?> и содержит ещедва местозаполнителя, в которые следует поместить число N. В полном соответствии с математическим смыслом оператора, определение порядкапроизводной в одном из местозаполнителей приводит к автоматическомупоявлению того же числа в другом из них."Производная" при N=O ПО определению равна самой функции, при N=I получается обычная первая производная.