Main Content

곡면에 대한 접평면 계산하기

이 예제에서는 유한 차분으로 함수 기울기(Gradient)의 근삿값을 계산하는 방법을 보여줍니다. 그런 다음 이러한 기울기 근삿값을 사용하여 곡면의 특정 지점에 대한 접평면을 플로팅하는 방법을 보여줍니다.

함수 핸들을 사용하여 함수 f(x,y)=x2+y2을 생성합니다.

f = @(x,y) x.^2 + y.^2;

gradient 함수를 사용하여 xy에 대한 f(x,y)의 편도함수의 근삿값을 구합니다. 메시 크기와 동일한 유한 차분 길이를 선택합니다.

[xx,yy] = meshgrid(-5:0.25:5);
[fx,fy] = gradient(f(xx,yy),0.25);

곡면의 특정 지점에 대한 접평면 P=(x0,y0,f(x0,y0))은 다음과 같이 지정됩니다.

z=f(x0,y0)+f(x0,y0)x(x-x0)+f(x0,y0)y(y-y0).

fx 행렬과 fy 행렬은 편도함수 fxfy에 대한 근삿값입니다. 이 예제에서 관심 있는 지점, 즉 접평면이 함수 곡면과 만나는 지점은 (x0,y0) = (1,2)입니다. 이 관심 있는 지점에서의 함수 값은 f(1,2) = 5입니다.

접평면 z에 대한 근삿값을 구하려면 이 관심 있는 지점에서의 도함수 값을 구해야 합니다. 해당 지점의 인덱스를 구하고 거기서 도함수 근삿값을 구하십시오.

x0 = 1;
y0 = 2;
t = (xx == x0) & (yy == y0);
indt = find(t);
fx0 = fx(indt);
fy0 = fy(indt);

접평면 z에 대한 방정식을 사용하여 함수 핸들을 만듭니다.

z = @(x,y) f(x0,y0) + fx0*(x-x0) + fy0*(y-y0);

원래 함수 f(x,y), 점 P, P에서 함수에 접하는 평면 부분인 z를 플로팅합니다.

surf(xx,yy,f(xx,yy),'EdgeAlpha',0.7,'FaceAlpha',0.9)
hold on
surf(xx,yy,z(xx,yy))
plot3(1,2,f(1,2),'r*')

Figure contains an axes object. The axes object contains 3 objects of type surface, line. One or more of the lines displays its values using only markers

측면 프로파일을 확인합니다.

view(-135,9)

Figure contains an axes object. The axes object contains 3 objects of type surface, line. One or more of the lines displays its values using only markers

참고 항목

관련 항목