zoukankan      html  css  js  c++  java
  • 高斯消元学习笔记

    概述 & 用法

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

    现在有个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 ;
    }
    
  • 相关阅读:
    java第五周作业
    ajax初探--实现简单实时验证
    Html+CSS二周目--->常用概念
    Html+CSS--->第一周初探
    Servlet细节整合
    多线程基础
    设计模式之单例模式(Singleton)
    配置文件Java读写
    Java基础之IO流
    JDBC基础
  • 原文地址:https://www.cnblogs.com/yzhx/p/13162196.html
Copyright © 2011-2022 走看看