避免矩阵的逆

时间:2015-09-25 12:13:19

标签: c matlab matrix-multiplication

我想避免计算矩阵的逆矩阵。我用C编写代码,所以我不能使用MATLAB命令。我想进行以下计算:

v = bk/G;

bk是2×1矩阵,G是2×2矩阵,v是浮点变量。

我目前正在这样做:

V = G^-1 * bk;

这样,我必须使用除法运算符来查找G^-1。我想避免使用分歧。

1 个答案:

答案 0 :(得分:4)

似乎你并没有试图避免反转矩阵以找到一种不同的方法来做到这一点。由于G是一个2x2矩阵,所以你很幸运,因为计算inverse of a 2x2 matrix是微不足道的。

G = [a b; c d]
G^-1 = (1/det(G)) * [d -b; -c a]

或在C:

double a, b, c, d;
double *G = {a, c, b, d}; // I used matlab internal (column-wise) order for the matrix here
double det = a * d - b * c;
if(det == 0.0) { /* Throw up your hands and lament */ }
double Ginv = {d / det, -c / det, -b / det, a / det};

其中det(G)是决定因素:ad - bc。您可以使用行列式来测试矩阵是否可逆。如果det(G) == 0,则行列式上的一个未定义且矩阵是不可逆的。