Кирьянов Д. - MathCad 11 (1077323), страница 30
Текст из файла (страница 30)
Листинг 7.14 демонстрирует численное и символьное вычисление второй производной. Обратите внимание,что, как и при вычислении обычной производной, необходимо перед опера-Глава 7. Интегрирование и дифференцирование179тором дифференцирования присвоить аргументу функции значение, длякоторого будет вычисляться производная.| Листинг 7.14. Численное и символьное вычисление второй производнойх := 0.1d2dx 2 cos (x) -x =1.94d22cosfx)•x—» 1. 99 - cos (.1) - . 4 • sin ( . 1dx2Примечание^Убедиться а том, что символьный процессор Mathcacf в последней строке листинга 7.14 дает тот же результат, что и вычислительный процессор в предыдущей строке, можно, упростив его. Для этого следует выделить полученное последнее выражение и выбрать в меню Symbolics (Символика) пункт Symplify(Упростить). После этого ниже появится еще одна строка с численным результатом выделенного выражения.Чтобы вычислить производную порядка выше 5-го, следует последовательноприменить несколько раз оператор м-й производной, подобно тому как вводились операторы кратного интегрирования (см.
разд. 7.1.4). Однако длясимвольных вычислений этого не потребуется — символьный процессорумеет считать производные порядка выше 5-го. Сказанное иллюстрируетлистинг 7.15, в котором сначала численно, а затем символьно вычисляетсяседьмая производная синуса в точке х=ол.Листинг 7.15. Численное и символьное вычислениеседьмой производнойх := 0 . 1,5,2dxdx-sin (x)=-0.995s i n ( x) -4 - c o s ( .
1'dx?Расчет производных высших порядков производится тем же вычислительным методом Риддера, что и расчет первых производных. Причем для первой производной этот метод обеспечивает точность до 7—8 значащих разрядов числа, а при повышении порядка производной на каждую единицуточность падает примерно на один разряд.180Часть III. Численные методыИз сказанного ясно, что падение точности при численном расчете высшихпроизводных может быть очень существенно.
В частности, если попытатьсяопределить девятую производную синуса, подобно идее листинга 7.15, то вкачестве результата будет выдан нуль, в то время как истинное значениедевятой производной равно cos (о. 1).7.2.3. Частные производныеС помощью обоих процессоров Mathcad можно вычислять производныефункций любого количества аргументов. В этом случае, как известно, производные по разным аргументам называются частными. Чтобы вычислитьчастную производную, необходимо, как обычно, ввести оператор производной с панели Calculus (Вычисления) и в соответствующем местозаполнителенапечатать имя переменной, по которой должно быть осуществлено дифференцирование.
Пример приведен в листинге 7.16, в первой строке которогоопределена функция двух переменных, а в двух следующих строках символьным образом вычислены ее частные производные по обеим переменным — х и у — соответственно. Чтобы определить частную производнуючисленным методом, необходимо предварительно задать значения всех аргументов, что и сделано в следующих двух строках листинга. Последнее выражение в листинге снова (как и в третьей строке) определяет символьночастную производную по у.
Но поскольку переменным х и у уже присвоеноконкретное значение, то в результате получается число, а не аналитическоевыражение.Листинг 7.16. Символьное и численное вычислениечастных производныхf ( х , у ) := х+ cos ( x) • у— f ( х , у ) -» 2 - x ( 2 " Y ) • х— - s i n ( x ) - уЭх— f ( х , у ) -> 2 - х ( 2 ' У ) - I n ( х ) + c o s ( x )Эух := 1у := 0 . 1— f ( х , у)Эу= 0.54— f ( х , у ) -> c o s ( 1 )ЭуЧастные производные высших порядков рассчитываются точно так же, каки обычные производные высших порядков (см. разд.
7.2.2). Листинг 7.17Глава 7. Интегрирование и дифференцирование181иллюстрирует расчет вторых производных функции из предыдущего примера по переменным х, у и смешанной производной.Листинг 7.17. Вычисление второй частной производнойд(\кЭх2-У,.(2-у))+ c o s ( х ) -у}У-cos ( x )-у2' + cos U ) -у)-> 4 - x l 2 ' y l - I n { х )Эу'l 2-у)+2- sinxВозможно, Вы обратили внимание, что в обоих листингах 7.16 и 7.17 оператор дифференцирования записан в форме частной производной.
Подобнотому как существует возможность выбирать вид, например оператора присваивания, можно записывать операторы дифференцирования в виде обычной или частной производной. Запись оператора не влияет на вычисления,а служит лишь более привычной формой представления расчетов. Для тогочтобы изменить вид оператора дифференцирования на представление частной производной, следует:1.
Вызвать контекстное меню из области оператора дифференцированиянажатием правой кнопки мыши.2. Выбрать в контекстном меню верхний пункт View Derivative As (Показывать производную как).3. В появившемся подменю (рис. 7.5) выбрать пункт Partial Derivative (Частная производная)._ f [ х , у)dy"= 0.54View Derivative &в I** DefaultDerivativegf Pjopertras.™Ois^ble EvaluationРис. 7 . 5 . Изменение вида оператора дифференцированияЧасть III. Численные методы182Чтобы вернуть вид производной, принятый по умолчанию, выберите в подменю пункт Default (По умолчанию) либо, для представления ее в обычномвиде — Derivative (Производная).Завершим разговор о частных производных двумя примерами, которыенередко встречаются в вычислительной практике.
Программная реализация первого из них, посвященная вычислению градиента функции двухпеременных, приведена в листинге 7.18. В качестве примера взята функция f (x,y), определяемая в первой строке листинга, график которой показан в виде линий уровня на рис. 7.6. Как известно, градиент функцииf (x,y) является векторной функцией тех же аргументов, что и f (х,у), определенной через ее частные производные, согласно второй строке листинга 7.18. В оставшейся части этого листинга задаются ранжированныепеременные и матрицы, необходимые для подготовки графиков функции иее градиента.I Листинг 7.18.
Вычисление градиентаf (х , у)\:= х 2 + 0 . 1/g r a d (x , у):-—f(х,у)Эх•f( х , у )ЭуЫ := 5i := 0 ..2 -Nj := 0 ..2 -NFi , j := g r a d ( i - N , j - Н)Векторное поле рассчитанного градиента функции f(x,y} показано нарис. 7.7. Как можно убедиться, сравнив рис. 7.6 и 7.7, математическийсмысл градиента состоит в задании в каждой точке (х,у) направления наплоскости, в котором функция f (x,y) растет наиболее быстро.До сих пор в данной главе мы рассматривали скалярные функции, к которым, собственно, и можно применять операторы дифференцирования. Часто приходится иметь дело с вычислением производных векторных функций.Например, в различных областях математики (см.
разд. "Жесткие системыОДУ" гл. 11) мы сталкиваемся с проблемой вычисления якобиана (или матрицы Якобы) — матрицы, составленной из частных производных векторнойфункции по всем ее аргументам. Пример вычисления якобиана векторнойфункции f (x) векторного аргумента х приведен в листинге 7.19. В нем дляГлава 7. Интегрирование и дифференцирование183определения частных производных якобиана каждый i-й скалярный компонент f (x)i дифференцируется символьным процессором Mathcad.^.* f f / * sf ,*ч \ чV,- * $ • - -*—•л—ч(X,Рис. 7.6. График линий уровня функцииf ( x , y ) (листинг 7.18)t /t 1 tY)Рис. 7.7. Векторное поле градиентафункции f ( х , у ) (листинг 7.18)Тот же самый якобиан можно вычислить и несколько по-другому, если определить функцию не одного векторного, а трех скалярных аргументовf(x,y,z) (листинг 7.20).Листинг 7.19. Вычисление якобиана векторной функциивекторного аргументаf (х) :=-ff ^ \\)} J(s i n (y)-у7 Зак 984-In (у)x - c o s (у)-У• —УОЧасть HI.
Численные методы184Листинг 7.20. Вычисление якобиана векторной функциитрех скалярных аргументовх • s i n ( у)f { х , у , z ) :=-у + z3 -у + zL ( f ( х , у , 2 ) о)Эх— (f ( Х ,Ух3УхУ,2)lJ— { f ( Х , у , 2 ) о)Эу— (f ( X , y ,2)l)Dy— ( f ( X , y , Z)dzsin(у)x-cos(у)О— ( f ( X , y , 2)1dz1{ X , у , 2) 2), у , 2) 2)(t(X,y,2)JНе забывайте, что для численного определения якобиана необходимо сначалаопределить точку, в которой он будет рассчитываться, т. е.