这个例子展示了如何用基于问题的方法来表述一个线性最小二乘问题。
问题是求出到原点(点)的最短距离(0, 0, 0)
)上飞机
.换句话说,这个问题就是最小化
受约束
.这个函数f(x)称为目标函数和
是一个等式约束.更复杂的问题可能包含其他等式约束、不等式约束和上界或下界约束。
为了用基于问题的方法来表述这个问题,创建一个优化问题对象,称为pointtoplane
.
pointtoplane = optimproblem;
创建一个问题变量x
作为一个有三个分量的连续变量。
x = optimvar (“x”3);
创建目标函数并把它放到客观的
的属性pointtoplane
.
obj =总和(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
这个公式是正确的。
通过打电话来解决问题解决
.
[溶胶,fval exitflag、输出]=解决(pointtoplane);
使用lsqlin解决问题。找到满足约束条件的最小值。优化完成是因为目标函数在可行方向上不减小到最优性公差的值内,约束条件满足到约束公差的值内。
disp (sol.x)
0.3333 0.6667 1.3333
验证解决方案,分析地解决问题。回想一下,对于任何非零t
,向量(1、2、4)t * t * v =
垂直于平面吗
.所以解决点xopt
是t * 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
那解决
发现。