如何用matlab求解空间中点到抛物面的最小距离
你好,同学,这就是个优化问题,很多求解方法,我这里列举一个:
a = 1;
b = 1;
z = @(x,y)a*x.^2+b*y.^2;% 抛物面方程
xp = 1; yp = 2; zp=2;%某个点的坐标
d = @(x)sqrt((xp-x(1)).^2+(yp-x(2)).^2+(zp-z(x(1),x(2))).^2);%距离函数
xsol = fminsearch(d, [0;0])%对距离函数求极小值的位置
[X,Y] = meshgrid(linspace(-2,2,51)); %下面是画图
Z = z(X,Y);
mesh(X,Y,Z)
hold on
plot3([xsol(1),xp],[xsol(2),yp],[z(xsol(1),xsol(2)),zp],'ro--','markerfacecolor','r');
axis equal
结果就是这个x= 0.670196131324210,y=1.340469266558896处满足距离最近
xsol =
0.670196131324210
1.340469266558896