高斯-约旦消元法

news2024/11/13 18:39:39

1,思想

  1. 该算法基于高斯消元,但是思想是把矩阵化为对角阵,从而避免回代的操作
  2. 思路是一列一列处理,每次选为处理过的行中主元最大(极大避免精度损失)的行处理。把这一列除了主元这一行的元素,其余该列的其他行都化为0,最终得出对角阵
  3. 举例:如下图增广矩阵

     处理第一列,我们找到主元最大的一行(即第一行),其余行该列化为0,得到

     处理第2列,我们在剩余未处理的下面两行找到主元最大的一行(即第3行,主元13),消去得:

     处理最后一列,得

     得出对角阵,那么答案就是x1=0.54,x2=0.23,x3=0.50

  4. 那么如何处理无解与无穷解呢?

    1. 首先,他们的情况都是,ax=b中,a=0

    2. 那么如果b!=0,说明无解,其余情况就是无穷解

    3. 所以我们只需要消元后判断非0行是否为n,不是,则对0行遍历,询问这些0行是否存在b!=0,存在就是无解,不存在就是无穷解

模板:P2455 [SDOI2006]线性方程组

#include <bits/stdc++.h>
using namespace std;
#define ll               long long
#define endl             "\n"
const double eps=1e-9;
const int N = 110;
int n;
double a[N][N];

void print()//打印看目前情况
{
	cout<<endl;
	for(int i=1; i<=n; ++i)for(int j=1; j<=n+1; ++j)cout<<a[i][j]<<" \n"[j==n+1];
	cout<<endl;
}

void gauss()
{
	int r=1;//r表示目前处理到第r行
	for(int i=1; i<=n; ++i)
		{
			int mx=r;
			for(int j=r+1; j<=n; ++j)if(fabs(a[j][i]>fabs(a[mx][i])))mx=j;//第r次处理,但是比较的还是目前第i列元素(前面有可能有的列不用处理)
			if(fabs(a[mx][i])<eps)continue;//最大主元为0,当前列都为0,不用处理
			if(mx!=r)for(int j=1; j<=n+1; ++j)swap(a[r][j],a[mx][j]);//把主元最大的行提到第r行来处理
			for(int j=1; j<=n; ++j)if(j!=r)//处理不是第r行的其他行
					{
						double tmp=a[j][i]/a[r][i];
						for(int k=r; k<=n+1; ++k)a[j][k]-=a[r][k]*tmp;
					}
			r++;
			//	print();
		}
	if(r<=n)//存在0行
		{
			for(int i=r; i<=n; ++i)if(fabs(a[i][n+1])>eps)
					{
						cout<<-1<<endl;//0行但是b!=0
						return;
					}
			cout<<0<<endl;//无穷解
		}
	else for(int i=1; i<=n; ++i)printf("x%d=%.2lf\n",i,fabs(a[i][n+1]/a[i][i])<eps?0.00:a[i][n+1]/a[i][i]);//防止-0,00出现

}
void mysolve()
{
	cin>>n;
	for(int i=1; i<=n; ++i)for(int j=1; j<=n+1; ++j)cin>>a[i][j];
	gauss();
}

int32_t main()
{
	mysolve();
	system("pause");
	return 0;
}

 

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

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

相关文章

c#笔记-委托

委托 委托是方法的类型。 有了类型就可以声明方法的变量&#xff0c;参数&#xff0c;字段。然后再调用他。 很多新人很困惑&#xff0c;为什么要把方法做成变量&#xff0c;不直接去调用它呢&#xff1f; 这是因为在目前你的认知里&#xff0c;代码都是你一个人写出来的。 如…

计算机图形学-GAMES101-5

一、观测变换 通过Viewing(观测)transformation&#xff0c;最终我们将世界坐标系中的物体投影到了一个xyz都处于【-1,1】的立方体中。那么接下来&#xff0c;我们该做什么&#xff1f; 二、光栅化(Rasterization) &#xff08;1&#xff09;透视投影的定义 定义透视投影的视…

〖大学生·技术人必学的职业规划白宝书 - 职业规划篇①〗- 大学生选择职业前的自我认知与剖析

历时18个月&#xff0c;采访 850 得到的需求。 不管你是在校大学生、研究生、还是在职的小伙伴&#xff0c;该专栏有你想要的职业规划、简历、面试的答案。说明&#xff1a;该文属于 大学生技术人职业规划白宝书 专栏&#xff0c;购买任意白宝书体系化专栏可加入TFS-CLUB 私域社…

linux之线程同步

1. 互斥锁 定义锁&#xff1a; pthread_mutex_t 初始化锁函数&#xff1a; int pthread_mutex_init(pthread_mutex_t* mutex,pthread_mutexattr_t* attr); 第一个参数是定义的互斥锁的地址&#xff0c;第二个参数是锁的属性&#xff0c;一般传NULL 互斥锁的属性在创建…

(C语言版)力扣(LeetCode)+牛客网(nowcoder)二叉树基础oj练习

二叉树基础oj练习 965. 单值二叉树题目解法 100. 相同的树题目解法 101. 对称二叉树题目解法 144. 二叉树的前序遍历题目解法 94. 二叉树的中序遍历题目解法 145. 二叉树的后序遍历题目解法 572. 另一棵树的子树题目解法 KY11 二叉树遍历题目解法 结语 965. 单值二叉树 题目 …

