被学长教会的高斯消元法Gauss
昨天学长教了我高斯消元法。
这里用一个栗子来模拟一下Gauss的流程。
真的通俗易懂!这里是洛谷题目链接。
这就是例子
x-2y+3z=
4x-5y+6z=
7x-8y+10z=
先将它转化为矩阵
-
-
-
解决这个方程组
我们会希望它变成如下形式
a
b
c
这样就可以表示为$x=a$,$y=b$,$z=cx=a$,$y=b$,$z=c$,$x=a$,$y=b$,$z=c$
我们使用高斯消元,就要一步一步将每个未知数约去。
这种方法是以列为单位消去的
首先我们将第一列转化为1 0 0的形式
在这里要注意一下,我们往往是将这个系数绝对值最大的方程转移到被减的这一行,这样就可以减小误差
所以我们先将矩阵变成这样
-
-
-
然后将正在处理的方程式化简,让正被处理的系数化1
-/ /
-
-
然后使用加减法将第二个与第三个方程组的第一个系数化0
-/ /
-/ /
-/ /
然后这时候第一列就被化简完成
同理我们化去第二行与第三行,步骤如下:
1.化简第二行
-/ /
-/
-/ /
2.用第一行减第二行×(-8/7),第三行减第二行×(-6/7)
/
-/
3.不需要化简第三行,所以直接用第一行减去第三行×2/3,第二行减去第三行×(-2/3)
最后我们就得到了一组解x=1,y=2,y=3x=1,y=2,y=3x=1,y=2,y=3 。
所以高斯消元其实是运用了小学解方程组的加减法的讷。
代码请见我的博客《从2017年暑假到现在手打的模板↑_↑》之三十二。
。
。
。
我还是老老实实地贴了上来:
//Guss
#include <bits/stdc++.h>
using namespace std; int n;
double f[][];
const double eps=1e-; int main()
{
scanf("%d",&n);
for (int i=;i<n;i++)//读入系数和值
for (int j=;j<=n;j++) scanf("%lf",&f[i][j]);
for (int i=;i<n;i++) {
int ch=i;
for (int j=i;j<n;j++)//选择绝对值最大的减少误差
if (fabs(f[j][i]-f[ch][i])<=eps) ch=j;
for (int j=;j<=n;j++) swap(f[i][j],f[ch][j]);//交换
if (fabs(f[i][i])<=eps) {//无解情况
printf("No Solution\n");
return ;//如果当前位置为零 则无解 0x=A
}
for (int j=i+;j<=n;j++) f[i][j]/=f[i][i];//系数化1
//自己那位不必要除 无影响
for (int j=;j<n;j++)
if (i!=j)
for (int k=i+;k<=n;k++) f[j][k]-=f[j][i]*f[i][k];
//加减法去掉系数值
}
for (int i=;i<n;i++) printf("%.2lf\n",f[i][n]);//输出
return ;
}
被学长教会的高斯消元法Gauss的更多相关文章
- 高斯消元法(Gauss Elimination)【超详解&模板】
高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵.高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组. ...
- ZJOI 游记
在备战YZ提前招生考时去ZJOI玩了趟,ZJ果然人才辈出= =神犇讲课各种神听不懂啊orz day 0 Mon. 上午在AB班愉快地玩耍,下午就去HZ了. HZ真热啊... 学军也是节约= =空调都不 ...
- 【分享】学长的安利来了~~O(∩_∩)O
前言:应栋哥要求,学长把演讲稿稍微整理下发布出来,这可以算是一篇安利文,也可以说是一篇经历文吧.作为一个确确实实从软工里收获到挺多东西的过来人,学长希望可以通过学长的经历来让你们对软工更加期待. 安利 ...
- hdu 5833 Zhu and 772002 ccpc网络赛 高斯消元法
传送门:hdu 5833 Zhu and 772002 题意:给n个数,每个数的素数因子不大于2000,让你从其中选则大于等于1个数相乘之后的结果为完全平方数 思路: 小于等于2000的素数一共也只有 ...
- ZOJ3560 Re:the Princess(高斯消元法)
题目要读很久才能理解它的意思和笑点(如果你也看过那个笑话的话),读懂之后就会发现是一个高斯消元法的题目,对于我来说难点不在高斯消元,而在于字符串处理.先来说说题意吧: 总共有n个人,n个人都会有一段话 ...
- POJ1222 高斯消元法解抑或方程
第一次学怎么用高斯消元法解抑或方程组,思想其实很简单,方法可以看下面的链接:http://blog.csdn.net/zhuichao001/article/details/5440843 有了这种思 ...
- Gauss elimination Template
Gauss elimination : #include <iostream> #include <cstdlib> #include <cstring> #inc ...
- 高斯消元法~get√
高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵.高斯消元法的原理是:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组. ...
- 洛谷P3389 【模板】高斯消元法
P3389 [模板]高斯消元法 题目背景 Gauss消元 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数 n 第二至 n+1行,每行 n+1 个整数,为a1,a ...
随机推荐
- resin后台输出中文乱码的解决办法!
resin后台输出中文乱码的解决办法! 学习了:https://blog.csdn.net/kobeguang/article/details/34116429 编辑conf/resin.con文件: ...
- RPC接口mock测试
转载:http://blog.csdn.net/ronghuanye/article/details/71124127 1 简介 Dubbo目前的应用已经越来越广泛.或者基于Dubbo二 ...
- 2. Spring Boot返回json数据【从零开始学Spring Boot】
在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.kfit.test.web然后新建一个类HelloControoler,然后修改App.Java类,主要是的这个类就是一个 ...
- vue-router $route
1.$route 除了 $route.params 外,$route 对象还提供了其它有用的信息,例如,$route.query (如果 URL 中有查询参数).$route.hash 等等
- Restful风格的前后端分离
1.概述 ResultFul推荐每个URL能操作具体的资源,而且能准确描述服务器对资源的处理动作,通常服务器对资源支持get/post/put/delete/等,用来实现资源的增删改查.前后端分离的话 ...
- 深入浅出java静态代理和动态代理
首先介绍一下.什么是代理: 代理模式,是经常使用的设计模式. 特征是.代理类与托付类有同样的接口,代理类主要负责为托付类预处理消息.过滤消息.把消息转发给托付类.以及事后处理消息. 代理类和托付类,存 ...
- JavaScript 获取文件名,后缀名
function getBaseName(str) { var segs = str.split('.'); if(segs.length > 1) segs.pop(); return seg ...
- C#自动切换Windows窗口程序,如何才能调出主窗口?
namespace AutoChangeWindow { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summ ...
- 设置DevExpress GridControl控件时间列显示时、分、秒样式
如题,如果Dev GridControl控件绑定DataTable数据源时,DataTable中的某一列为Date类型时,GridControl默认显示样式只显示当前日期,并不会将时.分.秒显示出来. ...
- nginx uri和request_uri区别
$request_uri This variable is equal to the *original* request URI as received from the client includ ...