被学长教会的高斯消元法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 ...
随机推荐
- 转:全面分析 Spring 的编程式事务管理及声明式事务管理
转:from: https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2
在编写获取路径方法前,我们先把角色须要的动画文件载入进来,角色的文件为png 和 plist格式. player1_anim.png.plist player1_anim.pn ...
- H5性能调优
概述 PC优化手段在Mobile侧同样适用 在Mobile侧我们提出三秒种渲染完成首屏指标 基于第二点,首屏加载3秒完成或使用Loading 基于联通3G网络平均338KB/s(2.71Mb/s),所 ...
- Error: [mobx] Since strict-mode is enabled, changing observed observable values outside actions is not allowed. Please wrap the code in an `action` if this change is intended.
1.Error: [mobx] Since strict-mode is enabled, changing observed observable values outside actions is ...
- 去除List中重复的元素
今天碰到一个问题,想了好久都没有明白,网上找了一个文章,先收藏起来,有空了一定要想明白 用Set ,倘若list里边的元素不是基本数据类型而是对象,那么请覆写Object的boolean equals ...
- oc 跳转控制方法
1.presentViewController - (void)presentViewController:(UIViewController *)viewControllerToPresent an ...
- Android 网络状态的监控
1 http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html 2
- Java和C++ 比較
总体差别 1. C/C++是直接执行在机器上(编译后为机器码),而java编译后产生*.class文件(字节码)是执行在java虚拟机上在(JVM),经过JVM解译(机器码)再放到真实机器上执行. J ...
- Nginx访问日志和错误日志的拆分(Logstash)
>> from zhuhaiqing.info input { file { type =>> "nginx-access" path =>> ...
- lua 中处理cocos2dx 的button 事件
lua 中处理cocos2dx 的button 事件 2014-05-08 09:44:32| 分类: lua |举报 |字号 订阅 1.引入这个类:require "GuiConst ...