线性不等式系统

时间:2014-11-06 10:30:29

标签: matlab math optimization

好的,我有一个包含6个不等式和3个变量的系统,以及一个可能解决或不解决这个问题的点。要检查这一点是否能够解决不等式,我的问题是当它没有解决不等式来找到解决问题的最近点时。

我将介绍一个这样一个系统的例子:Ax< = b

A =

[  C11,  C12,  C13]
[ -C21, -C22, -C23]
[  C31,  C32,  C33]
[ -C41, -C42, -C43]
[  C51,  C52,  C53]
[ -C61, -C62, -C63]

B =

[ Cb1]
[ Cb2]
[ Cb3]
[ Cb4]
[ Cb5]
[ Cb6]

Pxyz =

[  pX,  pY,  pZ]

Pxyz是否解决Ax< = B?

if all(A*Pxyz<=b)
accept point
else
get the closest point to Pxyz (by Euclidean distance) that solves the system. How?
end

1 个答案:

答案 0 :(得分:3)

修改 尝试其中之一(使用2D问题进行测试):

方法1:

[Psol,fval,exitflag] = fmincon(@(Psol) norm(Pxyz-Psol), Pxyz, A, b)

方法2:

如果我理解正确,你有一个约束线性优化问题,更具体地说是一个约束线性最小二乘问题,可以使用lsqlin求解。它会是这样的:

if all(A*Pxyz <= b)
  % accept point
else
  % get the closest point to Pxyz (by Euclidean distance) that solves the system
  C = eye(length(b));
  [Psolu, resnorm, residual, exitflag] = lsqlin(C, Pxyz, A, b);
end

希望这有助于解决您的问题。