使用python为非平方矩阵A求解Ax = b [英] solving Ax =b for a non-square matrix A using python
问题描述
我关注的特殊情况是A
是一个n x d矩阵(其中k A
完成的向量变成方矩阵?
I'm focusing on the special case where A
is a n x d matrix (where k < d) representing an orthogonal basis for a subspace of R^d and b is known to be inside the subspace.
I thought of using the tools provided with numpy
, however they only work with square matrices. I had the approach of filling in the matrix with some linearly independent vectors to "square" it and then solve, but I could not figure out how to choose those vectors so that they will be linearly independent of the basis vectors, plus I think it's not the only approach and I'm missing something that can make this easier.
is there indeed a simpler approach than the one I mentioned? if not, how indeed do I choose those vectors that would complete A
into a square matrix?
推荐答案
As you mentioned, np.linalg.solve needs a full-rank square matrix.
对于所有其他线性情况,如果您对min||Ax-b||^2.
感兴趣(您可能对),则可以使用
For all the other linear cases, if you are interested in min||Ax-b||^2.
(you probably are) you can use np.linalg.lstsq.
通过计算最小化欧几里德2-范数||的向量x来解决方程a x = b的问题. b-a x || ^ 2.
Solves the equation a x = b by computing a vector x that minimizes the Euclidean 2-norm || b - a x ||^2.
方程可能是欠定的,确定的或过度确定的(即a的线性独立行的数量可以小于,等于或大于其线性数量)独立的列).如果a是正方形且具有全秩,则x(但针对四舍五入误差)是方程的精确"解.
The equation may be under-, well-, or over- determined (i.e., the number of linearly independent rows of a can be less than, equal to, or greater than its number of linearly independent columns). If a is square and of full rank, then x (but for round-off error) is the "exact" solution of the equation.
(我的粗体注释)
原始np.linalg.solve
的文档中也提到了这一点:
This is also mentioned in the docs of the original np.linalg.solve
:
a必须是正方形并且是全秩的,即所有行(或等效地,列)必须是线性独立的;如果任何一个都不成立,请使用lstsq作为系统/方程的最小二乘最佳解决方案".
a must be square and of full-rank, i.e., all rows (or, equivalently, columns) must be linearly independent; if either is not true, use lstsq for the least-squares best "solution" of the system/equation.
这篇关于使用python为非平方矩阵A求解Ax = b的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!