ACM中的线性代数基础

其实我线性代数考试每次都99,100的,可惜好久不学都快忘了。
没想到acm居然要用到,早知道不扔笔记本了QAQ

#define A(n,m) n行m列的行列式A
#define A[n][m] 行列式A的第n行第m列的元素
#define |A| 行列式A的值

行列式A= [ 3 2 2 5 1 4 3 2 2 ] , 312为主对角线 , 213为副对角线 , |A|为主对角线方向相乘 - 副对角线反向相乘 : 6+24+20-6-20-24=0

两个行列式 A ( a , b ) , B ( c , d ) 可乘当且仅当 b = c ,乘完后的行列式为 C ( a , d ) ,且 C [ i ] [ j ] = A i × B j

矩阵或行列式的一行或一列称为向量

A ( a , b ) T 表示 A ( a , b ) 的转置, -> A T ( b , a ) A [ i ] [ j ] = A T [ j ] [ i ]

一个矩阵的秩 r 的定义为 : 至少r个行向量才能表示矩阵中任意一个行向量
比如 : (1,0,0)和(0,1,0)就可以表示(2,3,0)
所以r最大为min(n,m)

E表示单位矩阵,主对角线为1其他为0

A 1 A , A 1 × A = E
A 1 方法 : 把A和单位矩阵并排写在一起,化解A至单位矩阵,右边的单位矩阵变幻后即为A的逆



有如下方程组 :
这里写图片描述
矩阵形式为 :
这里写图片描述

A称为系数矩阵, B放到A的右边连在一起称为增广矩阵

B 0 : 称此方程组为非齐次线性方程组
方程组有唯一解 | A | 0 A可逆
方程组有解 r(系数矩阵)=r(增广矩阵)

B 0 : 称此方程组为齐次线性方程组
方程组有唯一解且为全0解 | A | 0 A可逆
方程组有非0解 | A | = 0 A不可逆



初等变换 :
交换两行 , 一行乘上一个非0数 , 一行加上另一行的k倍

高斯消元 :
通过初等变换将系数矩阵变成上三角矩阵 , 再变成单位矩阵 , 此时的B就是对应x的解
这里写图片描述
上图的解为 : x 1 = 9 , x 2 = 1 , x 3 = 6

/*高斯消元,系数矩阵为a[i][j],i=1…n,j=1…n,常数为a[i][n+1],i=1…n,返回值为是否有唯一解,答案存在a[i][n+1]*/
double a[15][15], del;
double eps = 1e-6;
bool gauss(int n) {
    for (int i = 1; i <= n; i++) {
        int k = i;
        for (int j = i + 1; j <= n; j++)if (fabs(a[j][i]) > fabs(a[k][i]))k = j;
        if (fabs(del = a[k][i]) < eps)return 0;
        for (int j = i; j <= n + 1; j++)swap(a[i][j], a[k][j]);
        for (int j = i; j <= n + 1; j++)a[i][j] /= del;
        for (k = 1; k <= n; k++)if (k != i) {
            del = a[k][i];
            for (int j = i; j <= n + 1; j++)a[k][j] -= a[i][j] * del;
        }
    }
    return 1;
}

范德蒙德行列式
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/jk_chen_acmer/article/details/82024354