Linux安装MongoDB数据库并内网穿透在外远程访问

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 转发自CSDN cpolarlisa的文章&#xff1a;Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透…

LeetCode572. 另一棵树的子树LeetCode

572. 另一棵树的子树 描述示例解题思路以及代码 描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节…

数据库|SQL调优案例之TiFlash帮倒忙该怎么办?

一、背景 早上收到某系统的告警tidb节点挂掉无法访问&#xff0c;情况十万火急。登录中控机查了一下display信息&#xff0c;4个TiDB、Prometheus、Grafana全挂了&#xff0c;某台机器hang死无法连接&#xff0c;经过快速重启后集群恢复&#xff0c;经排查后是昨天上线的某个S…

Flink消费pubsub问题

我看网上flink消费pubsub的资料并不多&#xff0c;最近跑通了&#xff0c;大家有问题的可以给我留言。 一、基本资料 1.flink官网接入方式 Google Cloud PubSub | Apache Flink StreamExecutionEnvironment streamExecEnv StreamExecutionEnvironment.getExecutionEnviron…

Android平台如何实现外部编码后(H.264/H.265)数据实时预览播放

技术背景 我们在对接开发者的时候&#xff0c;遇到这样的诉求&#xff1a;除了正常的RTMP、RTSP直播播放外&#xff0c;有些硬件设备输出编码后&#xff08;H.264/H.265&#xff09;的数据&#xff0c;比如无人机或类似硬件产品&#xff0c;回调出来的H.264/H.265数据&#xf…

C#中的委托是什么

https://www.cnblogs.com/deepalley/p/12150931.html 1.什么是委托&#xff1f;&#xff08;方法作另一个方法的参数&#xff09; delegate void MyDel(int value); //声明委托类型 和类一样&#xff0c;委托是用户自定义的类型&#xff0c;但是类是数据和方法的集合&#…

vue实现功能完整的购物商城,商品零食、电商通用商城

目录 一、项目结构 1.项目截图 2.项目简介 3.项目布局 二、首页 1.效果图 2.源码 三、商品详情 1.效果图 2.源码 四、分类 1.效果图 五、购物车、提交订单 1.效果图 六、个人中心 1.源码结构 2、效果图 七、总结 一、项目结构 1.项目截图 2.项目简介 项目基于vue…

海睿思分享 | 一文读懂企业数据资产目录建设的重要性

小王是某公司信息化部门负责人。 某天&#xff0c;公司领导需要获取近三年来生产部门的人员信息全面数据&#xff0c;小王费了九牛二虎之力&#xff0c;召开了各种会议&#xff0c;在各个系统里来回找数据&#xff0c;最终找到了这些数据。然而领导所需的人员职称、人员获奖信…

UOS服务器系统配置bond

一、Bond介绍 bond可以将多个网卡绑定到一起&#xff0c;可以让两个或多个接口作为一个接口&#xff0c;同时提高带宽&#xff0c;并提供网络链路的冗余&#xff0c;当有其中一块网卡故障的时候&#xff0c;不会中断服务器的业务。 二、Bond模式 1、mode0&#xff08;balanc…

老杨说运维 | 运维数智化转型正确打开方式是什么?他这样说

2023年5月9日&#xff0c;中国计算机用户协会信息科技审计分会会员大会暨金融科技风险管理与审计论坛成功于北京召开。擎创科技CEO杨辰受邀与会&#xff0c;并分享了在数智运维发展过程中对企业数智化转型建设的规划思考以及相关实践经验。 同时&#xff0c;年会上举行了“金融…

《基础知识》提示学习的基本知识

《基础知识》提示学习的基本知识 提示学习背景提示的形式和元素提示学习的输入形式提示学习的重要元素提示学习的输入形式举例基本提示任务提示学习 内容参考:打工人转型之道(二):提示工程(Prompt Engineering)进阶篇

【服务器】利用树莓派搭建 web 服务器【无需公网IP】

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 概述 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 设置 Apache Web 服务器 测试 web 站点 安装静态样例站点 将web站点发布到公网 安装 Cpolar内网穿透 cpolar进行tok…

基于 FPGA 的彩色图像灰度化的设计实现(image_stitche_x)

文章目录 前言一、图像合并模块的设计二、仿真文件 前言 image_stitche_x 模块&#xff1a;将串口接收的尺寸为 400480 大小的彩色图像与灰度化处理后的 400480 大小的图像数据以左右形式合并成一张 800*480 的图像。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…

AI再度升级,IT业一片哀鸿遍野:程序员真的要失业了吗?

IT人员真的要失业了吗&#xff1f; 随着各个大厂已经相继传来裁员&#xff0c;降薪&#xff0c;减招的消息和ChatGPT等大型AI模型可以定制化写参考代码&#xff0c;甚至通过外接API直接帮助操作&#xff0c;IT人员似乎越来越不吃香了。 其实&#xff0c;ChatGPT有用的不是取代…

Diango学习-用户管理系统(简单部门管理、用户管理)

目录 1、创建项目和app 1.创建项目 2.创建app 2种创建方式 注册app 2、表结构的创建 Django中的模型字段有很多种&#xff0c;包括但不限于&#xff1a; 设计表结构&#xff08;Django&#xff09; 在models.py文件中创建表&#xff1a;部门表和员工表 加入性别列&…