高斯消元法&&列主消元法

  • 写在前面
    • 高斯消元法
    • 列主消元法

写在前面

最近在学数值分析,正好学到求解线性方程组。就自己动手简单实现了一下。关于本算法的原理可以在《数值分析》第3版(马东升 董宁编),对应于该书的P145页,详细讲解了公式。因本人时间有限,暂时不详细编辑公式,等空闲了再来重新补充。简要的说明下该算法的应用吧,高斯消元法在线性代数那门课肯定学过了,对于一般简单的3、4阶线性方程组,还可以进行纸上的笔运算,但是当数目过多,算起来就比较吃力了,所以借助于计算机实现。如果很多的数学软件里都有矩阵的求解的函数,如mathematic和matlab,因本人对这些软件不熟悉,所以也没去去尝试使用。对于非奇异矩阵并且主对角线上的元素不为0。就可以用高斯消元法来求解。

高斯消元法

话不多说,直接贴代码

#include <bits/stdc++.h>
using namespace std;
const int n = 3;
void gaussin(double a[n][n], double b[n])
{for (int i = 0; i < n; i++){if (a[i][i] == 0){cout << "can't use gaussin meathod" << endl;return;}}int i, j, k;double c[n];for (k = 0; k < n - 1; k++){for (i = k + 1; i < n; i++)c[i] = a[i][k] / a[k][k];for (i = k + 1; i < n; i++){for (j = 0; j < n; j++){a[i][j] = a[i][j] - c[i] * a[k][j];}b[i]=b[i]-c[i]*b[k];}}double x[n];for(i=n-1;i>=0;i--){double sum = 0;for(j=i+1;j<n;j++){sum+=a[i][j]*x[j];}x[i]=(b[i]-sum)/a[i][i];}cout<<"the solution of the equation is : "<<endl;cout<<endl;for(int i =0;i<n;i++)cout<<"x"<<i+1<<" = "<<x[i]<<endl;
}
int main()
{double a[3][3]={12,-3,3,-18,3,-1,1,1,1};double b[3]={15,-15,6};gaussin(a,b);return 0;
}

列主消元法

高斯消元法,但是,在消元过程中,无法使主元素a(ii)≠0,但是很小时,用其做除数,会导致其他元素数量级的严重增长,舍入误差的扩展,最后导致计算结果不可靠。所以这次采用列主元素消去法来进行,思想就是将有小数的那行与该列中数最大的那行进行交换。 还是写帖代码吧

#include <bits/stdc++.h>
using namespace std;
const int n = 3;
void gaussin(double a[n][n], double b[n])
{int i, j, k;int col, row;double c[n];for (k = 0; k < n - 1; k++){double ave = 0;for (i = k; i < n; i++){if (fabs(a[i][k]) > ave){ave = fabs(a[i][k]);row = i;col = k;}}if (a[row][row] == 0)cout << "can't solve" << endl;if (k != row){for (i = 0; i < n; i++){swap(a[row][i], a[k][i]);}swap(b[k], b[row]);}for (i = k + 1; i < n; i++)c[i] = a[i][k] / a[k][k];for (i = k + 1; i < n; i++){for (j = 0; j < n; j++){a[i][j] = a[i][j] - c[i] * a[k][j];}b[i] = b[i] - c[i] * b[k];}}double x[n];for (i = n - 1; i >= 0; i--){double sum = 0;for (j = i + 1; j < n; j++){sum += a[i][j] * x[j];}x[i] = (b[i] - sum) / a[i][i];}cout << "the solution of the equation is : " << endl;cout << endl;for (int i = 0; i < n; i++)cout << "x" << i + 1 << " = " << x[i] << endl;
}
int main()
{double a[3][3] = {12, -3, 3, -18, 3, -1, 1, 1, 1};double b[3] = {15, -15, 6};gaussin(a, b);return 0;
}

