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)은 기호 행렬 변수 또는 기호 행렬 함수에 대해 f 를 미분합니다.

예제

예제

모두 축소

함수 f(x) = 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

표현식 sin(x*t^2)의 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에 대해 표현식 x*cos(x*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의 2계 도함수를 구합니다.

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에 대해 표현식 x*sin(x*y)를 미분합니다.

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

모든 미분 변수를 지정하여 혼합 고계 도함수를 계산할 수도 있습니다. 변수 x, x, x, y에 대해 표현식의 혼합 4계 도함수를 구합니다.

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

R2021a 이후

벡터에 대한 도함수를 계산하려면 기호 행렬 변수를 사용하면 됩니다. 예를 들어 표현식 α=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

R2021a 이후

행렬에 대한 도함수를 계산하려면 기호 행렬 변수를 사용하면 됩니다. 예를 들어 표현식 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

R2022a 이후

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

함수 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)

X에 대해 함수를 미분합니다.

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

R2023b 이후

벡터에 대한 스칼라 표현식의 기울기를 구하기 위해 기호 행렬 변수를 미분 파라미터로 사용할 수 있습니다.

3개의 성분을 갖는 벡터를 나타내는 기호 행렬 변수 X를 만듭니다. 이러한 성분이 Symbolic Math Toolbox™에 어떻게 저장되는지 확인하려면 symmatrix2sym을 사용하여 기호 행렬 변수의 요소를 표시합니다.

syms X [1 3] matrix
symmatrix2sym(X)
ans = (X1,1X1,2X1,3)

기호 행렬 변수의 성분은 X1_1, X1_2, X1_3입니다. 이들 성분에 대해 3개의 기호 스칼라 변수를 만듭니다. 이러한 스칼라 변수를 사용하여 스칼라 기호 표현식 expr을 만듭니다.

syms X1_1 X1_2 X1_3
expr = 2*X1_2*sin(X1_1) + 3*sin(X1_3)*cos(X1_2);

X에 대한 스칼라 표현식 expr의 기울기를 구합니다. diff 함수는 X의 각 성분에 대해 expr의 1계 편도함수를 구합니다.

g = diff(expr,X)
g = 

Σ1where  Σ1=(2X1,2cos(X1,1)2sin(X1,1)-3sin(X1,2)sin(X1,3)3cos(X1,2)cos(X1,3))

입력 인수

모두 축소

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

  • 기호 표현식

  • 기호 함수

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

  • 기호 행렬 변수

  • 기호 행렬 함수

  • 숫자 표현식

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

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

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

미분 파라미터로, 기호 스칼라 변수, 기호 함수 또는 diff 함수를 사용하여 생성한 도함수로 지정됩니다.

기호 함수 var = f(x) 또는 도함수 var = diff(f(x),x)에 대해 미분을 지정하는 경우 첫 번째 인수 f는 다음 값 중 어느 것도 포함해서는 안 됩니다.

  • 적분 변환(예: fourier, ifourier, laplace, ilaplace, htrans, ihtrans, ztrans, iztrans)

  • limit 또는 int를 포함하는 미평가 기호 표현식

  • 특정 점에서 평가된 기호 함수(예: f(3) 또는 g(0))

데이터형: sym | symfun

미분 파라미터로, 기호 스칼라 변수, 기호 함수 또는 diff 함수를 사용하여 생성한 도함수로 지정됩니다.

데이터형: sym | symfun

행렬 형식의 미분 파라미터로, 기호 행렬 변수 또는 기호 행렬 함수로 지정됩니다.

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

벡터 또는 행렬 mvar에 대해 스칼라 함수 f를 미분할 때 diff는 입력 크기 mvar의 전치인 출력 크기를 반환하는 규칙을 사용합니다. 예를 들어 f가 1×1 스칼라이고 mvar이 1×3 행 벡터이면 diff(f,mvar)은 전치된 mvar의 각 요소에 대한 f의 도함수를 구하고 결과를 3×1 열 벡터로 반환합니다.

데이터형: symmatrix | symfunmatrix

제한 사항

  • 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 이전에 개발됨

모두 확장