Касательная плоская и нормальная линия неявной поверхности

Начиная с R2021b

В этом примере показано, как найти плоскость касательной и нормальную линию неявной поверхности. Этот пример использует переменные символьной матрицы (с symmatrix тип данных) для компактного математического обозначения.

Поверхность может быть задана неявно, такие как сфера x2+y2+z2=R2. В общем случае неявно заданная поверхность описывается уравнением f(x,y,z)=k. Этот пример находит плоскость касательной и нормальную линию сферы с радиусом R=14.

Создайте переменную символьной матрицы r представлять x,y,z координаты. Задайте шаровую функцию как f(r)=rr.

clear; close all; clc
syms r [1 3] matrix
f = r*r.'
f = rrT

Неявное уравнение f(r)=14 представляет сферу. Преобразуйте уравнение в syms тип данных с помощью symmatrix2sym. Постройте уравнение при помощи fimplicit3 функция.

feqn = symmatrix2sym(f == 14)
feqn = r1,12+r1,22+r1,32=14
fimplicit3(feqn)
axis equal
axis([-6 6 -6 6 -6 6])

Figure contains an axes object. The axes object contains an object of type implicitfunctionsurface.

Затем найдите касательную плоской и нормальной линией в точке r0=x0,y0,z0.

Вспомните что вектор градиента из f f(r)=fx(r),fy(r),fz(r). Уравнение для плоскости касательной в точке r0 затем дают fx(r0)(x-x0)+fy(r0)(y-y0)+fz(r0)(z-z0)=0. В компактном математическом обозначении уравнение плоскости касательной может быть записано как f(r0)(r-r0)=0.

Найдите градиент f(r) использование gradient функция. Обратите внимание на то, что результатом является переменная символьной матрицы 3 на 1.

fgrad = gradient(f,r)
fgrad = 2rT
size(fgrad)
ans = 1×2

     3     1

Определите уравнение для плоскости касательной. Используйте subs функция, чтобы оценить градиент в точке r0=1,-2,3.

r0 = [-2,1,3];
fplane = (r-r0)*subs(fgrad,r,r0)
fplane = 

2-Σ1+rΣ1Twhere  Σ1=(-213)

Постройте точку r0 использование plot3, и постройте плоскость касательной использование fimplicit3.

hold on
plot3(r0(1),r0(2),r0(3),'ro',MarkerSize = 10,MarkerFaceColor = 'r')
fimplicit3(symmatrix2sym(fplane == 0))

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

Уравнение для нормальной линии в точке r0 дают n(t)=x0,y0,z0+tfx(r0),fy(r0),fz(r0). В компактном математическом обозначении уравнение может быть записано как n(t)=r0+tf(r0).

Определите уравнение для нормальной линии.

syms t
n = r0 + t*subs(fgrad,r,r0).'
n = 

Σ1+2tΣ1where  Σ1=(-213)

Преобразуйте нормальное уравнение линии в syms тип данных с помощью symmatrix2sym. Извлеките параметрические кривые x(t), y(t), и z(t) для нормальной линии путем индексации в n. Постройте нормальный график с помощью fplot3.

n = symmatrix2sym(n)
n = (-4t-22t+16t+3)
fplot3(n(1),n(2),n(3),[0 1],'r->')

Figure contains an axes object. The axes object contains 4 objects of type implicitfunctionsurface, line, parameterizedfunctionline.