高斯消元法!

一、高斯消元法 Gaussian Elimination

高斯消元法(或译:高斯消去法),是线性代数中的一个常用算法,常用于求解线性方程组和矩阵的逆。

本程序的运行效果:

1、高斯消元法的动画演示

2、高斯列主元消元法的动画演示

列主元素消去法是为控制舍入误差而提出来的一种算法,列主元素消去法计算基本上能控制舍入误差的影响,其基本思想是:在进行第 k(k=1,2,...,n-1)步消元时,从第k列的 akk及其以下的各元素中选取绝对值最大的元素,然后通过行变换将它交换到主元素akk的位置上,再进行消元。

做良心程序员,0积分下载源程序:

二、高斯消元法的实用价值

1、求解线性方程组

废话。

2、求逆矩阵(矩阵的逆)

高斯消元法可以用来找出一个可逆矩阵的逆矩阵。设A 为一个N * N的矩阵,其逆矩阵可被两个分块矩阵表示出来。将一个N * N单位矩阵 放在A 的右手边,形成一个N * 2N的分块矩阵B = [A,I] 。经过高斯消元法的计算程序后,矩阵B 的左手边会变成一个单位矩阵I ,而逆矩阵A ^(-1) 会出现在B 的右手边。
假如高斯消元法不能将A 化为三角形的格式,那就代表A 是一个不可逆的矩阵。
应用上,高斯消元法极少被用来求出逆矩阵。高斯消元法通常只为线性方程组求解。

3、求矩阵的秩

高斯消元法可应用在任何m * n的矩阵A。在不可减去某数的情况下,我们都只有跳到下一行。以一个6 * 9的矩阵作例,它可以变化为一个行梯阵式:

1 * 0 0 * * 0 * 0
0 0 1 0 * * 0 * 0
0 0 0 1 * * 0 * 0
0 0 0 0 0 0 1 * 0
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0

而矩阵中的 *' 是一些数字。这个梯阵式的矩阵T 会有一些关于A的资讯:
A 的秩是5,因为T 有5行非0的行;
A 的列的向量空间,可从A 的第1、3、4、7和9列中得知,其数值在矩阵T 之中;
矩阵中的 *' 表示了A 的列可怎样写为列中的数的组合。

三、高斯消元法与列主元消元法的代码

1、高斯消元法的C#源代码

/// <summary>
/// 高斯消去法求解线性方程组
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static Matrix Gaussian_Elimination(Matrix a)
{Matrix x = new Matrix(a.Row, 1);//消元计算  for (int k = 0; k <= a.Row - 2; k++){for (int i = k + 1; i <= a.Row - 1; i++){double lik = a[i, k] / a[k, k];for (int j = k + 1; j <= a.Row; j++){a[i, j] = a[i, j] - lik * a[k, j];}a[i, k] = 0.0;}}//回代求解  for (int i = a.Row - 1; i >= 0; i--){double sum = 0;for (int j = i + 1; j <= a.Row - 1; j++){sum = sum + a[i, j] * x[j];}x[i] = (a[i, a.Row] - sum) / a[i, i];}return x;
}

2、高斯列主元消元法的C#源代码

/// <summary>
/// 列主元高斯消去法求解线性方程组
/// </summary>
/// <param name="a"></param>
/// <returns></returns>
public static Matrix Gaussian_Column_Principal_Elimination(Matrix a)
{Matrix x = new Matrix(a.Row, 1);for (int k = 0; k < a.Row - 1; k++){//选主元[这一列的绝对值最大值]  int max_ik = 0;double ab_max = float.MinValue;for (int i = k; i < a.Column - 1; i++){if (System.Math.Abs(a[i, k]) > ab_max){ab_max = System.Math.Abs(a[i, k]);max_ik = i;}}if (ab_max < float.Epsilon){throw new Exception("除0!");}else if (max_ik != k){slides.Add(Slide(a, x, a, max_ik, k, 1));// 交换  for (int j = 0; j < a.Column; j++){double temp = a[max_ik, j];a[max_ik, j] = a[k, j];a[k, j] = temp;}}//消元计算  for (int i = k + 1; i < a.Row; i++){double kk = a[i, k] / a[k, k];for (int j = k; j < a.Column; j++){a[i, j] -= kk * a[k, j];}}if (System.Math.Abs(a[a.Row - 1, a.Row - 1]) < float.Epsilon){throw new Exception("除0!");}}// 回代求解 for (int i = a.Row - 1; i >= 0; i--){x[i] = a[i, a.Column - 1];for (int j = i + 1; j < a.Column - 1; j++){x[i] -= a[i, j] * x[j];}x[i] /= a[i, i];}return x;
}

3、动画显示源代码

暂略,赞加。:)

