Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

differentiate

cfit 또는 sfit 객체 미분

설명

참고

cfit 객체에는 다음 구문을 사용하십시오.

fx = differentiate(FO, X)cfit 객체 FO를 벡터 X로 지정된 점에서 미분하여 결과를 fx로 반환합니다.

예제

[fx, fxx] = differentiate(FO, X)cfit 객체 FO를 벡터 X로 지정된 점에서 미분하여 결과를 fx로 반환하고 2계 도함수를 fxx로 반환합니다.

참고

sfit 객체에는 다음 구문을 사용하십시오.

[fx, fy] = differentiate(FO, X, Y)는 곡면 FOXY로 지정된 점에서 미분하여 결과를 fxfy로 반환합니다.

FOfit 함수로 생성된 곡면 피팅(sfit) 객체입니다.

XY는 배정밀도 배열이어야 하며, 서로 크기와 형태가 같아야 합니다.

모든 반환 인수는 XY와 크기와 형태가 동일합니다.

FO가 곡면 z=f(x,y)를 나타내는 경우 FX는 x에 대한 도함수(즉, dfdx)를 포함하고 FY는 y에 대한 도함수(즉, dfdy)를 포함합니다.

[fx, fy] = differentiate(FO, [X, Y])를 사용하여 계산 점을 단일 인수로 지정할 수 있습니다(여기서 XY는 열 벡터임).

[fx, fy, fxx, fxy, fyy] = differentiate(FO, ...)는 곡면 피팅 객체 FO의 1계 도함수와 2계 도함수를 계산합니다.

fxxx에 대한 2계 도함수(즉, 2fx2)를 포함합니다.

fxy는 혼합 2계 도함수(즉, 2fxy)를 포함합니다.

fyyy에 대한 2계 도함수(즉, 2fy2)를 포함합니다.

예제

모두 축소

기준 정현파 신호를 만듭니다.

xdata = (0:.1:2*pi)';
y0 = sin(xdata);

신호에 응답 종속적인 가우스 잡음을 추가합니다.

noise = 2*y0.*randn(size(y0)); 											
ydata = y0 + noise;

잡음이 있는 데이터를 사용자 지정 정현파 모델로 피팅합니다.

f = fittype('a*sin(b*x)');
fit1 = fit(xdata,ydata,f,'StartPoint',[1 1]);

예측 변수에서 피팅의 도함수를 구합니다.

[d1,d2] = differentiate(fit1,xdata);

데이터, 피팅 및 도함수를 플로팅합니다.

subplot(3,1,1)
plot(fit1,xdata,ydata) % cfit plot method
subplot(3,1,2)
plot(xdata,d1,'m') % double plot method
grid on
legend('1st derivative')
subplot(3,1,3)
plot(xdata,d2,'c') % double plot method
grid on
legend('2nd derivative')

Figure contains 3 axes objects. Axes object 1 with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve. Axes object 2 contains an object of type line. This object represents 1st derivative. Axes object 3 contains an object of type line. This object represents 2nd derivative.

다음과 같이 cfit plot 메서드를 사용하여 도함수를 계산하고 직접 플로팅할 수도 있습니다.

figure
plot(fit1,xdata,ydata,{'fit','deriv1','deriv2'})

Figure contains 3 axes objects. Axes object 1 with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve. Axes object 2 with xlabel x contains an object of type line. This object represents first derivative. Axes object 3 with xlabel x contains an object of type line. This object represents second derivative.

그러나 differentiate 메서드와 달리, plot 메서드는 도함수에 대한 데이터를 반환하지 않습니다.

differentiate 메서드를 사용하여 피팅의 기울기를 계산한 다음 quiver 함수를 사용하여 이러한 기울기를 화살표로 플로팅할 수 있습니다. 이 예제에서는 등고선 플롯 위에 기울기를 플로팅합니다.

미분 점을 만들고 데이터를 피팅합니다.

