zoukankan      html  css  js  c++  java
  • 数学问题-解方程

    高斯消元法

    模板:

    void gauss(){
        int i,j,k,m;
        double t; 
        for(i=0;i<n;i++){    //对于每一行 
            //归一
            t=a[i][i];
            for(j=i;j<=n;j++)
                a[i][j]/=t;
            //相减
            for(j=0;j<n;j++) if(j!=i){        //扫描被减的每一行 
                t=a[j][i];    //倍减系数
                for(k=i;k<=n;k++){
                    a[j][k]-=a[i][k]*t;
                }
            }
        }
    }

    完整代码:

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string.h>
    #include <string>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 100
    #define MAX 0x06FFFFFF
    #define V vector<int>
    
    using namespace std;
    
    double a[LEN][LEN];
    int n;
    
    void printMat(){
        int i,j;
        FF(i,n){
            FF(j,n+1) 
                printf("%.0lf	",a[i][j]);
            puts("");
        }
    }
    
    void gauss(){
        int i,j,k,m;
        double t; 
        for(i=0;i<n;i++){    //对于每一行 
            //归一
            t=a[i][i];
            for(j=i;j<=n;j++)
                a[i][j]/=t;
            //相减
            for(j=0;j<n;j++) if(j!=i){        //扫描每一行 
                t=a[j][i];    //倍减系数
                for(k=i;k<=n;k++){
                    a[j][k]-=a[i][k]*t;
                }
            }
        }
    }
    
    
    
    int main(){
        freopen("D:\CbWorkspace\数学问题\高斯消元法.txt","r",stdin);
        int i,j;
        I("%d",&n);
        for(i=0;i<n;i++){
            for(j=0;j<=n;j++){
                I("%lf",&a[i][j]);
            }
        }
        gauss();
        for(i=0;i<n;i++){
            printf("x%d = %.2lf
    ",i+1,a[i][n]);
        }
        return 0;
        
        
    }
    View Code

    测试数据:

    3
    1 1 1 0
    1 2 4 -1
    1 3 9 0

    注:3行3列的系数矩阵,加上一列向量b,构成的增广矩阵

    测试效果:


  • 相关阅读:
    深度学习大牛Yoshua Bengio
    mysql select简单用法
    CF 191 div2
    MySQL 讨厌哪种类型的查询
    Python 中的list小结
    定时器常用的两种工作方式及编程要点
    Linux下which、whereis、locate、find 区别
    Dalvik虚拟机的优化机制
    [leetcode]Partition List
    tomcat:Could not publish to the server. java.lang.IndexOutOfBoundsException
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8454508.html
Copyright © 2011-2022 走看看