郵箱:[email protected]
阿新 • • 發佈:2019-01-30
其實我線性代數考試每次都99,100的,可惜好久不學都快忘了。
沒想到acm居然要用到,早知道不扔筆記本了QAQ
#define A(n,m) n行m列的行列式A
#define A[n][m] 行列式A的第n行第m列的元素
#define |A| 行列式A的值
行列式A= , 312為主對角線 , 213為副對角線 , |A|為主對角線方向相乘 - 副對角線反向相乘 : 6+24+20-6-20-24=0
兩個行列式可乘當且僅當,乘完後的行列式為,且
矩陣或行列式的一行或一列稱為向量
表示的轉置, ->
一個矩陣的秩 r 的定義為 : 至少r個行向量才能表示矩陣中任意一個行向量
比如 : (1,0,0)和(0,1,0)就可以表示(2,3,0)
所以r最大為min(n,m)
E表示單位矩陣,主對角線為1其他為0
求 方法 : 把A和單位矩陣並排寫在一起,化解A至單位矩陣,右邊的單位矩陣變幻後即為A的逆
有如下方程組 :
矩陣形式為 :
A稱為係數矩陣, B放到A的右邊連在一起稱為增廣矩陣
稱此方程組為非齊次線性方程組
方程組有唯一解 A可逆
方程組有解 r(係數矩陣)=r(增廣矩陣)
稱此方程組為齊次線性方程組
方程組有唯一解且為全0解 A可逆
方程組有非0解 A不可逆
初等變換 :
交換兩行 , 一行乘上一個非0數 , 一行加上另一行的k倍
高斯消元 :
通過初等變換將係數矩陣變成上三角矩陣 , 再變成單位矩陣 , 此時的B就是對應x的解
上圖的解為 :
/*高斯消元,係數矩陣為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;
}
範德蒙德行列式