• 高斯消元学习笔记


    概述 & 用法

    高斯消元就是一种解方程的方法

    现在有个n个方程,n个未知数组成的方程组:
    (a_{i,1}*x_1+a_{i,2}*x_1...+a_{i,n}*x_n=b_i)
    .
    .
    .
    然后我们把系数都拿出来组成一个 (n*(n+1)) 的矩阵
    接下来就是消消消

    具体方法:
    按列消除,目标是矩阵中只剩下 (a_{i,i}) ,其余元素皆为0

    枚举每一列 i

    找到这列中最大的元素,将该行与第i行整体调换一下
    然后将第i行所有元素除以 (a_{i,i}),使得 (a_{i,i}==1)
    再将其余行每一行都减掉第i行乘一个常数,使得第i列除 (a_{i,i}) 外都为0
    最后剩下的第 n+1 列就是每个未知数的值

    代码

    #define db double
    db a[1001][1001];
    void solve()
    {
    	for(int i=1;i<=n;i++)
    	{
    		int maxx=i;
    		for(int j=i+1;j<=n;j++) if(a[j][i]>a[maxx][i]) maxx=j;
    		for(int j=i;j<=n+1;j++) swap(a[i][j],a[maxx][j]);
    		if(!a[i][i]) {
    			cout<<"YZHX"<<endl;
    		}
    		for(int j=i+1;j<=n+1;j++) a[i][j]/=a[i][i];
    		a[i][i]=1;
    		for(re int j=1;j<=n;j++)
    		{
    			if(i==j) continue;
    			int k=a[j][i]/a[i][i];
    			for(re int p=i;p<=n+1;p++)
    				a[j][p]=a[j][p]-a[i][p]*k;
    		}
    	}
    	return ;
    }
    
  • 相关阅读:
    (十一)设置关闭多核cpu的核
    (十)修改开发板主频
    (九)How to use the audio gadget driver
    (8)全志A64查看寄存器
    内存溢出问题配置
    百度数据库优化经验
    如何让sql运行的更快
    百度性能优化
    spring ioc原理
    JNDI
  • 原文地址:https://www.cnblogs.com/yzhx/p/13162196.html
Copyright © 2020-2023  润新知