我有等式 A * x = b
A 的大小是矩阵大小为n x m, x 是m x 1而 b 是n x 1。
A 的行数多于列数(n 我的未知是 A ,因为n!= m, A 没有反转。
我的知识是两个向量 x 和 b 。基本上,我想找到 A 使( A * x - b )接近零。< / p>
最不正方形似乎合适,但我不确定如何继续,因为它似乎不符合我的教科书和wikipedia entry;通常矩阵 A 是已知的。如果OLS不合适,会是什么? Singluar价值分解?再一次,指针,我的线性代数是生锈的。 希望能够实现这个(python / C)。指向良好可读代码的指针?
答案 0 :(得分:1)
对此有无限多的解决方案,没有必要像奇异值分解一样复杂。
如果n = m,那么A可以只是一个对角矩阵,但你有n>米所以我们不能这么简单。
我们可以将此视为找到n个独立向量(A行)的问题,这样当您用x形成其点积时,它们会产生b的对应元素。因此,A * x = b(解是精确的)相当于找到A的行,这样如果A_i是A的第i行,则点(A_i,x)= b(i)。
以这种方式看待,解决方案是显而易见的!显然,它显示了为什么没有“解决方案”,但是无数许多这样的解决方案,所有这些都非常简单。
例如,选择x的非零元素。说它是第k个元素。然后创建A_i作为全零的向量,除了相应的x的非零元素。
A_i(k) = b(i)/x(k)
A_i的所有其他元素均为零。所以现在,形成点积。看到A * x = b完全由一个只有一个非零列的矩阵X求解,而那个列是一个相当简单的列。