1. 程式人生 > >郵箱:[email protected]

郵箱:[email protected]

其實我線性代數考試每次都99,100的,可惜好久不學都快忘了。
沒想到acm居然要用到,早知道不扔筆記本了QAQ

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

行列式A=[322514322] , 312為主對角線 , 213為副對角線 , |A|為主對角線方向相乘 - 副對角線反向相乘 : 6+24+20-6-20-24=0

兩個行列式A(a,b),B(c,d)可乘當且僅當b=c,乘完後的行列式為

C(a,d),且C[i][j]=Ai×Bj

矩陣或行列式的一行或一列稱為向量

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

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

E表示單位矩陣,主對角線為1其他為0

A1A,A1×A=E

A1方法 : 把A和單位矩陣並排寫在一起,化解A至單位矩陣,右邊的單位矩陣變幻後即為A的逆


有如下方程組 :
這裡寫圖片描述
矩陣形式為 :
這裡寫圖片描述

A稱為係數矩陣, B放到A的右邊連在一起稱為增廣矩陣

B0: 稱此方程組為非齊次線性方程組
方程組有唯一解|A|0 A可逆
方程組有解 r(係數矩陣)=r(增廣矩陣)

B0: 稱此方程組為齊次線性方程組
方程組有唯一解且為全0解|A|0 A可逆
方程組有非0解|A|=0 A不可逆


初等變換 :
交換兩行 , 一行乘上一個非0數 , 一行加上另一行的k倍

高斯消元 :
通過初等變換將係數矩陣變成上三角矩陣 , 再變成單位矩陣 , 此時的B就是對應x的解
這裡寫圖片描述
上圖的解為 : x1=9,x2=1,x3=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;
}

範德蒙德行列式
這裡寫圖片描述
這裡寫圖片描述