3.6 曲面切面
三维空间曲面用z = f(x, y)函数来表达。三维空间某一点A(x0, y0, f(x0, y0))处曲面f(x, y)切面解析式也通过法向量来构造。根据前文反复提到的方法,首先构造函数F(x, y z)如下:
A点(x0, y0, z0)法向量通过下式求得:
类似上一节方法,用空间定点A和法向量n来定义曲面在A点切面,如图3.37所示。
图3.37 曲面任意一点切面和法向量
A点切面解析式具体计算过程如下:
其中,上式z即切面函数t(x, y),z0即f(x0, y0),替换得到下式:
这和丛书第一册第6章中采用切面解析式完全一致。上式即泰勒一阶展开矩阵表达式。
更一般情况,对于多元函数f(x),当x足够靠近xP时,f(x)函数值用泰勒一阶展开逼近,如下式:
其中,x为行向量,如下:
xP为泰勒级数展开点(expansion point of Taylor series);∇f(xP)为多元函数f(x)在xP处梯度行向量,如下:
其中,x为列向量,f(x)函数值用泰勒一阶展开逼近如下:
也用标量点乘来表达泰勒一阶级数展开,如下:
x为行向量时,f(x)泰勒二阶级数展开式矩阵运算如下:
其中,∇2f(x)P 便是我们在丛书第三册第2章数学部分提到黑塞矩阵,表达式如下:
x为列向量时,f(x)泰勒二阶级数展开式矩阵运算如下:
下面用同样方法求解一个空间隐函数切面。圆心位于原点单位正球体解析式如下:
以上球面定点A坐标如下:
为了求解切面,先构造F(x, y, z):
获得A点处法向量n:
然后就能获得球面A点切面解析式:
图3.38 所示为球面在A点法向量(按一定比例缩放)和过A点球面切面。
图3.38 球面某点处切面
以下代码获得图3.38。
B4_Ch3_6.m clc; close all; clear all syms x y z [xx, yy, zz] = ellipsoid(0,0,0,1,1,1,30); F = x^2 + y^2 + z^2 - 1; x0 = 1/2; y0 = 1/2; z0 = sqrt(2)/2; g = gradient(F, [x, y, z]) dF_dx = subs(g(1), [x y z], {x0,y0,z0}); dF_dy = subs(g(2), [x y z], {x0,y0,z0}); dF_dz = subs(g(3), [x y z], {x0,y0,z0}); n = [dF_dx, dF_dy, dF_dz]; P_vector = [x-x0, y-y0, z-z0]; eqn = dot(n, P_vector) == 0; plane_f = solve(eqn,z); [xx0,yy0] = meshgrid(x0-0.5:0.25:x0+0.5, y0-0.5:0.25:y0+0.5); zz0 = double(subs(plane_f,[x,y],{xx0,yy0})); figure(1) plot3(x0,y0,z0,'ro'); hold on mesh(xx, yy, zz) h_vector = quiver3(x0,y0,z0,dF_dx,dF_dy,dF_dz) h_vector.AutoScaleFactor = 0.5; mesh(xx0,yy0,zz0,'edgecolor','k','FaceAlpha',0) axis equal; box on; grid off xlabel('x'); ylabel('y'); zlabel('z'); view(60,30)
下面用向量叉乘来解释曲面法向量。图3.39在第2章讨论梯度和方向性微分时已经了解过。下面从曲面切向量和法向量角度,再来挖掘一下这幅图。
图3.39 曲面A点处两条切线和法线
图3.39曲面A点(x0, y0, f(x0, y0))处有两个切向量,一个平行于y轴,τy;另一个平行于x轴,τx。向量τy在x轴方向分量为0,在y轴分量记作Δy,在z轴分量为fy Δy。fy为f(x, y)沿y一阶偏微分。因此,向量τy记作:
令Δx = 1,向量τy记作:
同理,得到切向量τx表达式:
τy和τx两个向量叉乘结果即法向量n方向:
上式和之前推导法向量n反向。同样得到下式法向量n和之前推导同向:
然后,平面一个定点A(x0, y0, f(x0, y0)),和任意一点P(x, y, z)构成向量和法向量n,两者内积为0,如下:
同样也得到曲线A点切面解析式。此外,以上法向量随着A点坐标变化而变化;但法向量n在z轴上分量不变。