', 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.

Примеры

Пример 1

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'

Пример 2

Константы рассматриваются как постоянные функции:

PI', 3', (1/2)'

Пример 3

Обычные правила дифференцирования реализованы. Обратите внимание на то, что списки и наборы могут также быть взяты в качестве входа; в этом случае, D применяется к каждому элементу списка или устанавливается:

delete f, g: D([f+g, f*g]); D({1/f, f@g})

Пример 4

Производные большинства специальных функций библиотеки могут быть вычислены. Снова, id обозначает тождественное отображение:

D(tan); D(sin*cos); D(1/sin); D(sin@cos); D(2*sin + ln)

Пример 5

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:

Пример 6

Полином рассматривается как полиномиальная функция:

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:

Пример 7

Вложенные вызовы D сглажены:

D([1], D([2], f))

Однако это не содержит для вызовов только с одним аргументом, начиная с D(f) и D([1], f) не считаются тем же самым:

D(D(f))

Пример 8

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)

Пример 9

Иногда вам, возможно, понадобится 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:

Пример 10

Опытные пользователи могут расширить 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

Функция или функциональное выражение, массив, список, полином, набор или таблица

n1, n2, …

Индексы: положительные целые числа

Возвращаемые значения

функционируйте или функциональное выражение. Если 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.