diff

Дифференцируйте символьное выражение или функцию

Описание

пример

Df = diff(f) дифференцирует f относительно символьной переменной, определяемой symvar(f,1).

пример

Df = diff(f,n) вычисляет nпервая производная f относительно символьной переменной, определяемой symvar.

пример

Df = diff(f,var) дифференцирует f относительно параметра дифференцирования var. var может быть символьной скалярной переменной, такой как x, символическая функция, такая как f(x), или производную функцию, такую как diff(f(t),t).

пример

Df = diff(f,var,n) вычисляет nпервая производная f относительно var.

пример

Df = diff(f,var1,...,varN) дифференцирует f относительно параметров var1,...,varN.

пример

Df = diff(f,mvar) дифференцирует f относительно переменной символьной матрицы mvar типа symmatrix. (с R2021a года)

Примеры

свернуть все

Найдите производную функции sin(x^2).

syms f(x)
f(x) = sin(x^2);
Df = diff(f,x)
Df(x) = 2xcos(x2)2 * x * cos (x ^ 2)

Найдите значение производной в x = 2. Преобразуйте значение в число двойной точности.

Df2 = Df(2)
Df2 = 4cos(4)sym (4) * cos (sym (4))
double(Df2)
ans = -2.6146

Найдите первую производную от этого выражения.

syms x t
Df = diff(sin(x*t^2))
Df = t2cos(t2x)t ^ 2 * cos (t ^ 2 * x)

Поскольку вы не задали переменную дифференцирования, diff использует переменную по умолчанию, заданную как symvar. Для этого выражения переменная по умолчанию x.

var = symvar(sin(x*t^2),1)
var = xx

Теперь найдите производную этого выражения относительно переменной t.

Df = diff(sin(x*t^2),t)
Df = 2txcos(t2x)2 * t * x * cos (t ^ 2 * x)

Найдите 4-ю, 5-ю и 6-ю производные t6.

syms t
D4 = diff(t^6,4)
D4 = 360t2360 * t ^ 2
D5 = diff(t^6,5)
D5 = 720t720 * t
D6 = diff(t^6,6)
D6 = 720sym (720)

Найдите вторую производную этого выражения относительно переменной y.

syms x y
Df = diff(x*cos(x*y), y, 2)
Df = -x3cos(xy)-x ^ 3 * cos (x * y)

Вычислите вторую производную выражения x*y. Если вы не задаете переменную дифференцирования, diff использует переменную, определяемую как symvar. Для этого выражения symvar(x*y,1) возвращает x. Поэтому diff вычисляет вторую производную x*y относительно x.

syms x y
Df = diff(x*y,2)
Df = 0sym (0)

Если вы используете вложенные diff вызовы и не задавать переменную дифференцирования, diff определяет переменную дифференцирования для каждого вызова. Для примера дифференцируйте выражение x*y вызовом diff функция дважды.

Df = diff(diff(x*y))
Df = 1sym (1)

В первом вызове diff дифференцирует x*y относительно x, и возвращает y. Во втором вызове diff дифференцирует y относительно y, и возвращает 1.

Таким образом, diff(x*y,2) эквивалентно diff(x*y,x,x), и diff(diff(x*y)) эквивалентно diff(x*y,x,y).

Дифференцируйте это выражение относительно переменных x и y.

syms x y
Df = diff(x*sin(x*y),x,y)
Df = 2xcos(xy)-x2ysin(xy)2 * x * cos (x * y) - x ^ 2 * y * sin (x * y)

Можно также вычислить смешанные производные более высокого порядка путем предоставления всех переменных дифференцирования.

syms x y
Df = diff(x*sin(x*y),x,x,x,y)
Df = x2y3sin(xy)-6xy2cos(xy)-6ysin(xy)x ^ 2 * y ^ 3 * sin (x * y) - 6 * x * y ^ 2 * cos (x * y) - 6 * y * sin (x * y)

Найдите производную функции y=f(x)2dfdx по отношению к f(x).

syms f(x) y
y = f(x)^2*diff(f(x),x);
Dy = diff(y,f(x))
Dy = 

2f(x)x f(x)2 * f (x) * diff (f (x), x)

Найдите 2-ю производную функции y=f(x)2dfdx по отношению к f(x).

Dy2 = diff(y,f(x),2)
Dy2 = 

2x f(x)2 * diff (f (x), x)

Найдите смешанную производную функции y=f(x)2dfdx по отношению к f(x) и dfdx.

Dy3 = diff(y,f(x),diff(f(x)))
Dy3 = 2f(x)2 * f (x)

Найдите уравнение Эйлера-Лагранжа, которое описывает движение системы масса-пружина. Задайте кинетическую и потенциальную энергию системы.

syms x(t) m k
T = m/2*diff(x(t),t)^2;
V = k/2*x(t)^2;

Определите Лагранжа.

L = T - V
L = 

mt x(t)22-kx(t)22(m * (diff (x (t), t)) ^ 2 )/2 - (k * x (t) ^ 2 )/2

Уравнение Эйлера-Лагранжа задается как

0=ddtL(t,x,x˙)x˙-L(t,x,x˙)x

Оцените термин L/x˙.

D1 = diff(L,diff(x(t),t))
D1 = 

mt x(t)m * diff (x (t), t)

Оцените второй срок L/x.

