【问题标题】:Linear systems of inequations不等式的线性系统
【发布时间】:2015-01-02 19:45:34
【问题描述】:

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

我将展示一个这样的系统的例子:Ax

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

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

【问题讨论】:

  • 您能否详细说明一下这个问题?最接近什么?衡量标准是什么?
  • 你也可以在math.stackexchange.com问这个问题
  • @Arpi 嗨。最接近给定点 (Pxyz)。度量可以是欧几里得距离。
  • @Ander Biguri 谢谢我做到了。

标签: matlab math optimization


【解决方案1】:

编辑: 尝试其中一种(已通过 2D 问题测试):

方法一:

[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

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

【讨论】:

  • 似乎合乎逻辑。我会试一试的。
  • 这是正确的“lsqlin(A, Pxyz, A, b)”吗?您应该将“A,Pxyz”作为前两个参数吗?还是应该是 lsqlin(A, b, A, b,[],[],[],[],Pxyz)?
  • 你是对的,那是不正确的,我编辑了答案。
  • 两者似乎都有效,谢谢。对于这种特殊情况,我认为 lsqlin 是一个更好的解决方案。我现在的问题在于效率,因为我调用这些函数数百万次,但这是一个不同的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 2021-06-20
  • 2018-04-06
  • 2022-12-08
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多