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

news2024/11/20 18:42:55

高斯消元法!

一、高斯消元法 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.coloradmin.cn/o/1370869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成功解决使用git clone下载失败的问题: fatal: 过早的文件结束符(EOF) fatal: index-pack 失败

一.使用 http 可能出现的问题和解决 1.问题描述 ~$ git clone https://github.com/oKermorgant/ecn_baxter_vs.git 正克隆到 ecn_baxter_vs... remote: Enumerating objects: 13, done. remote: Counting objects: 100% (13/13), done. remote: Compressing objects: 100% (…

免费分享一套微信小程序扫码点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序扫码点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) &#xff0c;分享下哈。 项目视频演示 【免费】微信小程序扫码点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) Java毕…

etcd跨主机通信与Flannel

跨主机通信 Docker 默认的网络环境下 , 单台主机上的 Docker 容器可以通过 docker0 网桥直接通信 , 而不同主机上的 Docker 容器之间只能通过在主机上做端口映射进行通信。 这种端口映射方式对很多集群应用来说极不方便。 如果能让 Docker 容器之间直接使用自己的 IP 地址进…

如何通过UMC进行产品升级

随着互联网、云计算技术的深入发展&#xff0c;为降低企业大规模云应用建设的难度和成本&#xff0c;支持云应用开发、运行与运维一体化的云应用平台软件应运而生。在数通家族中对公司集成套件的云平台开发、部署、管理、运维进行统一管理&#xff0c;实现数据集成和共享的平台…

FFmpeg获取音视频流信息

文章目录 前言一、需求二、源码三、运行结果 前言 本文记录用 FFmpeg 获取视频流音频流的信息&#xff08;编码格式、分辨率、帧率、播放时长…&#xff09;&#xff0c;所用的工程基于上个博客编译成功的工程&#xff1a;使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c 一、需求…

HTML5网站小游戏源码系统:各种各样小游戏集合,你想要的这里都有+完整的安装代码包以及搭建教程

现如今&#xff0c;科技的不断发展&#xff0c;HTML5技术逐渐成为网页游戏开发的主流。为了满足广大游戏爱好者的需求&#xff0c;罗峰给大家推荐一款基于HTML5的网站小游戏源码系统。这款系统集成了众多经典小游戏&#xff0c;涵盖了各种类型&#xff0c;无论您是寻找休闲益智…

centos7安装ES

1.JDK安装 因为我这里安装的ES版本是7.9.3 因为项目用的1.8的JDK, 7.9.3又兼容1.8&#xff0c;我在这装了1.8的JDK 支持一览表的IP 支持一览表 | Elastic 先将jdk的tar.gz 文件拷入系统 tar -zxvf jdk-8u351-linux-x64.tar.gz 解压压缩包 配置环境变量 vim /etc/profile …

Burp Suite拦截信息或返回数据中文乱码,解决不显示中文

1.点击User options->Display。 2.点击change font&#xff0c;选择宋体。Charater sets选择UTF-8&#xff08;如果还是乱码&#xff0c;看一下请求或响应字符集 charserxxx&#xff09;。

美信科技盘古信息智能车间项目成功验收,打造电子元器件数字化工厂标杆

作为一家深耕于磁性元器件领域近二十年的制造企业&#xff0c;广东美信科技股份有限公司&#xff08;以下简称“美信科技”&#xff09;始终秉承着“为电磁赋能&#xff0c;创工业至美”的企业使命&#xff0c;为中国制造卓越发展贡献力量。在当今数字化时代&#xff0c;制造企…

orangepi 4lts 无线网卡wlan0隔几个小时自动掉线解决

发现问题&#xff1a;最近使用orangepi 4lts有线(内网&#xff09;和无线&#xff08;外网&#xff09;&#xff0c;同时连接&#xff0c;无线都是隔半天就掉线&#xff0c;不能自动重连 无线网卡关闭节能模式 1、查看无线网卡的运行状态 sudo iwconfig wlan0 状态说明&…

063:vue中一维数组与三维数组联动,类似购物车增减

第063个 查看专栏目录: VUE ------ element UI javascript 一维数组与三维数组联动,一维数组转换为三为数组,源文件下载 .zip 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安…

常见的http状态码及其含义,以及状态码的分类

常见状态码及其含义&#xff1a; 状态码分类&#xff1a; HTTP状态码由三个十进制数字组成&#xff0c;第一个十进制数字定义了状态码的类型&#xff0c;后两个数字没有分类的作用。HTTP状态码共分为5种类型&#xff1a; 200&#xff1a;表示请求成功&#xff0c;服务器响应正…

适用于 Windows 的 4 个最佳免费数据恢复软件

计算机最重要的是用户数据。除了您的数据之外&#xff0c;关于计算机的其他一切都是可替换的。这三个是数据丢失的最常见原因&#xff1a; 文件/文件夹删除 丢失分区 损坏的分区 文件/文件夹删除是最常见的数据丢失类型。大多数时候&#xff0c;由于不小心删除文件/文件夹而…

大数据Doris(五十三):SQL函数之日期函数(一)

文章目录 SQL函数之日期函数 一、​​​​​​​CONVERT_TZ(DATETIME dt, VARCHAR from_tz, VARCHAR to_tz)

阴盘奇门八字排盘马星位置计算方法php代码

如下位置&#xff0c;马星的四个位置。 计算方法&#xff1a; 1。先根据出生年月日&#xff0c;计算得八字四柱。比如 2024年01月09日&#xff0c;四柱为 其中时柱地支为“申” 2。然后根据以下对应的数组&#xff0c;来找到id号&#xff0c;即马星位置。 根据下表来找到&am…

5 双指针问题-接雨水的问题

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 int ResetDatas(vector<int>& h…

Jmeter压缩包安装

JMeter安装及配置-Mac 本章要点 前置条件命令行安装压缩包安装 在Mac上安装对应的JMeter工具有两种方式&#xff1a;一种直接借助终端命令行brew进行安装&#xff1b;另外一种和Window电脑一样去JMeter官网下载压缩包安装。 JMeter不需要安装&#xff0c;但是JMeter作为java应用…

Spark避坑系列一(基础知识)

大家想了解更多大数据相关内容请移驾我的课堂: 大数据相关课程 剖析及实践企业级大数据 数据架构规划设计 大厂架构师知识梳理:剖析及实践数据建模 剖析及实践数据资产运营平台 Spark作为大数据领域离线计算的王者,在分布式数据处理计算领域有着极高的处理效率,而Python作为…

已安装MySQL5.7的基础上安装MySQL8教程

类似文章很多&#xff0c;但部分问题解决方案并不是很完整&#xff0c;且对细节描述不够清楚&#xff0c;特意总结一篇 在本机已经安装MySQL5.7的情况下新安装MySQL8.x的方案如下&#xff08;请按照步骤详细操作&#xff09;&#xff1a; 1.进入官网下载 https://dev.mysql.c…

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程

小米机型目前限制了解锁bl的机制。从以前单一的绑定解锁到目前绑定账号必须小米社区5级的条件限制。切必须要答题分数够才可以申请解锁。限制的根本原因也在为消费者提供更好的服务。避免刷机小白无基础常识解锁bl后第三方固件或者软件造成的故障。另外一方面也在于市场格机脚本…