x = [0.64;0.95;0.21;0.71;0.24;0.12;0.61;0.45;0.46;...
0.66;0.77;0.35;0.66];
y = [0.42;0.84;0.83;0.26;0.61;0.58;0.54;0.87;0.26;...
0.32;0.12;0.94;0.65];
z = [0.49;0.051;0.27;0.59;0.35;0.41;0.3;0.084;0.6;...
0.58;0.37;0.19;0.19];
fo = fit( [x, y], z, 'poly32', 'normalize', 'on' );
[xx, yy] = meshgrid( 0:0.04:1, 0:0.05:1 );

differentiate 함수를 사용하여 피팅의 기울기를 계산합니다.

[fx, fy] = differentiate( fo, xx, yy );

quiver 함수를 사용하여 기울기를 플로팅합니다.

plot( fo, 'Style', 'Contour' );
hold on
h = quiver( xx, yy, fx, fy, 'r', 'LineWidth', 2 );
hold off
colormap( copper )

Figure contains an axes object. The axes object contains 2 objects of type contour, quiver.

최적화에서 도함수를 사용하려는 경우, 다음 예와 같이 fmincon을 위한 목적 함수를 구현할 수 있습니다.

function [z, g, H] = objectiveWithHessian( xy )

% The input xy represents a single evaluation point

z = f( xy );

if nargout > 1

[fx, fy, fxx, fxy, fyy] = differentiate( f, xy );

g = [fx, fy];

H = [fxx, fxy; fxy, fyy];

end

end

입력 인수

모두 축소

미분하려는 함수로, cfit 객체(곡선의 경우) 또는 sfit 객체(곡면의 경우)로 지정됩니다.

함수를 미분할 점으로, 벡터로 지정됩니다. 곡면의 경우 이 인수는 Y와 크기와 형태가 같아야 합니다.

함수를 미분할 점으로, 벡터로 지정됩니다. 곡면의 경우 이 인수는 X와 크기와 형태가 같아야 합니다.

출력 인수

모두 축소

함수의 1계 도함수로, XY와 크기와 형태가 동일한 벡터로 반환됩니다.

FO가 곡면 z=f(x,y)이면 fxx에 대한 도함수를 포함합니다.

함수의 2계 도함수로, XY와 크기와 형태가 동일한 벡터로 반환됩니다.

FO가 곡면 z=f(x,y)이면 fxxx에 대한 2계 도함수를 포함합니다.

함수의 1계 도함수로, XY와 크기와 형태가 동일한 벡터로 반환됩니다.

FO가 곡면 z=f(x,y)이면 fyy에 대한 도함수를 포함합니다.

함수의 2계 도함수로, XY와 크기와 형태가 동일한 벡터로 반환됩니다.

FO가 곡면 z=f(x,y)이면 fyyy에 대한 2계 도함수를 포함합니다.

함수의 혼합 2계 도함수로, XY와 크기와 형태가 동일한 벡터로 반환됩니다.

닫힌 형식을 갖는 라이브러리 모델의 경우 이 툴박스는 도함수를 해석적으로 계산합니다. 다른 모든 모델에 대해 툴박스는 다음과 같이 중앙 차분몫을 사용하여 1계 도함수를 계산합니다.

dfdx=f(x+Δx)f(xΔx)2Δx

여기서 x 값은 툴박스가 도함수를 계산하는 위치이고, Δx는 작은 숫자(대략 eps의 세제곱근 정도의 크기)이며, f(x+Δx)x+Δx에서 구한 fun의 값이고, f(xxΔ)xΔx에서 구한 fun의 값입니다.

툴박스는 다음 식을 사용하여 2계 도함수를 계산합니다.

d2fdx2=f(x+Δx)+f(xΔx)2f(x)(Δx)2

툴박스는 다음 식을 사용하여 곡면에 대한 혼합 도함수를 계산합니다.

2fxy(x,y)=f(x+Δx,y+Δy)f(xΔx,y+Δy)f(x+Δx,yΔy)+f(xΔx,yΔy)4ΔxΔy

버전 내역

R2006a 이전에 개발됨

참고 항목

| |