Skip to content

Commit 9b31fe4

Browse files
committed
update
1 parent 18a173b commit 9b31fe4

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

math/math.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,3 +758,50 @@ $$
758758
&=\frac{\phi(x)x}{2}
759759
\end{align}
760760
$$
761+
762+
# gauss消元
763+
764+
# gauss消元模板
765+
# gauss_jordan对角消元
766+
```c++
767+
typedef double Matrix[maxn][maxn];
768+
int n;
769+
//消元为对角阵
770+
void gauss_jordan(Matrix A,int n){
771+
//A增广矩阵,第n列是结果列
772+
for(int i=0 ; i<n ; ++i){
773+
int r = i;//元素最大列
774+
for(int j = i+1 ; j<n ; ++j)
775+
if(abs(A[j][i]) > abs(A[r][i]))r = j;
776+
if(abs(A[r][i]) < eps)continue;
777+
if(r!=i)for(int j = 0 ; j<=n; ++j)swap(A[r][j],A[i][j]);//交换
778+
//与i行以外的所有行消元,化为阶梯阵,与gauss消元的不同
779+
for(int k=0 ; k<n ; ++k)
780+
if(k!=i)
781+
for(int j = n ; j>=i ; --j)A[k][j] -=A[k][i]/A[i][i]*A[i][j];//精度.
782+
}
783+
}
784+
```
785+
786+
# 异或方程组消元求秩
787+
788+
```c++
789+
int my_rank(Matrix &A, int m,int n){
790+
int i=0 ,j = 0,r;
791+
while (i<m && j < n) {
792+
int r =i ;
793+
for(int k =i ; k<m ; ++k)
794+
if(A[k][j]){r=k ; break;}
795+
if(A[r][j]){
796+
if(r != i)for(int k = 0 ; k<n ; ++k)swap(A[r][k],A[i][k]);
797+
for(int u= i+1 ; u<m ; ++u)
798+
if(A[u][j])
799+
for(int k = j ; k<n ; ++k)
800+
A[u][k] ^= A[i][k];
801+
++i;
802+
}
803+
j++;
804+
}
805+
return i;
806+
}
807+
```

0 commit comments

Comments
 (0)