对于高斯消元法求解线性方程组,

我的理解就类似于我们在做数学题时的加减消元法,

只是把它写成一个通用的程序运算过程

对于一个线性方程组,我们从左往右每次将一列对应的行以下的元通过加减消元消去,

每个元的系数最终组成一个上三角矩阵,再倒序回带,求出答案

为了保证程序的可操作性,我们每次要将用来消去下面的元的数化为1,

再将下面的行每个元的系数同时减去主行的系数*扩大的倍数,

这时倍数即为该行要消去的元的系数

建议看一下《数学一本通》的内容,介绍的比较浅显

寻找主元:

double的除法操作是有一些误差的,我们在操作时,必须每次找一个开头最大的主元消去,这样可以减小精度误差

回代过程:

ans[i]=m[i][n+1]-m[i+1][i]*ans[i+1]-m[i+2][i]*ans[i+2]-m[i+3][i]*ans[i+3]……-m[n][i]*ans[n];(ans[i]/系数1=ans[i])

这实际上和我们加减消元是有很大相似之处的

模板题https://www.luogu.org/problemnew/show/P3389

代码:

 #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int MAXN = ;
int n;
double a[MAXN][MAXN],ans[MAXN];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n+;j++)
scanf("%lf",&a[i][j]);
for(int i=;i<=n;i++)
{
int now=i;
for(int j=i+;j<=n;j++)
if(fabs(a[now][i])<fabs(a[j][i])) now=j;  //找主元
if(now!=i) swap(a[i],a[now]);         //换到当前行
double d=a[i][i];
if(d==){                    //对角线上有0,则会出现有元无法被消去,无法得到唯一解
puts("No Solution");
return ;
}
for(int j=i;j<=n+;j++) a[i][j]/=d;    //主元化为1
for(int j=i+;j<=n;j++)
for(int k=i+;k<=n+;k++)
a[j][k]-=a[j][i]*a[i][k];        //下方每行消去同列的元,该行也同时进行变换
for(int j=i+;j<=n;j++)
a[j][i]=;
}
for(int i=n;i>=;i--)
{
ans[i]=a[i][n+];
for(int j=i+;j<=n;j++)
ans[i]-=a[i][j]*ans[j];
}
for(int i=;i<=n;i++)
printf("%.2lf\n",ans[i]+1e-);
return ;
}

【洛谷P3389】(模板)高斯消元的更多相关文章

  1. BZOJ 3143: [Hnoi2013]游走 [概率DP 高斯消元]

    一个无向连通图,顶点从1编号到N,边从1编号到M. 小Z在该图上进行随机游走,初始时小Z在1号顶点,每一步小Z以相等的概率随机选 择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分 ...

  2. 洛谷P3389 高斯消元 / 高斯消元+线性基学习笔记

    高斯消元 其实开始只是想搞下线性基,,,后来发现线性基和高斯消元的关系挺密切就一块儿在这儿写了好了QwQ 先港高斯消元趴? 这个算法并不难理解啊?就会矩阵运算就过去了鸭,,, 算了都专门为此写个题解还 ...

  3. 洛谷P4783 【模板】矩阵求逆(高斯消元)

    题意 题目链接 Sol 首先在原矩阵的右侧放一个单位矩阵 对左侧的矩阵高斯消元 右侧的矩阵即为逆矩阵 // luogu-judger-enable-o2 #include<bits/stdc++ ...

  4. 洛谷P4035 [JSOI2008]球形空间产生器(高斯消元)

    洛谷题目传送门 球啊球 @xzz_233 qaq 高斯消元模板题,关键在于将已知条件转化为方程组. 可以发现题目要求的未知量有\(n\)个,题目却给了我们\(n+1\)个点的坐标,这其中必有玄机. 由 ...

  5. 洛谷2973 [USACO10HOL]赶小猪Driving Out the Piggi… 概率 高斯消元

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - 洛谷2973 题意概括 有N个城市,M条双向道路组成的地图,城市标号为1到N.“西瓜炸弹”放在1号城市,保证城 ...

  6. 洛谷P4457/loj#2513 [BJOI2018]治疗之雨(高斯消元+概率期望)

    题面 传送门(loj) 传送门(洛谷) 题解 模拟赛的时候只想出了高斯消元然后死活不知道怎么继续--结果正解居然就是高斯消元卡常? 首先有个比较难受的地方是它一个回合可能不止扣一滴血--我们得算出\( ...

  7. 【洛谷U20626】gemo 容斥 FWT 高斯消元

    题目大意 给你一个无向图,有\(m\)个询问,每次给你一个点\(x\)和一个点集\(S\),问你从\(x\)开始走,每次从一个点随机的走到与这个点相邻的点,问你访问\(S\)中每个点至少一次的期望步数 ...

  8. 洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元

    正解:高斯消元 解题报告: 链接! 昂开始看到以为是,高斯消元板子题? 开始很容易想到的是,虽然是多维但是可以类比二维三维列出式子嘛 但是高斯消元是只能处理一元问题的啊,,,辣怎么处理呢 对的这就是这 ...

  9. 【洛谷3232】[HNOI2013] 游走(贪心+高斯消元)

    点此看题面 大致题意: 一个无向连通图,小\(Z\)从\(1\)号顶点出发,每次随机选择某条边走到下一个顶点,并将\(ans\)加上这条边的编号,走到\(N\)号顶点时结束.请你对边进行编号,使总分期 ...

随机推荐

  1. PHP 网页调用本地exe程序实例

    一.需求:在做网站的时候,有些网站网页面需要调用本地的exe程序. 二.方法:利用注册URL Protocol的方式. 代码如下: 1.视图文件里面的代码: <a href="fyex ...

  2. 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  3. 025-quartz之spring部分配置模板

    版本一: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...

  4. git win7 dos下设置代理

    git config --global http.proxy http://username:pwd@my.you.com:port

  5. a标签的 onclick 和 href 哪个先执行?

    以下这种写法,onclick 事件先执行, href 属性下的动作后执行(页面跳转或 javascript 伪链接),如果不想执行 href 属性下的动作,onclick 需要返回 false. &l ...

  6. Java入门系列-11-类和对象

    这篇文章为你搞懂类和对象的使用 对象:用来描述客观事物的实体,由一组属性和方法组成,万物皆对象. 属性:就是对象的特征,像身高.体重.颜色 方法:对象的行为,如跑.跳 类:类是模子,定义对象将会拥有的 ...

  7. [转]ASP.NET Web API系列教程(目录)

    本文转自:http://www.cnblogs.com/r01cn/archive/2012/11/11/2765432.html 注:微软随ASP.NET MVC 4一起还发布了一个框架,叫做ASP ...

  8. Java Socket通信示例

    Socket分为ServerSocket和Socket两大类: 其中ServerSocket用于服务器端,可以通过accept方法监听请求,监听到请求后返回Socket: Socket用户具体完成数据 ...

  9. 泛型(Generic)委托

    泛型(Generic)委托 您可以通过类型参数定义泛型委托.例如: delegate T NumberChanger<T>(T n); 下面的实例演示了委托的使用: using Syste ...

  10. DW网页制作,数学,数据库管理

    数学(函数关系的建立) 函数关系:确定性现象之间的关系常常表现为函数关系,即一种现象的数量确定以后,另一种现象的数量也随之完全确定,表现为一种严格的函数关系. 如:记为y=f(x),其中x称为自变量, ...