', 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 и DD представляет дифференциальный оператор, который может быть применен к функциям; 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) возвращает производную
одномерного functionfF сокращение для 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.