diff

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

Описание

пример

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

пример

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

пример

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

пример

Df = diff(f,var,n) вычисляет nпроизводная th 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)

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

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

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

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

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

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

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

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

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

syms t
D4 = diff(t^6,4)
D4 = 360t2
D5 = diff(t^6,5)
D5 = 720t
D6 = diff(t^6,6)
D6 = 720

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

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

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

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

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

Df = diff(diff(x*y))
Df = 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)

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

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

Найдите производную функции 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-ю производную функции y=f(x)2dfdx относительно f(x).

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

2x f(x)

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

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

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

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

Уравнением Euler–Lagrange дают

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

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

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

mt x(t)

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

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

Найдите уравнение Euler–Lagrange движения массово-пружинной системы.

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

m2t2 x(t)+kx(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

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

Dx = diff(alpha,x)
Dx = yTA
Dy = diff(alpha,y)
Dy = xTAT

Начиная с R2021a

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

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

syms X [3 1] matrix
syms A [3 3] matrix
Y = X.'*A*X
Y = XTAX

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

D = diff(Y,A)
D = XTX

Результатом является продукт тензора Кронекера между 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

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

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