zoukankan      html  css  js  c++  java
  • 【科技】高斯消元简析

    想必大家都可以非常迅速的解出一个二元一次方程组,

    那么三元呢(这也还好),那么再多一些未知数?

    于是这里就要介绍到高斯消元的方法了...

    本人蒟蒻到现在才学高斯消元,请不要介意方法过于垃圾

     --------------------------------------------------------------------------------------------------

    首先假设你拿到了一个n元方程组,那么它应该有n个方程,每个方程有n+1个系数,

    好于是我们把他们全部弄到一个n*(n+1)的矩阵中,这里简称为系数矩阵

    第一步:我们先把每一行的系数都除以这一行的第一个数

    第二步:从第一行到第n行分别控制x1...xn的解,因此你需要把第i行的第i列的系数化为1以此来求解方程,

    第三步:在处理第i行的时候,把第i+1行到第n行的数通过加减消元法处理

       

    第四步:那么求出这个答案就是最后的答案数组了,

    求答案是xn的值是a[n][n+1],然后如果求x(n-1)的值就是将xn的值代入a[n-1][n],然后求出x(n-1)的值

    于是乎 x1=-1,x2=3,x3=-6

    以上就是关于高斯消元简要的介绍.

    以下是高斯消元实数的模板,在无解时返回1。

     1 bool Gauss(){
     2     for (int i=0;i<n;++i){
     3         int k=i;
     4         for (int j=i+1;j<n;++j) if (a[j][i] > a[k][i]) k=j;
     5         now=a[k][i];
     6         if (now==0) return 1;
     7         for (int j=i;j<=n;++j) swap(a[i][j],a[k][j]);
     8         for (int j=i;j<=n;++j) a[i][j]=Mul(a[i][j],Inv(now));
     9         for (k=0;k<n;++k) if (k!=i){
    10             now=a[k][i];
    11             for (int j=i;j<=n;++j) MO(a[k][j]-=Mul(a[i][j],now));
    12         }
    13     }return 0;
    14 }
    View Code
  • 相关阅读:
    禅道 之 项目开发必备
    Cmd 命令大全
    Php 性能参数优化 及 Iptables 防火墙限制用户访问平率
    Nginx 性能参数优化
    Mysql 性能调优参数
    Postfix的工作原理
    python三次输入错误验证登录
    python shopping incomplete code
    MySQL + Atlas --- 部署读写分离
    网站流量分析项目day03
  • 原文地址:https://www.cnblogs.com/Dance-Of-Faith/p/7736112.html
Copyright © 2011-2022 走看看