gradient

수치적 기울기(Numerical Gradient)

설명

예제

FX = gradient(F)는 벡터 F의 1차원 수치적 기울기를 반환합니다. 출력값 FX는 x(가로) 방향의 차인 ∂F/∂x에 해당합니다. 점 사이의 간격은 1이라고 가정합니다.

예제

[FX,FY] = gradient(F)는 행렬 F의 2차원 수치적 기울기에서 x와 y 성분을 반환합니다. 추가 출력값 FY는 y(세로) 방향의 차인 ∂F/∂y에 해당합니다. 각 방향의 점 사이 간격은 1인 것으로 가정합니다.

[FX,FY,FZ,...,FN] = gradient(F)F수치적 기울기에서 N개의 성분을 반환합니다. 여기서 FN차원의 배열입니다.

예제

[___] = gradient(F,h)h를 각 방향에 있는 점 사이의 균일 간격으로 사용합니다. 위에 열거된 구문에 포함된 모든 출력 인수를 지정할 수 있습니다.

예제

[___] = gradient(F,hx,hy,...,hN)F 각 차원에서의 간격을 결정하는 N개의 간격 파라미터를 지정합니다.

예제

모두 축소

단조 증가(Monotonically Increasing)하는 벡터의 기울기를 계산합니다.

x = 1:10
x = 1×10

     1     2     3     4     5     6     7     8     9    10

fx = gradient(x)
fx = 1×10

     1     1     1     1     1     1     1     1     1     1

그리드 상에서 xe-x2-y2의 2차원 기울기를 계산합니다.

x = -2:0.2:2;
y = x';
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z);

동일한 Figure에 등고선과 벡터를 플로팅합니다.

figure
contour(x,y,z)
hold on
quiver(x,y,px,py)
hold off

특정 점에서의 기울기를 사용하여 인근 점에서의 함수 값을 선형적으로 근사한 후 실제 값과 비교합니다.

함수 값의 선형 근삿값을 구하는 방정식은 다음과 같습니다.

f(x)f(x0)+(f)x0(x-x0).

즉, 특정 점 x0에서의 함수 값 f(x0)과 도함수의 기울기 (f)x0을 알면 이 정보를 이용해 인근 점에서의 함수 값을 근사할 수 있습니다(f(x)=f(x0+ϵ)).

-1과 0.5 사이의 사인 함수 값 몇 개를 계산합니다. 그런 다음 기울기를 계산합니다.

y = sin(-1:0.25:0.5);
yp = gradient(y,0.25);

x = 0.5에서의 함수 값과 도함수를 사용하여 sin(0.5005)의 값을 예측합니다.

y_guess = y(end) + yp(end)*(0.5005 - 0.5)
y_guess = 0.4799

비교를 위해 실제 값을 계산합니다.

y_actual = sin(0.5005)
y_actual = 0.4799

지정된 점에서 다변량 함수의 기울기 값을 구합니다.

다변량 함수 f(x,y)=x2y3이 있다고 가정합니다.

x = -3:0.2:3;
y = x';
f = x.^2 .* y.^3;
surf(x,y,f)
xlabel('x')
ylabel('y')
zlabel('z')

그리드상의 기울기를 계산합니다.

[fx,fy] = gradient(f,0.2);

(1,-2)에서 기울기 값을 추출합니다. 이 기울기 값을 추출하려면 먼저 사용할 점의 인덱스를 구하십시오. 그런 다음 인덱스를 사용하여 fxfy에서 해당 기울기 값을 추출합니다.

x0 = 1;
y0 = -2;
t = (x == x0) & (y == y0);
indt = find(t);
f_grad = [fx(indt) fy(indt)]
f_grad = 1×2

  -16.0000   12.0400

점 (1,-2)에서 f(x,y)=x2y3의 정확한 기울기 값은 다음과 같습니다.

(f)(1,-2)=2xy3iˆ+3x2y2jˆ=-16iˆ+12jˆ.

입력 인수

모두 축소

입력 배열로, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.

데이터형: single | double
복소수 지원 여부:

모든 방향에서의 점 간 균일 간격으로, 스칼라로 지정됩니다.

예: [FX,FY] = gradient(F,2)

데이터형: single | double
복소수 지원 여부:

각 방향에서의 점 간 간격으로, 각각 스칼라 또는 벡터 입력값으로 지정됩니다. 입력값 개수는 F의 배열 차원 수와 일치해야 합니다. 각각의 입력값은 스칼라 또는 벡터일 수 있습니다.

  • 스칼라는 해당 차원에서의 균일한 간격을 지정합니다.

  • 벡터는 F의 해당 차원에서의 값의 좌표를 지정합니다. 이 경우 벡터의 길이는 해당 차원의 크기와 일치해야 합니다.

예: [FX,FY] = gradient(F,0.1,2)

예: [FX,FY] = gradient(F,[0.1 0.3 0.5],2)

예: [FX,FY] = gradient(F,[0.1 0.3 0.5],[2 3 5])

데이터형: single | double
복소수 지원 여부:

출력 인수

모두 축소

수치적 기울기로, F와 크기가 동일한 배열로 반환됩니다. 첫 번째 출력 인수 FXF의 두 번째 차원을 따라가는 기울기이며, 항상 열을 가로지릅니다. 두 번째 출력 인수 FYF의 첫 번째 차원을 따라가는 기울기이며, 항상 행을 가로지릅니다. 세 번째 출력 인수 FZ와 그 이후 출력 인수의 경우, N번째 출력 인수는 FN번째 차원에 대한 기울기가 됩니다.

세부 정보

모두 축소

수치적 기울기(Numerical Gradient)

함수의 수치적 기울기는 알려진 특정 점의 함수 값을 사용하여 각 차원에서 편도함수 값을 추정하는 한 가지 방법입니다.

2개의 변수를 가진 함수 F(x,y)의 기울기는 다음과 같습니다.

F=Fxi^+Fyj^.

이 기울기는 F 값이 증가하는 방향을 가리키는 벡터의 집합으로 간주될 수 있습니다. MATLAB®에서는 변수 개수에 관계없이 모든 함수의 수치적 기울기를 계산할 수 있습니다. N개의 변수를 갖는 함수 F(x,y,z, ...)에서 기울기는 다음과 같습니다.

F=Fxi^+Fyj^+Fzk^+...+FNn^.

  • 여러 개의 수치 도함수를 계산하려면 gradient를 여러 번 호출하는 대신 diff 또는 사용자 지정 알고리즘을 사용하십시오.

알고리즘

gradient는 내부 데이터 점에 대한 중심 차분을 계산합니다. 예를 들어, 가로 기울기 G = gradient(A)를 충족하는 단위 간격의 데이터로 구성된 행렬 A가 있다고 가정하겠습니다. 내부 기울기 값 G(:,j)는 다음과 같습니다.

G(:,j) = 0.5*(A(:,j+1) - A(:,j-1));

첨자 j2N-1 사이의 값이며, N = size(A,2)입니다.

gradient단방향 차분을 사용하여 행렬 가장자리에서의 값을 계산합니다.

G(:,1) = A(:,2) - A(:,1);
G(:,N) = A(:,N) - A(:,N-1);

점 간격을 지정하면 gradient는 그에 따라 차분을 스케일링합니다. 출력값을 2개 이상 지정하면 이 함수가 비슷한 방법으로 다른 차원의 차분도 계산합니다. diff 함수와 달리 gradient는, 입력값과 동일한 개수의 요소를 배열로 반환합니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

참고 항목

|

R2006a 이전에 개발됨