zoukankan      html  css  js  c++  java
  • 高斯消元 模板

    原理

    手动模拟呢大家应该都会,小学知识。 
    从x1开始依次消元,消出一个矩阵,最后回带求解。

    Code

    //by floatiy
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    using namespace std;
    
    const double eps = 0.00001;
    
    int n;
    double a[105][105];
    double ans[105];
    
    void swap_judge(int x) {
        int det = x;
        for(int i = x + 1; i <= n; i++) {
            if(abs(a[i][x]) > abs(a[det][x])) det = i;
        }
        if(det != x) {
            for(int i = x; i <= n + 1; i++) {
                swap(a[x][i],a[det][i]);
            }
        }
        return;
    }
    
    void debug() {
        for(int i = 1; i <= n; i ++) {
            for(int j = 1; j <= n + 1; j++) {
                printf("%lf ",a[i][j]);
            }
            printf("
    ");
        }
        printf("
    ");
    }
    
    void Gauss() {
        double t;
        for(int i = 1; i <= n; i++) { //枚举行
    //      debug();
    //      Sleep(3000);system("cls");
            swap_judge(i);
            if(fabs(a[i][i])<=eps){
                printf("No Solution
    ");
                exit(0);
            }
            for(int j = i + 1; j <= n; j++) {
                if(fabs(a[j][i]) > eps) {
                    t = a[i][i] / a[j][i];
                    for(int k = i; k <= n + 1; k++) { //还有答案列,所以k+1
                        a[j][k] = a[j][k] * t - a[i][k];
                    }
                }
            }
    //      debug();
        }
    //  debug();
    //  system("cls");
        for(int i = n; i; i--) {
            for(int j = i + 1; j <= n; j++) {
                a[i][n + 1] -= a[i][j] * a[j][n + 1];
            }
            a[i][n + 1] /= a[i][i];
        }
    //  debug();
    }
    
    int main() {
        cin>>n;
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= n + 1; j++) {
                scanf("%lf",&a[i][j]);
            }
        }
        Gauss();
        for(int i = 1;i <= n;i++) {
            printf("%.2lf
    ",a[i][n + 1]);
        }
        return 0;
    }
  • 相关阅读:
    2020年房地产市场走势 贝壳找房
    MariaDB/Mysql skip-name-resolve
    纷享逍客 CRM SFA 销售全过程管理
    MariaDB & Percona & MySQL On Azure
    金蝶 入股 纷享逍客 法大大 Saas 崔牛会 选型宝
    CRM ERP etc
    mysql5.7升级到mariadb-server-10.0
    CRM Shiro 数据权限
    CRM、DMP、CDP,区别差异 互联网 数字 营销 专家
    机器学习 数据挖掘
  • 原文地址:https://www.cnblogs.com/floatiy/p/9463840.html
Copyright © 2011-2022 走看看