'
, D
Дифференциальный оператор для функций
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
f ' D(f
) D([n1, n2, …]
,f
)
D(f)
или, альтернативно, f'
вычисляет производную одномерного функционального f
.
D([n1, n2, ...], f)
вычисляет частную производную многомерного функционального f (x 1, x 2, …).
MuPAD® имеет две функции для дифференцирования: diff
и D
D
представляет дифференциальный оператор, который может быть применен к функциям; diff
используется, чтобы дифференцировать арифметические выражения. Математически, D(f)(x)
совпадает с diff(f(x), x)
; D([1, 2], f)(x, y)
совпадает с diff(f(x, y), x, y)
. Символьные вызовы D
и diff
может быть преобразован друг в друга через rewrite
. См. пример 8.
D(f)
возвращает производную одномерного functionf
F
сокращение для D(f)
.
Если f
многомерная функция и обозначает частную производную f
относительно его n-th аргумент, затем D([n1, n2, ...], f)
вычисляет частную производную. См. Пример 5. В частности, D([ ], f)
возвращает f
самостоятельно.
Это принято та поездка на работу частных производных. Внутренне, D([n1, n2, ...], f)
преобразован в D([m1, m2, ...], f)
, где [m1, m2, ...]
= sort([n1, n2, ...])
.
f
может быть любой объект, который может представлять функцию. В частности, f
может быть функциональное выражение, созданное из простых функций посредством арифметических операторов (+
, -
, *
, /
, ^
, @
, @@
). Любой идентификатор, отличающийся от CATALAN, ЭЙЛЕРА и PI, рассматривается как “неизвестная” функция; то же самое содержит для элементов областей ядра, не явным образом упомянутых на этой странице. См. Пример 1. Любой номер и каждый из трех постоянных идентификаторов выше рассматриваются как постоянная функция. См. Пример 2.
Если f
список, набор, таблица или массив, затем D
применяется к каждой записи f
. См. пример 3.
Полиномиальный f
из типа DOM_POLY
рассматривается как полиномиальная функция, indeterminates быть аргументами функции. См. Пример 6.
Если f
функциональная среда, процедура, затем D
может вычислить производную в некоторых случаях; смотрите раздел “Background” ниже. Если это не возможно, символьный D
на звонок отвечают.
Более высокие частные производные D([n1], D([n2], f))
упрощены до D([n1, n2], f)
. См. пример 7.
Производная одномерного функционального f — обозначенный D(f)
— синтаксически отличен от частной производной D([1], f)
относительно первой переменной, даже если f представляет одномерную функцию.
Обычные правила дифференцирования реализованы:
D(f + g) = D(f) + D(g)
,
D(f * g) = f * D(g) + g * D(f)
,
D(1/f) = -D(f) / f^2
,
D(f @ g) = D(f) @ g * D(g)
.
Обратите внимание на то, что состав функций записан как f@g
и не как f(g)
.
Для того, чтобы выразить n-th производная одномерной функции для символьного n, можно использовать “повторный оператор состава” @@
. См. пример 9.
D
использование option remember
.
D(f)
вычисляет производную функционального f
:
D(sin), D(x -> x^2), D(id)
D
также работает на более комплексные функциональные выражения:
D(sin @ exp + 2*(x -> x*ln(x)) + id^2)
Если f
идентификатор без значения, символьного D
на звонок отвечают:
delete f: D(f + sin)
То же самое содержит для объектов типа ядра, который не может рассматриваться как функции:
D(NIL)
f'
сокращение для D(f)
:
(f + sin)', (x -> x^2)', id'
Константы рассматриваются как постоянные функции:
PI', 3', (1/2)'
Обычные правила дифференцирования реализованы. Обратите внимание на то, что списки и наборы могут также быть взяты в качестве входа; в этом случае, D
применяется к каждому элементу списка или устанавливается:
delete f, g: D([f+g, f*g]); D({1/f, f@g})
Производные большинства специальных функций библиотеки могут быть вычислены. Снова, id
обозначает тождественное отображение:
D(tan); D(sin*cos); D(1/sin); D(sin@cos); D(2*sin + ln)
D
может также вычислить производные процедур:
f := x -> x^2: g := proc(x) begin tan(ln(x)) end: D(f), D(g)
Мы дифференцируем функцию двух аргументов путем передачи списка индексов в качестве первого аргумента к D
. В примере ниже, мы сначала дифференцируемся относительно второго аргумента и затем дифференцируем результат относительно первого аргумента:
D([1, 2], (x, y) -> sin(x*y))
Порядок частных производных не релевантен:
D([2, 1], (x, y) -> sin(x*y))
delete f, g:
Полином рассматривается как полиномиальная функция:
D(poly(x^2 + 3*x + 2, [x]))
Мы дифференцируем следующий двумерный полиномиальный f
дважды относительно его второй переменной y
и однажды относительно его первой переменной x
:
f := poly(x^3*y^3, [x, y]): D([1, 2, 2], f) = diff(f, y, y, x)
delete f:
Вложенные вызовы D
сглажены:
D([1], D([2], f))
Однако это не содержит для вызовов только с одним аргументом, начиная с D(f)
и D([1], f)
не считаются тем же самым:
D(D(f))
D
май только быть примененным к функциям, тогда как diff
имеет только смысл для выражений:
D(sin), diff(sin(x), x)
Применение D
к выражениям и diff
к функциям не имеет никакого смысла:
D(sin(x)), diff(sin, x)
rewrite
позволяет переписывать выражения с D
в diff
Выражение:
rewrite(D(f)(y), diff), rewrite(D(D(f))(y), diff)
Обратная конверсия возможна также:
map(%, rewrite, D)
Иногда вам, возможно, понадобится n-th производная функции, где n неизвестен. Это может быть достигнуто с помощью повторного оператора состава. Например, давайте запишем функцию, которая вычисляет k-th полином Тейлора функционального f в точке x 0 и использует x в качестве переменной для того полинома:
kthtaylorpoly:= (f, k, x, x0) -> _plus(((D@@n)(f)(x0) * (x - x0)^n / n!) $ n = 0..k): kthtaylorpoly(sin, 7, x, 0)
delete kthtaylorpoly:
Опытные пользователи могут расширить D
к их собственным специальным математическим функциям (см. раздел “Background” ниже). С этой целью встройте свою математическую функцию f, скажем, в функцию environmentf
и реализуйте поведение D
для этой функции как "D"
паз функциональной среды. Паз должен обработать два случая: это может быть или вызвано только одним аргументом, который равняется f
, или с двумя аргументами, где второй равняется f
. В последнем случае первый аргумент является списком произвольных много индексов; то есть, паз должен смочь обработать более высокие частные производные также.
Предположим, например, что нам дают функциональный f (t, x, y), и что мы ничего не знаем о f за исключением того, что это дифференцируемо бесконечно часто и удовлетворяет дифференциальному уравнению с частными производными. Заставить MuPAD устранить производные относительно t
, мы можем сделать следующее:
f := funcenv(f): f::D := proc(indexlist, ff) local n : DOM_INT, // Number of t-derivatives. list_2_3 : DOM_LIST; // List of indices of 2's and 3's. // These remain unchanged. begin if args(0) <> 2 then error("Wrong number of arguments") end_if; n := nops(select(indexlist, _equal, 1)); list_2_3 := select(indexlist, _unequal, 1); // rewrite (d/dt)^n = (d^2/dx^2 + d^2/dy^2)^n _plus(binomial(n, k) * hold(D)(sort([2 $ 2*(n-k), 3 $ 2*k].list_2_3), ff) $ k = 0..n) end_proc:
Теперь частные производные относительно первого аргумента t переписаны производными относительно второго и третьего аргумента:
D([1], f^2)(t, x, y)
D([1, 2, 1], f)
delete f:
|
Функция или функциональное выражение, массив, список, полином, набор или таблица |
|
Индексы: положительные целые числа |
функционируйте или функциональное выражение. Если f
массив или список и т.д., соответствующий объект, содержащий производные записей, возвращен.
f
Если f
область или функциональная среда с slot"D"
, этот паз называется, чтобы вычислить производную. Процедура паза имеет тот же синтаксис вызова как D
. В частности — и в отличие от slot"diff"
— паз должен смочь вычислить более высокие частные производные, потому что список индексов может иметь длину, больше, чем одна. См. Пример 10.
Если f
процедура, функциональная среда без "D"
паз, затем f
вызван вспомогательными идентификаторами в качестве аргументов. Результат вызова затем дифференцируется с помощью функционального diff
. Если результат diff
дает к выражению, которое может рассматриваться как функция во вспомогательном identifers, затем эта функция возвращена, в противном случае неоцененный вызов D
возвращен.
Давайте возьмем функциональная средаsin
в качестве примера. Это не имеет никакого "D"
паз, таким образом процедура op(sin, 1)
, то, которое ответственно за оценку синусоидальной функции, является использованным для расчета D(sin)
, можно следующим образом. Эта процедура применяется к вспомогательному идентификатору, скажите x
, и дифференцируемый относительно этого идентификатора через diff
. Результатом является diff(sin(x), x) = cos(x)
. Через fp::expr_unapply
и fp::unapply
, функциональный cos
вычисляется как производная sin
.