四、高斯消元法的性能

1、高斯消元法的算法复杂度

高斯消元法的算法复杂度是O(N^3);这就是说,如果系数矩阵的是N ×N,那么高斯消元法所需要的计算量大约与N^3成比例。

2、高斯消元法的局限性

高斯消元法可用在任何域中。
高斯消元法对于一些矩阵来说是稳定的。
对于普遍的矩阵来说,高斯消元法在应用上通常也是稳定的,不过亦有例外。

除0!

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

  1. 高斯消元法列主消元法

    高斯消元法&&列主消元法 写在前面 高斯消元法 列主消元法 写在前面 最近在学数值分析,正好学到求解线性方程组.就自己动手简单实现了一下.关于本算法的原理可以在<数值分析> ...

  2. 列主元消去法例题详解_高斯列主元消元法解方程组的步骤

    高斯列主元消元法求解线性方程组 AX=b 的简要步骤                                      ...

  3. 计算方法 - 列主元消元法(线性方程组的解法)

    列主元消元法比起高斯消元增加了每次化简时取第一列最大元素作为主元 即: 题目: 代码: #include <iostream> #include <cstdio> #inclu ...

  4. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  5. pythonplotly k线 动态_GitHub - 846626465/PythonPlotlyCodes: 《Python 数据分析:基于 Plotly 的动态可视化绘图》 源代码...

    PythonPlotlyCodes <Python 数据分析:基于 Plotly 的动态可视化绘图> 源代码 前言 Python是一门非常优秀的编程语言,其语法简捷.易学易用,越来越受到编 ...

  6. pythonplotly k线 动态_GitHub - chitandacc/PythonPlotlyCodes: 《Python 数据分析:基于 Plotly 的动态可视化绘图》 源代码...

    PythonPlotlyCodes <Python 数据分析:基于 Plotly 的动态可视化绘图> 源代码 前言 Python是一门非常优秀的编程语言,其语法简捷.易学易用,越来越受到编 ...

  7. pythonplotly k线 动态_GitHub - Yanglian666/PythonPlotlyCodes: 《Python 数据分析:基于 Plotly 的动态可视化绘图》 源代码...

    PythonPlotlyCodes <Python 数据分析:基于 Plotly 的动态可视化绘图> 源代码 前言 Python是一门非常优秀的编程语言,其语法简捷.易学易用,越来越受到编 ...

  8. Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机

    Qt温度湿度传感器采样上位机源代码C++数据记录功能Windows上位机 YID:765645958944466他也是来自江湖

  9. 高斯消元法、列主元高斯消去法、全主元高斯消去法Python实现

    求解有解的线性方程组: 代码实现: 高斯消元法: import numpy as np def Gauss_elimination(A): # 高斯消去法求解# 消元,化为上三角for k in ra ...

最新文章

  1. 转:AbstractQueuedSynchronizer的介绍和原理分析
  2. The Constructor with No Arguments
  3. hiho一下第一周 Hihocoder #1032 : 最长回文子串
  4. JAVA进阶教学之(Object类中的hashCode方法)
  5. koa2 mysql增删改查_koa2对mongodb的增删改查
  6. linux docker安装_Linux上安装docker的完美教程
  7. 应用程序错误 应用程序发生异常w3wp.exe
  8. Power BI Desktop中的“提问”功能
  9. HDU #5733 tetrahedron
  10. I00009 用1生成回文数
  11. DisplayLink 安装错误
  12. Nginx-搭建https服务器
  13. RHEL 6.4 安装DNS服务(bind-9.8 )
  14. codeproject.com被封了?
  15. Python学习笔记-2017.5.4thon学习笔记-2017.8.16
  16. img图片路径错误时,显示破图/图片裂开,如何处理?
  17. 详解:分治算法【Java实现】——汉诺塔问题
  18. 驱动辅助资料(工具,目录,指令,debug经验)
  19. Codeforces Round #548 (Div. 2) C. Edgy Trees(dfs || 并查集)
  20. linux p4 命令行,linux下使用P4(命令行)

热门文章

  1. 机器学习与计算机视觉大牛族谱
  2. 【RISC-V】使用Arduino IDE开发环境编写的Hifive1开发板演示程序(Demo)。
  3. 发布应用到AppStore
  4. three.js的着色器(巨详细 初学者 大白话)
  5. 软件测试常见的智力题
  6. 信安Note_day29
  7. Android程序员赚够100W,回老家发展,应该可以活得很好吧
  8. 调试Basler相机遇到的绿屏显示问题解决方法
  9. Conv2d和Conv3d详解
  10. Abelssoft CryptBox2021(电脑文件加密软件)免费版 附使用说明