主要内容

到飞机的最短距离

这个问题

这个例子展示了如何用基于问题的方法来表达一个线性最小二乘问题。

问题是找出到原点(该点)的最短距离(0, 0, 0)上飞机 x 1 + 2 x 2 + 4 x 3. = 7 。换句话说,这个问题是最小化的 f ( x ) = x 1 2 + x 2 2 + x 3. 2 受限制 x 1 + 2 x 2 + 4 x 3. = 7 。这个函数f(x)被称为目标函数 x 1 + 2 x 2 + 4 x 3. = 7 是一个等式约束。更复杂的问题可能包含其他等式约束、不等式约束、上界或下界约束。

设置问题

为了使用基于问题的方法来规划这个问题,创建一个优化问题对象,称为pointtoplane

pointtoplane = optimproblem;

创建一个问题变量x作为一个有三个分量的连续变量。

x = optimvar (“x”3);

创建目标函数,并把它放在客观的的属性pointtoplane

obj =总和(x ^ 2);pointtoplane。客观的=obj;

创建线性约束并放入问题中。

v =(1、2、4);pointtoplane。约束=点(x,v) == 7;

问题的表述已经完成。要检查错误,请回顾问题。

显示(pointtoplane)
最小化:sum(x.^2) subject: x(1) + 2*x(2) + 4*x(3) == 7

公式是正确的。

解决这个问题

通过打电话解决问题解决

[溶胶,fval exitflag、输出]=解决(pointtoplane);
使用lsqlin解决问题。满足约束条件的最小值。优化是由于目标函数在可行方向上不递减,到最优容差值范围内,且约束条件满足到约束容差值范围内而完成的。
disp (sol.x)
0.3333 0.6667 1.3333

验证解决方案

验证解决方案,分析解决问题。回想一下,对于任何非零的t,向量(1、2、4)t * t * v =垂直于这个平面吗 x 1 + 2 x 2 + 4 x 3. = 7 。所以解决方案是xoptt * v为了价值t这满足方程点(t * v, v) = 7

t = 7 /点(v, v)
t = 0.3333
xopt = t * v
xopt =1×30.3333 0.6667 1.3333

事实上,向量xopt等于这个点吗sol.x解决发现。

相关的话题