• 高斯消元


    /约旦消元法大致思路如下:
    1.选择一个尚未被选过的未知数作为主元,选择一个包含这个主元的方程。
    2.将这个方程主元的系数化为1。
    3.通过加减消元,消掉其它方程中的这个未知数。
    4.重复以上步骤
    /

    #include<bits/stdc++.h> 
    #define rep(i,a,b) for(int i=a;i<=b;++i)
    #define dwn(i,a,b) for(int i=a;i>=b;--i)
    #define X (c^48)
    #define C c=getchar()
    #define ee(i,x) for(int i=head[x];i;i=e[i].next)
    template <typename T> void inline rd(T&x){char c;int f=1;while(!isdigit(C))if(c=='-')f=-1;x=X;while(isdigit(C))x=x*10+X;x*=f;}
    #define debug printf("Now is %d
    ",__LINE__);
    using namespace std;
    #define N 105
    double a[N][N];
    int n;
    int main()
    {
    	freopen("read.txt","r",stdin); 
        rd(n);
        rep(i,1,n)
        	rep(j,1,n+1)
        		rd(a[i][j]);
    	
        rep(i,1,n)//枚举列
        {
        	int max=i;
            rep(j,i+1,n)//选出该列最大系数 
                if(fabs(a[j][i])>fabs(a[max][i]))//fabs是取浮点数的绝对值的函数
                    max=j;
            rep(k,1,n+1)
            	swap(a[max][k],a[i][k]);
                
    		if(!a[i][i])//最大值等于0则说明该列都为0,肯定无解||有无数种解 
            {
                puts("No Solution");
                return 0;
            }
            
    		rep(j,1,n)//每一项都减去一个数(小学加减消元)
            {
                if(j!=i)
                {
                    double temp=a[j][i]/a[i][i];
                    rep(k,i+1,n+1)
                        a[j][k]-=a[i][k]*temp;
                }
            }
    	}
        //上述操作结束后,矩阵会变成这样
        /*
        k1*a=e1
        k2*b=e2
        k3*c=e3
        k4*d=e4
        e.g.
        2     0    0          2
        0     3/2  0         -2
        0     0    2/3        2
        */
        //所以输出的结果要记得除以该项系数,消去常数
    	rep(i,1,n)
    		printf("%.2lf
    ",a[i][n+1]/a[i][i]);
    	return 0;
    }
    
  • 相关阅读:
    利用Spark-mllab进行聚类,分类,回归分析的代码实现(python)
    c#项目返回文件案例
    设计模式 —— 组合模式
    设计模式 —— 备忘录
    设计模式 ——状态模式
    设计模式 —— 中介者模式
    设计模式 —— 适配器
    设计模式 —— 代理模式
    设计模式 ——门面模式
    设计模式 —— 享元模式
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11635524.html
Copyright © 2020-2023  润新知