MATLAB金融风险管理师FRM(高阶实战)
上QQ阅读APP看书,第一时间看更新

3.4 空间平面

过空间一点,与已知直线相垂直平面唯一,即平面上一点和平面法向量确定一个平面。

平面法向量为n = [m, n, p]T,定点A坐标为(x0, y0, z0),平面任意点P坐标为(x, y, z)。如图3.20所示,向量PA垂直于n,得到如下平面解析式:

图3.20 空间平面定义

上式整理如下:

已知空间平面解析式如下:

它的任意一点法向量求解用本章前文方法,首先定义一个函数Fx, y, z)如下:

A点(x0, y0, z0)法向量通过下式求得:

从上式看到,平面各个点处法向量完全一致,和曲面上点具体位置无关。相信有些读者已经发现,上式n法向量定义和在上一章中介绍梯度几乎一致:

读者可能会发现,定义平面时通常采用的都是z = fx, y)形式,即xy为自变量,z = fx, y)为因变量。假设c = -1,对平面方程式做一个整理,得到下式:

fx, y)在某一点处梯度通过下式表达:

以上向量相当于空间法向量n在平面投影,如图3.21所示。在本章末会结合曲面继续讨论这一话题。

图3.21 空间法向量和平面投影

丛书第一册第5章中,展示过四个空间平面。这里,用以上方法求解并绘制法向量,如图3.22所示,发现平面上任意一点法向量平行。从梯度角度来看,这些梯度向量大小相等,方向相同。

图3.22 三个平面及其法向量

以下代码获得图3.22。

B4_Ch3_5.m

syms x y z
f1 = x + y - z;
f2 = y - z + 5;
f3 = x - z + 5;
f4 = z - 5;

figure(1)
subplot(2,2,1)
plot_fig(f1)

subplot(2,2,2)
plot_fig(f2)

subplot(2,2,3)
plot_fig(f3)

subplot(2,2,4)
plot_fig(f4)

function plot_fig(f)
syms x y z

[xx,yy] = meshgrid([0:0.5:5,0:0.5:5]);

f_z = solve(f,z);
ff_z = double(subs(f_z, [x y], {xx,yy}));
g = gradient(f, [x,  y z]);
mesh(xx,yy,ff_z); hold on

x0 = xx(1:2:end,1:2:end);
y0 = yy(1:2:end,1:2:end);
z0 = ff_z(1:2:end,1:2:end);

dFF_dx = subs(g(1), [x y z], {x0,y0,z0});
dFF_dy = subs(g(2), [x y z], {x0,y0,z0});
dFF_dz = subs(g(3), [x y z], {x0,y0,z0});

h1 = quiver3(x0,y0,z0,dFF_dx,dFF_dy,dFF_dz,...
    'color',[255,153,255]/255);
h1.AutoScaleFactor = 1;
view(135,15); grid off; box on
xlabel('x'); ylabel('y'); zlabel('z');
xticks([0:2:4]); yticks([0:2:4]); zticks([0:2:10])
end

如图3.23所示,空间内任意一点QxQ, yQ, zQ)到平面ax + by + cz + d = 0距离为dd计算式如下:

图3.23 空间任意一点到平面距离

上式可以推广到点到超平面距离;此外,这一公式的向量运算形式将出现在丛书第五本支持向量机(Support Vector Machine, SVM)内容中。