高斯消元法列主消元法相关推荐

  1. 列主消元法解非奇异线性方程组的MATLAB程序

    function [x] = LMain_elimination(A,b,prec,n) %% % 列主消元法求解线性代数方程组 Ax = b的MATLAB实现 % A为待求解方程组的系数矩阵(要求A ...

  2. 高斯消元:列主消元法

    什么是列主消元 (注: akk代表第k行第k列的权值, 以下摘自百度百科:列主消元法) 列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在 ...

  3. C#,数值计算,高斯消元法与列主元消元法的源代码及数据动态可视化

    高斯消元法! 一.高斯消元法 Gaussian Elimination 高斯消元法(或译:高斯消去法),是线性代数中的一个常用算法,常用于求解线性方程组和矩阵的逆. 本程序的运行效果: 1.高斯消元法 ...

  4. 怎样查找自增列主键的id

    select max(id) from inform (inform为表名,查询最大的id值)

  5. 利用Matlab进行高斯消元法

    利用Matlab进行高斯消元法 思路 代码: 参考资料 思路 采取两种思路(1)不进行行行交换的高斯消元法(2)有行行交换(列主消元法) 算法如下: (1)没有行行交换的消元的算法图 (2)列主消元法 ...

  6. 用c语言求解n阶线性矩阵方程组,用C语言求解N阶线性矩阵方程Axb简单解法.docx

    用C语言求解N阶线性矩阵方程Axb简单解法 用C语言求解N阶线性矩阵方程Ax=b的简单解法一.描述问题:题目:求解线性方程组Ax=b,写成函数.其中,A为n×n的N阶矩阵,x为需要求解的n元未知数组成 ...

  7. 用c语言求解n阶线性,用C语言求解N阶线性矩阵方程Ax=b的简单解法.docx

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp专业基础教材 用C语言求解N阶线性矩阵方程Ax=b的简单解法. ...

  8. Guass列选主元消去法和三角分解法

    最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...

  9. java主键可以包含多列吗,SQLite主键在多列上

    在SQLITE的1个以上的列上指定主键的语法是什么? #1楼 主键字段应声明为非null(这是非标准的,因为主键的定义是它必须唯一且不能为null). 但是下面是对任何DBMS中所有多列主键的一种良好 ...

最新文章

  1. zabbix4.0添加mysql报警_部署监控三剑客 Zabbix4.0 监控以及告警机制
  2. 文本处理相关资料整理
  3. SAP新一代全栈开发工具:SAP Business Application Studio
  4. Android Glide 加载圆形图片(绝对实用)
  5. NB-IOT/Lora/Zigbee/WIFI/蓝牙无线组网方式的对比
  6. SAP License:生产订单无目标成本解决办法
  7. 扩展吉日嘎拉的用户角色管理,让用户角色编码和名称在一个组织里面唯一
  8. windows环境下Eclipse开发MapReduce程序遇到的四个问题及解决办法
  9. zabbix-proxy+cacti+nagios基本安装配置
  10. 转 ---《协程小结》
  11. Linux系统下ActivityMQ的安装
  12. Visual C++ 2010 Express 下载及详细安装教程(VC2010)
  13. esp连接服务器的协议,【零知ESP8266教程】WIFI TCP协议通信 TCP服务器示例
  14. 清理数据 python_使用python的数据清理技术
  15. python求高阶导数_高阶导数 - 问答 - Python中文网
  16. 个人常用软件及浏览器插件分享
  17. Latex 引号输入
  18. 数据标准化的方法与作用
  19. python画位势高度图_气候变化位势高度
  20. 国产web端开源ui组件-通用前端ui界面组件库

热门文章

  1. 90 后程序员:“创业一时爽,一直创业一直爽”
  2. Python之argparse
  3. 关于STM32浮点运算单元FPU的小话题
  4. 转:WCAT 压力工具介绍
  5. SuperMap 试用许可申请
  6. 金融行业机房监控4大难题?你中招了吗
  7. each中的this
  8. 机器学习在金融领域的应用:风险控制、投资策略与市场预测
  9. java除法保留两位小数_JAVA除法保留小数点后两位的两种方法
  10. GitHub Git GitLab 在Idea中使用Git