Начиная с R2021b
В этом примере показано, как найти плоскость касательной и нормальную линию неявной поверхности. Этот пример использует переменные символьной матрицы (с symmatrix
тип данных) для компактного математического обозначения.
Поверхность может быть задана неявно, такие как сфера . В общем случае неявно заданная поверхность описывается уравнением . Этот пример находит плоскость касательной и нормальную линию сферы с радиусом .
Создайте переменную символьной матрицы представлять координаты. Задайте шаровую функцию как .
clear; close all; clc syms r [1 3] matrix f = r*r.'
f =
Неявное уравнение представляет сферу. Преобразуйте уравнение в syms
тип данных с помощью symmatrix2sym
. Постройте уравнение при помощи fimplicit3
функция.
feqn = symmatrix2sym(f == 14)
feqn =
fimplicit3(feqn)
axis equal
axis([-6 6 -6 6 -6 6])
Затем найдите касательную плоской и нормальной линией в точке .
Вспомните что вектор градиента из . Уравнение для плоскости касательной в точке затем дают . В компактном математическом обозначении уравнение плоскости касательной может быть записано как .
Найдите градиент использование gradient
функция. Обратите внимание на то, что результатом является переменная символьной матрицы 3 на 1.
fgrad = gradient(f,r)
fgrad =
size(fgrad)
ans = 1×2
3 1
Определите уравнение для плоскости касательной. Используйте subs
функция, чтобы оценить градиент в точке .
r0 = [-2,1,3]; fplane = (r-r0)*subs(fgrad,r,r0)
fplane =
Постройте точку использование plot3
, и постройте плоскость касательной использование fimplicit3
.
hold on plot3(r0(1),r0(2),r0(3),'ro',MarkerSize = 10,MarkerFaceColor = 'r') fimplicit3(symmatrix2sym(fplane == 0))
Уравнение для нормальной линии в точке дают . В компактном математическом обозначении уравнение может быть записано как .
Определите уравнение для нормальной линии.
syms t
n = r0 + t*subs(fgrad,r,r0).'
n =
Преобразуйте нормальное уравнение линии в syms
тип данных с помощью symmatrix2sym
. Извлеките параметрические кривые , , и для нормальной линии путем индексации в n
. Постройте нормальный график с помощью fplot3
.
n = symmatrix2sym(n)
n =
fplot3(n(1),n(2),n(3),[0 1],'r->')