首页 > 其他分享 >数学知识(三)

数学知识(三)

时间:2024-04-27 14:56:17浏览次数:14  
标签:return int 主元 -- 数学知识 有解 高斯消

一、高斯消元

高斯消元

高斯消元是用来求解多元线性方程组的方法,时间复杂度为O(n3)。

初等行列变换
  1. 把某一行乘以一个非0的数
  2. 交换某两行
  3. 将某行的若干倍加到零一行
【1】处理后形成阶梯型则有解
【2】不是阶梯型

左边均为0,右边非0,无解
左右均为0,有解
算法步骤
枚举每一列寻找绝对值最大的一行(使主元不为0)
将改行交换至最上方
将该行第一个数变为1
将所有行当前列全部消为0
固定当前行,重复此流程

int gauss(){
    int r,c;
    for(r=c=1;c<=n;++c){
        int t=r;
        for(int i=r;i<=n;++i)
            if(fabs(a[i][c])>fabs(a[t][c]))
                t=i;
        if(fabs(a[t][c])<eps)continue;
        for(int i=c;i<=n+1;++i)swap(a[r][i],a[t][i]);
        
        for(int i=n+1;i>=c;--i)a[r][i]/=a[r][c];
        
        for(int i=r+1;i<=n;++i)
            if(fabs(a[i][c])>eps)
                for(int j=n+1;j>=c;--j)
                    a[i][j]-=a[i][c]*a[r][j];
        r++;
    }
    if(r<n+1){
        for(int i=r;i<=n;++i)
            if(fabs(a[i][n+1])>eps)return 2;
        return 1;
    }
    for(int i=n-1;i>=1;--i)
        for(int j=i+1;j<=n;++j)
            a[i][n+1]-=a[i][j]*a[j][n+1];
    return 0;
}

高斯-约旦消元
将稀疏矩阵变成主对角矩阵,再除以主元
主元所在行不变,主元所在列变为0

标签:return,int,主元,--,数学知识,有解,高斯消
From: https://www.cnblogs.com/txxhyzhh/p/18162044

相关文章

  • 数学知识总结
    求n的p次方,对M的取模递归:#defineM10003intPowMod(intn,intp){ if(p==1) { returnn%M; } inttemp=Pow(n,p/2); intresult=(temp*temp)%M; if(p%2==1) { result=(result*n)%M; } returnresult;}非递归:#defineM10003int......
  • 基础数学知识
    果然还是又一出写一出的比较适合我,按计划写博客没有一点点动力素数筛虽然筛法很多,但我觉得也没必要把那么多些都写这儿,毕竟到时候用也只会用最好的那种所以这里就只写线性筛法:欧拉筛欧拉筛和埃氏筛有点相似,都是用比较小的素数来标记合数,但不同的是埃氏筛中一个合数可能被多个......
  • 数学知识--(质数,约数)
    本文用于个人算法竞赛学习,仅供参考目录一.质数的判定二.分解质因数三.质数筛1.朴素筛法 2.埃氏筛法3.线性筛法 四.约数1.求一个数的所有约数2.约数个数和约数之和3.欧几里得算法(辗转相除法)--求最大公约数一.质数的判定质数:质数是指在大于1的自然数中,除了1......
  • 你用过哪些真正实用的数学知识?
    我们系统性的学习了数学知识,有时候觉的数学毫无用处(例如学了高等数学,实用的还是Excel),有时候觉的数学是门槛(例如机器学习的入门就对数学有要求)。有时候我们只是觉的数学是难的,难的就应该有价值,但是日常生活工作中可能用到的数学工具最多也就是四则运算,最多用用线性组合y=k*x分析相......
  • ACM基础数学知识
    1、异或相同的数,异或结果为0,不同的数,异或结果为1.异或会用在nim博弈和一些数学中。可以找出n+1个数中,唯一一个与其他的数不同的数异或有个性质:一个数对另一个数异或两次,数值不变。性质应用:交换两个数x=x^y;//x=3^4y=x^y;//y=3^4^4=3x=x^y;//x=......
  • 信奥的数学知识如何储备?
    信奥的数学知识如何储备?大家一定要正视数学对信奥学的重要性,因为数学知识的缺失可能会导致我们信奥学习进行不下去。▼信奥需要的数学知识▼信奥学习一般是从5年级开始(特别聪明的低年级段也可以),学习会分成普及段、提高段、竞赛段等阶段。学生参加中国计算机学会(CCF)的非专业级......
  • 第四讲 数学知识——快速幂
    AcWing875.快速幂\(O(n\log_2b)\)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;typedeflonglongll;intn,a,b,p;intqp(inta,intb,intp){intres=1;while(b){if(b&......
  • 第四讲 数学知识——欧拉函数
    AcWing873.欧拉函数欧拉函数的定义\(1\)~\(N\)中与\(N\)互质的数的个数被称为欧拉函数,记为\(\phi(N)\)。若在算数基本定理中,\(N=p_1^{a_1}p_2^{a_2}...p_{m}^{a_m}\),则:\(\phi(N)=N\times\frac{p_1-1}{p_1}\times\frac{p_2-1}{p_2}\times...\times\frac{p_m-1}{p_m}\)......
  • 第四讲 数学知识——约数
    AcWing869.试除法求约数时间复杂度\(O(n\sqrta)\)#include<iostream>#include<cstring>#include<algorithm>#include<vector>usingnamespacestd;vector<int>res;intn,a;intmain(){cin>>n;while(n--){......
  • 第四讲 数学知识——质数
    AcWing866.试除法判定质数时间复杂度\(O(T\sqrta)\)#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;boolisprime(intx){if(x<2)returnfalse;for(inti=2;i<=x/i;++i){if(x......