Вычисление касательной плоскости к поверхности

Этот пример показывает, как аппроксимировать градиенты функции конечными различиями. Затем показано, как построить график касательной плоскости к точке на поверхности с помощью этих аппроксимированных градиентов.

Создайте функцию f(x,y)=x2+y2 использование указателя на функцию.

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

Аппроксимируйте частные производные f(x,y) по отношению к x и y при помощи gradient функция. Выберите конечную длину различия, которая совпадает с размером сетки.

[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).

The fx и fy матрицы являются приближениями к частным производным fx и fy. Точка интереса в этом примере, где тангенциальная плоскость встречается с функциональной поверхностью, является (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и кусок плоскости z тангенс функции в P.

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. The axes contains 3 objects of type surface, line.

Просмотр бокового профиля.

view(-135,9)

Figure contains an axes. The axes contains 3 objects of type surface, line.

См. также

Похожие темы