主要内容

到飞机的最短距离

这个问题

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

问题是求离原点(点)的最短距离(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 .这个函数fx)称为目标函数而且 x 1 + 2 x 2 + 4 x 3. 7 是一个等式约束.更复杂的问题可能包含其他等式约束、不等式约束和上界或下界约束。

提出问题

要使用基于问题的方法来阐明这个问题,请创建一个优化问题对象pointtoplane

点到平面=优化问题;

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

X = optimvar(“x”3);

创建目标函数并将其放入客观的的属性pointtoplane

Obj = sum(x.^2);pointtoplane。客观的=obj;

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

V = [1,2,4];pointtoplane。约束条件= dot(x,v) == 7;

问题的公式是完整的。要检查错误,请检查问题。

显示(pointtoplane)
优化问题:求解:x最小化:sum(x.^2)服从:x(1) + 2*x(2) + 4*x(3) == 7

这个公式是正确的。

解决问题

打电话解决问题解决

[sol,fval,exitflag,output] = solve(pointtoplane);
使用lsqlin解决问题。最小值满足约束条件。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
disp (sol.x)
0.3333 0.6667 1.3333

验证方案

为了验证解决方案,分析解决问题。回想一下,对于任何非零t,向量T *[1,2,4] = 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解决发现。

相关的话题