• 高斯消元


    O((n^{3}))
    线性方程组组成n*n的矩阵,而第n+1列是常系数
    高斯消元后第n+1行的值就是答案

    求解线性方程组的方法
    1.构造增广矩阵
    1.初等变换交换行位置
    2.加减消元化成阶梯型
    3.回带化为最简阶梯(对角线都是1)

    模板

    传送门

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const int maxn=105;
    const double eps=1e-7;
    int n;
    double a[maxn][maxn];
    bool Gauss(){//返回true表示有解,返回false表示没有解
        int r;
        double f;
        for(int i=0;i<n;i++){//因为是n*n行的矩阵,所以i两个作用
            r=i;
            for(int j=i+1;j<n;j++)//找到第i行下面第j列中最大的那个元素(此时i充当的是一行中的第i个数)
                if(fabs(a[j][i])>fabs(a[r][i])) r=j;
            if(fabs(a[r][i])<eps) return false;//都是0的情况,就是自由项的情况
            
            if(r!=i)//第r行和第i行交换
                for(int j=0;j<=n;j++) swap(a[r][j],a[i][j]);
            
            for(int k=i+1;k<n;k++){//此时i充当的是第i行
                f=a[k][i]/a[i][i];//第k行第一个非零数是第i行的对应的数的几倍
                for(int j=i;j<=n;j++) a[k][j]-=f*a[i][j];//整行都进行乘除
            }
        }
        //此时矩阵是一个阶梯型矩阵
        for(int i=n-1;i>=0;i--){//对n行的矩阵进行操作
            for(int j=i+1;j<n;j++) a[i][n]-=a[j][n]*a[i][j];
            a[i][n]/=a[i][i];//把对角线全部消成1
        }
        return true;
    }
    int main(){
        while(~scanf("%d",&n)){
            for(int i=0;i<n;i++){
                for(int j=0;j<n+1;j++){//n+1行,第n+1行是齐次方程组的常系数
                    scanf("%lf",&a[i][j]);
                }
            }
             if(!Gauss()){
                puts("No Solution");
            }else{
                for(int i=0;i<n;i++) printf("%.2lf
    ",a[i][n]);
            }
        }
        return 0;
    }
    
    

    对自由元的情况

    传送门
    有可能找不到一个(x_{i})系数为非零

  • 相关阅读:
    flex布局中transform出错
    RabbitMQ系列之Centos 7安装RabbitMQ 3.6.1
    解决windows下FileZilla server中文乱码问题
    IIS 7.5 + PHP-5.6.3 + mysql-5.6.21.1
    C# 速编神器LinqPad(新版6.5)
    一个MySql Sql 优化技巧分享
    IIS反向代理/Rewrite/https卸载配置
    zerotier 远程办公方案
    一次Mysql连接池卡死导致服务无响应问题分析(.Net Mysql.Data 6.9.9)
    ExpressCache
  • 原文地址:https://www.cnblogs.com/Emcikem/p/11619672.html
Copyright © 2020-2023  润新知