D2 = diff(L,x)
D2(t) = -kx(t)-k*x(t)

Найдите уравнение Эйлера-Лагранжа движения системы масса-пружина.

diff(D1,t) - D2 == 0
ans(t) = 

m2t2 x(t)+kx(t)=0m * diff (x (t), t, 2) + k * x (t) = = 0

Начиная с R2021a

Чтобы вычислить производные относительно векторов, можно использовать переменные символьной матрицы. Для примера найдите производные α/x и α/y для выражения α=yTAx, где y является вектором 3 на 1, A является матрицей 3 на 4, и x является вектором 4 на 1.

Создайте три символьные матричные переменные x, y, и A, соответствующих размеров и использовать их для определения alpha.

syms x [4 1] matrix
syms y [3 1] matrix
syms A [3 4] matrix
alpha = y.'*A*x
alpha = yTAxтранспонирование (симматрица ('y', [3 1])) * симматрица ('A', [3 4]) * симматрица ('x', [4 1])

Найдите производную alpha относительно векторов x и y.

Dx = diff(alpha,x)
Dx = yTAтранспонирование (симматрица ('y', [3 1])) * симматрица ('A', [3 4])
Dy = diff(alpha,y)
Dy = xTATтранспонирование (симматрица ('x', [4 1])) * транспонирование (симматрица ('A', [3 4]))

Начиная с R2021a

Чтобы вычислить дифференциальный коэффициент относительно матрицы, можно использовать переменные символьной матрицы. Например, найдите дифференциал Y/A для выражения Y=XTAX, где X является вектором 3 на 1, и A является матрицей 3 на 3. Вот, Y является скаляром, который является функцией вектора X и матрицу A.

Создайте две переменные символьной матрицы, чтобы представлять X и A. Определить Y.

syms X [3 1] matrix
syms A [3 3] matrix
Y = X.'*A*X
Y = XTAXтранспонирование (симматрица ('X', [3 1])) * симматрица ('A', [3 3]) * симматрица ('X', [3 1])

Найдите дифференциал Y относительно матрицы A.

D = diff(Y,A)
D = XTXkron (транспонирование (symmatrix ('X', [3 1])), symmatrix ('X', [3 1]))

Результатом является Тензора Кронекера продукт между XT и X, которая является матрицей 3 на 3.

size(D)
ans = 1×2

     3     3

Входные параметры

свернуть все

Выражение или функция для дифференцирования, заданные как

  • символическое выражение

  • символьная функция

  • вектор или матрица символьных выражений или функций (символьный вектор или символьная матрица)

  • символьная матричная переменная (с R2021a года)

Если f - символьный вектор или матрица, diff дифференцирует каждый элемент f и возвращает вектор или матрицу того же размера, что и f.

Типы данных: single | double | sym | symfun | symmatrix

Параметр дифференциации, заданный как символьная скалярная переменная, символьная функция или производная функция, созданная с помощью diff функция.

Если вы задаете дифференциацию относительно символьной функции var = f(x) или производную функцию var = diff(f(x),x), затем первый аргумент f не должно содержать ничего из следующих:

  • Интегральные преобразования, такие как fourier, ifourier, laplace, ilaplace, htrans, ihtrans, ztrans, и iztrans

  • Недооцененные символьные выражения, которые включают limit или int

  • Символические функции, вычисленные в определенной точке, такой как f(3) или g(0)

Типы данных: single | double | sym | symfun

Параметры дифференциации, заданные как символьные скалярные переменные, символьные функции или производная функция, созданные с помощью diff функция.

Типы данных: single | double | sym | symfun

Начиная с R2021a

Параметр дифференцирования, заданный как переменная символьной матрицы.

The diff функция в настоящее время не поддерживает производные тензора. Если производная является тензором, или производная является матрицей с точки зрения тензоров, то diff функция будет ошибаться. Если f является дифференцируемой скалярной функцией, mvar может быть скаляром, вектором или матрицей. Для других примеров смотрите Дифференцирование относительно векторов и Дифференцирование относительно матрицы.

Типы данных: symmatrix

Порядок дифференцирования, заданный как неотрицательное целое число.

Совет

  • При вычислении смешанных производных более высокого порядка с более чем одной переменной не используйте n для определения порядка дифференцирования. Вместо этого явным образом задайте все переменные дифференцирования.

  • Для повышения эффективности, diff принимает, что все смешанные производные коммутируются. Для примера,

    xyf(x,y)=yxf(x,y)

    Этого предположения достаточно для большинства инженерных и научных проблем.

  • Если вы дифференцируете многомерное выражение или функцию f не задавая переменную дифференцирования, затем вложенный вызов в diff и diff(f,n) может вернуть различные результаты. Это связано с тем, что во вложенном вызове каждый шаг дифференцирования определяет и использует свою собственную переменную дифференцирования. В вызовах, как diff(f,n), переменная дифференцирования определяется один раз symvar(f,1) и используется для всех этапов дифференцирования.

  • Если вы дифференцируете выражение или функцию, содержащую abs или sign, убедитесь, что аргументы являются вещественными значениями. Для сложных аргументов abs и sign, diff функция формально вычисляет производную, но этот результат обычно не действителен, потому что abs и sign не являются дифференцируемыми по комплексным числам.

Представлено до R2006a