好的,我有一个包含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
答案 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
希望这有助于解决您的问题。