Main Content

diff

기호 표현식 또는 기호 함수 미분

설명

예제

Df = diff(f)symvar(f,1)에 의해 결정된 기호 스칼라 변수에 대해 f를 미분합니다.

예제

Df = diff(f,n)symvar에 의해 결정된 기호 스칼라 변수에 대해 fn번째 도함수를 계산합니다.

예제

Df = diff(f,var)은 미분 파라미터 var에 대해 f를 미분합니다. var은 기호 스칼라 변수(예: x), 기호 함수(예: f(x)) 또는 도함수(예: diff(f(t),t))일 수 있습니다.

예제

Df = diff(f,var,n)var에 대해 fn번째 도함수를 계산합니다.

예제

Df = diff(f,var1,...,varN)은 파라미터 var1,...,varN에 대해 f를 미분합니다.

예제

Df = diff(f,mvar)은 유형이 symmatrix인 기호 행렬 변수 mvar에 대해 f를 미분합니다.

예제

모두 축소

함수 sin(x^2)의 도함수를 구합니다.

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

x = 2의 도함수 값을 구합니다. 값을 double로 변환합니다.

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

다음 표현식의 1계 도함수를 구합니다.

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

미분 변수를 지정하지 않았기 때문에 diffsymvar에 의해 정의된 디폴트 변수를 사용합니다. 이 표현식에서 디폴트 변수는 x입니다.

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

이제 변수 t에 대해 이 표현식의 도함수를 구합니다.

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

t6의 4계, 5계, 6계 도함수를 구합니다.

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

변수 y에 대해 다음 표현식의 2계 도함수를 구합니다.

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

표현식 x*y의 2계 도함수를 계산합니다. 미분 변수를 지정하지 않으면 diff에서 symvar에 의해 결정된 변수를 사용합니다. 이 표현식에서 symvar(x*y,1)x를 반환합니다. 따라서 diffx에 대해 x*y의 2계 도함수를 계산합니다.

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

중첩 diff 호출을 사용할 때 미분 변수를 지정하지 않으면 diff가 각 호출의 미분 변수를 결정합니다. 예를 들어, diff 함수를 두 번 호출하여 표현식 x*y를 미분해 보십시오.

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

첫 번째 호출에서 diffx에 대해 x*y를 미분하고 y를 반환합니다. 두 번째 호출에서 diffy에 대해 y를 미분하고 1을 반환합니다.

따라서 diff(x*y,2)diff(x*y,x,x)와 동등하고, diff(diff(x*y))diff(x*y,x,y)와 동등합니다.

변수 xy에 대해 다음 표현식을 미분합니다.

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)

f(x)에 대해 함수 y=f(x)2dfdx의 도함수를 구합니다.

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

2f(x)x f(x)

f(x)에 대해 함수 y=f(x)2dfdx의 2계 도함수를 구합니다.

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

2x f(x)

f(x)dfdx에 대해 함수 y=f(x)2dfdx의 혼합 도함수를 구합니다.

Dy3 = diff(y,f(x),diff(f(x)))
Dy3 = 2f(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

오일러-라그랑주 방정식은 다음과 같이 지정됩니다.

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)

질량-용수철 시스템의 운동에 대한 오일러-라그랑주 방정식을 구합니다.

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

m2t2 x(t)+kx(t)=0

벡터에 대한 도함수를 계산하려면 기호 행렬 변수를 사용하면 됩니다. 예를 들어 표현식 α=yTAx에 대한 도함수 α/xα/y를 구합니다. 여기서 y는 3×1 벡터, A는 3×4 행렬, x는 4×1 벡터입니다.

적절한 크기의 기호 행렬 변수 3개 x, yA를 만들고 이를 사용하여 alpha를 정의합니다.

syms x [4 1] matrix
syms y [3 1] matrix
syms A [3 4] matrix
alpha = y.'*A*x
alpha = yTAx

벡터 xy에 대해 alpha의 도함수를 구합니다.

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

행렬에 대한 도함수를 계산하려면 기호 행렬 변수를 사용하면 됩니다. 예를 들어 표현식 Y=XTAX에 대한 도함수 Y/A를 구합니다. 여기서 X는 3×1 벡터이고 A는 3×3 행렬입니다. Y는 벡터 X와 행렬 A의 함수인 스칼라입니다.

