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

高斯消元法!

一、高斯消元法 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!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336266.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在学习爬虫前的准备

1. 写一个爬虫程序需要分几步 获取网页内容。 我们会通过代码给一个网站服务器发送请求&#xff0c;它会返回给我们网页上的内容。 在我们平时使用浏览器访问服务器内容是&#xff0c;本质上也是向服务器发送一个请求&#xff0c;然后服务器返回网页上的内容。只不过浏览器还会…

v-if控制div内容显示,克隆这个div但是v-if没有效果

问题描述&#xff1a; 我的子页面打印的时候通过isPdf来隐藏“选择参加人员”按钮。 我子页面有个el-dialog&#xff0c;el-dialog里面有个大的div它的id为app-pre-meet-add&#xff0c;在子页面我通过isPdf来显示我想要的内容。现在我在父页面先通过this.$refs.child.control…

高效管理近 2 万个 API,中金财富是如何做到的?

为引导安全的 API 治理&#xff0c;中国信息通信研究院云计算开源产业联盟近期整理并发布了《API 治理应用案例汇编(2023)》。此次征集中&#xff0c;Eolink 参与共建的三大项目入选金融行业示范案例&#xff0c;是入选项目最多的企业&#xff0c;充分体现官方对 Eolink 在金融…

计算机视觉技术-区域卷积神经网络(R-CNN)

区域卷积神经网络&#xff08;region-based CNN或regions with CNN features&#xff0c;R-CNN&#xff09; (Girshick et al., 2014)也是将深度模型应用于目标检测的开创性工作之一。 本节将介绍R-CNN及其一系列改进方法&#xff1a;快速的R-CNN&#xff08;Fast R-CNN&#x…

构建自己的私人GPT-支持中文

上一篇已经讲解了如何构建自己的私人GPT&#xff0c;这一篇主要讲如何让GPT支持中文。 privateGPT 本地部署目前只支持基于llama.cpp 的 gguf格式模型&#xff0c;GGUF 是 llama.cpp 团队于 2023 年 8 月 21 日推出的一种新格式。它是 GGML 的替代品&#xff0c;llama.cpp 不再…

控制el-table的列显示隐藏

控制el-table的列显示隐藏&#xff0c;一般的话可以通过循环来实现&#xff0c;但是假如业务及页面比较复杂的话&#xff0c;list数组循环并不好用。 在我们的页面中el-table-column是固定的&#xff0c;因为现在是对现有的进行维护和迭代更新。 对需要控制列显示隐藏的页面进…

微信Windows版如何从旧电脑迁移聊天记录到新电脑

我们都知道&#xff0c;换手机的话&#xff0c;如果是同品牌&#xff0c;可以用该品牌的换机助手将微信资料传输给新手机&#xff0c;或者用微信PC端的迁移与备份功能来实现 那么换电脑或者重装系统呢&#xff1f;我们可以通过转移文件夹的方式进行 1、登录PC微信&#xff0c;…

SG-8101CGA 系列 (晶体振荡器 可编程 可用 +125°C )

SG-8101CGA是可编程晶体振荡器&#xff0c;具有CMOS输出&#xff0c;适用于汽车&#xff0c;同时&#xff0c;该系列还提供相同的频率和其他参数的轻松编程能力&#xff0c;符合AEC-Q100标准&#xff0c;具有出色的电磁兼容性和稳定性&#xff0c;可以在各种环境下使用。外部尺…

ELK生命周期

ELKkafka <es生命周期可视化配置界面> 一、创建索引模式 根据logstash中的日志规则 匹配对应系统日志 二、创建索引生命周期策略&#xff1a;可以控制生成索引的生命周期 共4个阶段&#xff1a;热阶段——温阶段——冷阶段——删除阶段 阶段1. hot: 索引被频繁写入和查…

Python - 深夜数据结构与算法之 Two-Ended BFS

目录 一.引言 二.双向 BFS 简介 1.双向遍历示例 2.搜索模版回顾 三.经典算法实战 1.Word-Ladder [127] 2.Min-Gen-Mutation [433] 四.总结 一.引言 DFS、BFS 是常见的初级搜索方式&#xff0c;为了提高搜索效率&#xff0c;衍生了剪枝、双向 BFS 以及 A* 即启发式搜索…

基于ZU19EG的100G-UDP解决方案

概述 本文档介绍ZU19EG与Mellanox CX6 100G网卡通信解决方案。 环境配置 FPGA硬件&#xff1a;519-ZU19EG的4路100G光纤PCIe加上计算卡 电脑&#xff1a;国产国鑫主板&#xff08;双PCU&#xff09;&#xff1a;Gooxi G2DA-B CPU:Intel Xeon Silver 2.2GHz 内存&#xff1…

旋变检测AD2s1205手册学习笔记

旋变故障检测故障表 信号丢失检测 检测原理&#xff1a;任一旋变输入(正弦或余弦)降至指定的LOS正弦/余弦阈值 以下时&#xff0c;器件会检测到信号丢失(LOS)。AD2S1205通过将 监视信号与固定最小值进行比较检测此点 丢失的效果表现&#xff1a;LOS由DOS和LOT引脚均闩锁为逻辑…