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!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习19 在Ubuntu命令行下使用新硬盘

Linux学习19 在Ubuntu命令行下使用新硬盘 一、准备环境二、检测硬盘三、对新硬盘格式化1. 创建分区2. 格式化 三、挂载操作1. 创建挂载点2. 挂载硬盘3. 验证挂载 四、实现永久挂载&#xff08;可选&#xff09;1. 文件结构与内容&#xff1a;2. /etc/fstab 的重要性与作用3. 修…

运算符详解

1、定义 定义&#xff1a;运算符是一种特殊的符号&#xff0c;用于表示数据的运算、赋值和比较等 运算符的分类 1&#xff09;按功能分类&#xff1a; 1&#xff09;算术运算符&#xff08;7个&#xff09;​​​​​​​ 、-、*、/、%、、--​​​​​​​ 2&#xff0…

自动化测试框架pytest系列之基础概念介绍(一)

如果你要打算学习自动化测试 &#xff0c;无论是web自动化、app自动化还是接口自动化 &#xff0c;在学习的道路上&#xff0c;你几乎会遇到pytest这个测试框架&#xff0c;因为自动化编写没有测试框架&#xff0c;根本玩不了 。 如果你已经是一位自动化测试人员 &#xff0c;…

工程监测领域振弦采集仪的数据处理与分析方法探讨

工程监测领域振弦采集仪的数据处理与分析方法探讨 在工程监测领域&#xff0c;振弦采集仪是常用的一种设备&#xff0c;用于测量和记录结构物的振动数据。数据处理和分析是使用振弦采集仪得到的数据的重要环节&#xff0c;可以帮助工程师了解结构物的振动特性&#xff0c;评估…

FRPS配置服务端(腾讯云)、客户端(PC电脑Windows、树莓派Debian)并设置虚拟域名

1.服务端&#xff08;腾讯云&#xff09;&#xff1a;frps.ini [common] bind_port 7000 vhost_http_port8080 vhost_https_port44344 dashboard_port 7500 privilege_token your_password subdomain_host example.com use_encryption true encryption_method tls dashb…

面试宝典进阶之关系型数据库面试题

D1、【初级】你都使用过哪些数据库&#xff1f; &#xff08;1&#xff09;MySQL&#xff1a;开源数据库&#xff0c;被Oracle公司收购 &#xff08;2&#xff09;Oracle&#xff1a;Oracle公司 &#xff08;3&#xff09;SQL Server&#xff1a;微软公司 &#xff08;4&#…

RabbitMQ发布确认

1.单个确认 单个确认发布是一种同步确认发布方式&#xff0c;也就是发布一个消息后只有它被确认发布&#xff0c;后续的消息才能继续发布。 缺点:发布速度特别慢,因为若是没有确认发布的消息会阻塞所有后续消息的发布 package com.hong.rabbitmq5;import com.hong.utils.Rabb…

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

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

选择最适合您的10个在线PS类型工具

Adobe Photoshop 多年来&#xff0c;Photoshop一直是设计师的首选。PS的功能无疑是非常强大的。设计师可以使用它来制作从简单的网页到复杂的移动应用程序设计。学习PS的基本知识很容易&#xff0c;但学习PS的所有技能都需要大量的时间和精力。当然&#xff0c;您也可以选择体…

哈希表-散列表数据结构

1、什么是哈希表&#xff1f; 哈希表也叫散列表&#xff0c;哈希表是根据关键码值(key value)来直接访问的一种数据结构&#xff0c;也就是将关键码值(key value)通过一种映射关系映射到表中的一个位置来加快查找的速度&#xff0c;这种映射关系称之为哈希函数或者散列函数&…

环境变量的使用

1.用法 1.建立文件夹.env.production&#xff08;开发&#xff09;.env.development(生产) 代码: NODE_ENVdevelopment VUE_APP_BASE_APIwww.aaa.comNODE_ENVproduction VUE_APP_BASE_APIwww.xxx.com 注意: 环境变量的文件夹应该是和src目录同级的: 2.获取 process.env.V…

vue+springboot+mybatis-plus实现乡村公共文化服务系统

项目前端&#xff1a;https://gitee.com/anxin-personal-project/rural-public-cultural-services-front 项目后端&#xff1a;https://gitee.com/anxin-personal-project/rural-public-cultural-services-behind 1.系统简介 乡村公共服务文化提供给管理员、商家、村民。管理…

二次电池的自放电

一、自放电概念 电池在开路状态时&#xff0c;其存储的电量自发被消耗的现象称为电池的自放电&#xff0c;又称电池的荷电保持能力&#xff0c;即在一定环境条件下&#xff0c;电池储存电量的保持能力。自放电也是衡量电池性能的重要参数之一&#xff0c;不同类型的电池自放电因…

过节购物怎么划算?用C语言爬虫采集京东优惠券

年关将至&#xff0c;喜迎春节&#xff0c;各家各户都忙着置办年货&#xff0c;农村逛集市&#xff0c;而城市里面的&#xff0c;尤其是年轻人最喜欢的是网购了&#xff0c;网购产品种类多&#xff0c;齐全非常方便。今天我就利用我学的技能&#xff0c;帮助大家爬取京东优惠券…

学生如何正确使用台灯?精选最合适学生使用的台灯

如今我国青少年儿童的近视率非常高&#xff0c;已经超过了50%&#xff0c;并且这个近视率还在逐年上升&#xff0c;近视的年龄也越来越趋势于低龄化&#xff0c;不少还未上学或者正在上小学的孩子都早早戴上了近视眼镜。因此许多家长都纷纷给孩子选购一台专业的护眼台灯&#x…

Docker实战09|使用AUFS包装busybox

前几篇文章中&#xff0c;重点讲解了如何实现构建容器&#xff0c;需要回顾的小伙伴可以看以下文章&#xff1a; 《Docker实战06&#xff5c;深入剖析Docker Run命令》《Docker实战07&#xff5c;Docker增加容器资源限制》《Docker实战08&#xff5c;Docker管道及环境变量识别…

服务器里面打开浏览器访问不了会是什么原因

我们在日常使用服务器的过程中&#xff0c;时常会有遇到各类情况&#xff0c;近日就有遇到用户联系到德迅云安全&#xff0c;反馈自己在服务器里面打不开浏览器&#xff0c;服务器里面没有网络无法访问的情况。那我们今天就来讲下服务器里面打不开网站可能是由哪些原因导致。 …

雍禾植发袁宣心中有“术”,雍禾医疗帮用户重启人生

从公立医院烧伤外科来到雍禾&#xff0c;可以说是袁宣职业生涯里最重要的一个决定。据了解&#xff0c;袁宣医生所在的雍禾植发&#xff0c;是国内最大的毛发医疗机构。截至2022年12月31日&#xff0c;雍禾医疗已组建1341人的专业医疗团队&#xff0c;其中毛发医生294人&#x…

什么是活动的DWDM网络?

DWDM系统被认为是一个基于应答器的系统&#xff0c;可以帮助在数据中心互连设置中在站点之间传输大量数据。不同于无源DWDM网络&#xff0c; DWDM网络通常包括OEO、主动DWDM Mux Demux、EDFA、DCM和其他主动WDM组件&#xff0c;更适合远程传输。此外&#xff0c;主动DWDM网络还…