修正线性方程组的解

计算科学 线性代数
2021-12-03 18:37:35

假设我们有一个线性方程组

Ax=b

其中矩阵, -向量。表示这个方程组的解。我想改变矩阵使得新的解决方案是向量其中A3×3xb3yAz

z1>y1,z2=y2,z3<y3

是否有系统的方法来实现这一目标?换句话说,我想要一种系统的方法来找出我应该在矩阵中引入哪些变化,使得A

  • 新解决方案的某些条目大于旧解决方案的相应条目。zy

  • 新解的其他条目等于旧解的相应条目。zy

  • 的一些其他条目小于旧解决方案的相应条目。zy

有没有一种方法或技术可以实现这一目标?这叫什么?谢谢你。

2个回答

这是一个系统的方法。数值求解一个优化问题以找到一个矩阵,它在某种意义上是最小的,比方说 Frobenius 范数,这样 where是新旧解元素之间的某个指定的最小分离量,并且是必需的,因为数值优化求解器不处理连续变量的严格不等式。E

(A+E)x=b
x1y1+d
x2=y2
x3y3d
d

我在这里展示了 CVX(在 MATLAB 下)中 3 x 3实现。但这很容易推广到更高的维度和许多变化。 是优化问题的输入数据,是优化中要求解的(决策)变量。AAbydxE

cvx_begin
variables x(3) E(3,3)
minimize(norm(E,'fro'))
subject to
(A+E)*x == b
x(1) >= y(1) + d
x(1) == y(2) 
x(3) <= y(3) - d
cvx_end

最后,E 将是具有满足约束的最小 Frobenius 范数的矩阵。请注意,如果是奇异的并且存在满足所有约束的解决方案,其中是零矩阵(即,不“改变”),那么这种解决方案将通过这种优化方法找到,而无需任何特殊逻辑。AEA

如果你想,给定一个解决方案,获得矩阵,系统您可以这样做: 作为矩阵 A 的列。AAx=b

Ax=[a1,a2,a3]x=x1a1+x2a2+x3a3=b
ai

选择线性独立向量并按如下方式 计算 确保得到的矩阵是非奇异的,即选择例如垂直于a1a2a3

a3=1x3bx1x3a1x2x3a2
Aa1a2b