XA를 나타내는 기호 행렬 변수 2개를 만듭니다. Y를 정의합니다.

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

행렬 A에 대해 Y의 도함수를 구합니다.

D = diff(Y,A)
D = XTX

결과는 XTX 사이의 크로네커 텐서 곱이며, 이는 3×3 행렬입니다.

size(D)
ans = 1×2

     3     3

기호 행렬 함수를 행렬 인수에 대해 미분합니다.

함수 t(X)=Asin(BX)의 도함수를 구합니다. 여기서 A는 1×3 행렬이고 B는 3×2 행렬이고 X는 2×1 행렬입니다. A, B, X는 기호 행렬 변수로 만들고, t(X)는 기호 행렬 함수로 만듭니다.

syms A [1 3] matrix
syms B [3 2] matrix
syms X [2 1] matrix
syms t(X) [1 1] matrix keepargs
t(X) = A*sin(B*X)
t(X) = Asin(BX)

diff를 사용하여 X에 대해 함수를 미분합니다.

Dt = diff(t,X)
Dt(X) = Acos(BX)B

입력 인수

모두 축소

미분할 표현식 또는 함수로, 다음 값 중 하나로 지정됩니다.

  • 기호 표현식

  • 기호 함수

  • 기호 벡터나 기호 행렬(기호 표현식이나 기호 함수로 구성된 벡터 또는 행렬)

  • 기호 행렬 변수

  • 기호 행렬 함수

f가 기호 벡터 또는 기호 행렬인 경우 difff의 각 요소를 미분하고 f와 동일한 크기의 벡터 또는 행렬을 반환합니다.

데이터형: single | double | sym | symfun | symmatrix | symfunmatrix

도함수의 계수로, 음이 아닌 정수로 지정됩니다.

미분 파라미터로, 기호 스칼라 변수, 기호 함수 또는 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

미분 파라미터로, 기호 행렬 변수로 지정됩니다.

기호 행렬 변수를 미분 파라미터로 사용할 때 f는 미분 가능한 스칼라 함수여야 하며, 이때 mvar은 스칼라, 벡터 또는 행렬을 나타낼 수 있습니다. f의 도함수는 텐서이거나 텐서에 대한 행렬일 수 없습니다. 예제는 벡터에 대해 미분하기 항목과 행렬에 대해 미분하기 항목을 참조하십시오.

데이터형: symmatrix

제한 사항

  • diff 함수는 기호 행렬 변수를 미분 파라미터로 사용할 경우 텐서 도함수를 지원하지 않습니다. 도함수가 텐서이거나 도함수가 텐서에 대한 행렬이면 diff 함수에서 오류가 발생합니다.

  • 둘 이상의 변수를 갖는 혼합 고계 도함수를 계산할 때는 n을 사용하여 도함수의 계수를 지정하지 마십시오. 대신 모든 미분 변수를 명시적으로 지정하십시오.

  • 더 나은 성능을 위해 diff는 모든 혼합 도함수 간에는 교환 법칙이 성립한다고 가정합니다. 예를 들어, 다음과 같습니다.

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

    대부분의 공학 및 과학 문제는 이 가정으로 충분합니다.

  • 미분 변수를 지정하지 않고 다변량 표현식 또는 함수 f를 미분하면 diffdiff(f,n)에 대한 중첩 호출이 다른 결과를 반환할 수 있습니다. 중첩 호출에서는 각 미분 단계에서 자체적으로 미분 변수를 결정하고 사용하기 때문입니다. diff(f,n)과 같은 호출에서 미분 변수는 symvar(f,1)에 의해 한 번 결정되고 모든 미분 단계에 사용됩니다.

  • abs 또는 sign을 포함하는 표현식이나 함수를 미분하려면 인수가 실수 값이어야 합니다. abssign의 인수가 복소수인 경우 diff 함수가 도함수를 형식적으로 계산하지만 이 결과는 일반적으로 유효하지 않습니다. 왜냐하면 abssign은 복소수 범위에서 미분 가능하지 않기 때문입니다.

버전 내역

R2006a 이전에 개발됨

모두 확장