matlab高斯消元法求解线性方程组

高斯消元法的基本原理是通过一系列行变换将线性方程组的增广矩阵转化为简化行阶梯形式,从而得到方程组的解。其核心思想是利用矩阵的行变换操作,逐步消除未知数的系数,使得方程组的求解变得更加简单。

首先,给定系数矩阵A和常数向量b,将它们合并为增广矩阵a。然后确定增广矩阵的行数n和列数m。

接下来,使用两个嵌套的循环,依次进行消元计算。外层循环i从1到n遍历每一行,内层循环j从m递减到i遍历当前行的每个元素。在每次循环中,将当前行的第j个元素除以第i个元素,即将主元归一化为1。

然后,通过两个嵌套的循环,对i+1到n的行进行消元计算。内层循环k从m递减到i遍历当前行的每个元素,将当前行的第k个元素减去第j行的第i个元素乘以第i行的第k个元素,即利用消元操作将当前列的下面各行的对应元素都消为0。

然后,使用一个逆序的循环,从第n-1行开始回代求解未知数。在每次循环中,内层循环j从i递减到1,将当前行的最后一个元素减去第i+1行的第m个元素乘以第j行的第m个元素,即通过回代操作求解未知数。

实际上就是两个三层循环,消元一个三层循环和回代一个三层循环,即算法的复杂度为O(n3)。

A=[1,1,2,1;1,2,0,1;1,4,2,1;1,8,2,4];
b=[2;0;2;3];
A_b=[A,b];
[n,m]=size(A_b);
for i=1:nfor j=m:-1:iA_b(i,j)=A_b(i,j)/A_b(i,i);endfor j=i+1:nfor k=m:-1:iA_b(j,k)=A_b(j,k)-A_b(j,i)*A_b(i,k);endendfprintf('第%d次消元\n',i);disp(rats(A_b));
end
for i=n-1:-1:1for j=i:-1:1A_b(j,m)=A_b(j,m)-A_b(j,i+1)*A_b(i+1,m);A_b(j,i+1)=0;endfprintf('第%d次回代\n',n-i);disp(rats(A_b));
end

在高斯消去法中,如果一个列中的主元很小,那么在后续的计算过程中,将会产生较大的误差。这是因为在消元过程中,除法运算会引入数值误差,而被除数过小可能导致舍入误差放大。

通过进行列主元选取,即选择当前列中绝对值最大的元素所在的行作为主元行,可以有效地避免除数过小的情况。选择绝对值最大的元素作为主元,能够减小舍入误差的累积,从而提高计算过程的稳定性。它可以减少舍入误差对计算结果的影响,保证所得到的解更加精确和可靠。

% A=[1,1,2,1;1,2,0,1;1,4,2,1;1,8,2,4];
% B=[0.0001,1,2,1;1,2,0,1;1,4,2,1;1,8,2,0.0004];
% b=[2;0;2;3];
A_b=[A,b];
[n,m]=size(A_b);
for i=1:n[~,maxIndex]=max(abs(A_b(i:n,i:i)));maxIndex=i+maxIndex-1;if i~=maxIndexA_b([i,maxIndex],:)=A_b([maxIndex,i],:);endfor j=m:-1:iA_b(i,j)=A_b(i,j)/A_b(i,i);endfor j=i+1:nfor k=m:-1:iA_b(j,k)=A_b(j,k)-A_b(j,i)*A_b(i,k);endendfprintf('第%d次消元\n',i);disp(rats(A_b));
end
for i=n-1:-1:1for j=i:-1:1A_b(j,m)=A_b(j,m)-A_b(j,i+1)*A_b(i+1,m);A_b(j,i+1)=0;endfprintf('第%d次回代\n',n-i);disp(rats(A_b));
end
x=A_b(:,end:end);
fprintf('高斯列主元消去法\n');
disp(rats(x));
fprintf('matlab内置函数求逆求解\n');
xx=A^(-1)*b;
disp(rats(xx));
diff=x-xx;
stem(1:100,diff);

与matlab内置求逆的解相比 

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

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

相关文章

怎么防止重要文件夹丢失?文件夹安全如何保护?

我们在使用电脑的过程中,会将重要数据放在文件夹中,那么,我们该怎么防止重要文件夹丢失呢?下面我们就一起来了解一下。 EFS加密 EFS加密可以对于NTFS卷上的文件夹进行加密,加密后的文件夹将只允许加密时登录系统的用户…

基于卷积神经网络的法线贴图生成器

在本文中,我们将学习如何训练卷积神经网络从彩色图像生成法线贴图。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 1、数据和工具 我们正着手训练神经网络从彩色图像生成法线贴图。 我们将以“成对”的方式做到这一点。 这意味着我们将显示相应图像的网络对…

SpringCloud学习笔记-Ribbon负载均衡

目录 1.负载均衡策略2.自定义负载均衡策略3.饥饿加载 SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTemplate发出的请求,对地址做了修改。用一幅图来总结一下: 基本流程如下: 拦截我们的RestTemplate请求http://userserv…

【AI视野·今日Sound 声学论文速览 第八期】Wed, 20 Sep 2023

AI视野今日CS.Sound 声学论文速览 Wed, 20 Sep 2023 Totally 1 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Accelerating Diffusion-Based Text-to-Audio Generation with Consistency Distillation Authors Yatong Bai, Trung Dang, Dung Tran, K…

Yolov7改进--添加注意力机制

改进参考魔鬼导师:YOLOV7改进-添加注意力机制_哔哩哔哩_bilibili 视频教程:YOLOV7改进-添加注意力机制_哔哩哔哩_bilibili GitHub改进项目地址:其中的cv_attentionGitHub - z1069614715/objectdetection_script: 一些关于目标检测的脚本的改…

【版本控制工具二】Git 和 Gitee 建立联系

文章目录 前言一、Git 和 Gitee 建立联系1.1 任意目录下,打开 git bash 命令行,输入以下命令生成公钥1.2 配置SSH公钥1.3 进行全局配置 二、其它相关Git指令2.1 常用指令2.2 指令操作可能出现的问题 三、补充3.1 **为什么要先commit,然后pull…

elasticsearch深度分页问题

一、深度分页方式from size es 默认采用的分页方式是 from size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如我们执行如下查询 1 GET /student/student/_search 2 { 3 "query":{ 4 "match_all":…

死灰复燃!QakBot 恶意软件仍在运行中

2023 年 8 月,美国联邦调查局宣布,在名为“猎鸭行动”的国际执法活动中,成功拆除 Qakbot 僵尸网络(Qakbot 也称 QBot、QuackBot 和 Pinkslipbot,自 2008 年以来一直非常活跃)。然而 Security A ffairs 网站…

来单提醒/客户催单 ----苍穹外卖day9

来单提醒 需求分析 代码开发 注意:前端请求的并不是8080端口;而是先请求Nginx,Nginx进行反向代理以后转发到8080端口 这段代码首先创建了一个orders类用于更新订单状态 并且在更新状态后使用websocket发送给后端提醒 将信息放在map后,使用json的string化方式传给一个接收对象,…

计算机网络笔记3 数据链路层

计算机网络系列笔记目录👇 计算机网络笔记6 应用层计算机网络笔记5 运输层计算机网络笔记4 网络层计算机网络笔记3 数据链路层计算机网络笔记2 物理层计算机网络笔记1 概述 文章前言 💗 站在巨人的肩膀上,让知识的获得更加容易&#xff01…

Vue-1.8生命周期

Vue生命周期 一个Vue实例从创建到销毁的整个过程。 生命周期: 1)创建:响应式数据 ->发送初始化渲染请求 2)挂载:渲染数据->操作dom 3)更新:数据修改,更新视图 4&#xf…

【Java】微服务——RabbitMQ消息队列(SpringAMQP实现五种消息模型)

目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比: 2.快速入门2.1.RabbitMQ消息模型2.4.1.publisher实现2.4.2.consumer实现 2.5.总结 3.SpringAMQP3.1.Basic Queue 简单队列模型3.1.1.消息发送3.1.2.消息接收3.1.3.测试 3.2.WorkQueue3.…

Excel·VBA使用ADO合并工作簿

之前文章《ExcelVBA合并工作簿(7,合并子文件夹同名工作簿中同名工作表,纵向汇总数据)》处理合并工作簿问题,代码运行速度比较慢 而《ExcelVBA使用ADO读取工作簿工作表数据》读取数据非常快,那么是否可以使用…

Unity中Shader光强与环境色

文章目录 前言一、实现下图中的小球接受环境光照实现思路:1、在Pass中使用前向渲染模式2、使用系统变量 _LightColor0 获取场景中的主平行灯 二、返回环境中主环境光的rgb固定a(亮度),小球亮度还随之改变的原因三、获取Unity中的环境光的颜色1、Color模式…

k8s安全机制

安全机制 一、机制说明二、认证(Authentication)HTTP Token 认证HTTP Base 认证HTTPS 证书认证(最严格) 三、鉴权(Authorization)角色角色绑定主体(subject)Role and ClusterRoleRol…

体育场馆能源消耗监测管理平台,为场馆提供能源服务

随着能源问题的不断重视,体育场馆能源问题也被人们广泛的关注。为了让体育场馆的能源高效利用,体育场馆能源消耗监测管理平台应用而生。 该平台通过采集、监测场内数据,并对数据进行实时分析与反馈,从而帮助管理者了解到场内能源…

【Python】win安装

目录标题 下载目录安装步骤验证是否安装成功linux 、MacOs 安装 下载目录 https://www.python.org/downloads/ 安装步骤 验证是否安装成功 进入命令行,输入 : python 出现版本号即查看成功: linux 、MacOs 安装 Python 安装到 Linux 上…

Dubbo 环境隔离

通过标签实现流量隔离环境(灰度、多套开发环境等) 无论是在日常开发测试环境,还是在预发生产环境,我们经常都会遇到流量隔离环境的需求。 在日常开发中,为了避免开发测试过程中互相干扰,我们有搭建多套独…

Git 学习笔记 | Git 项目创建及克隆

Git 学习笔记 | Git 项目创建及克隆 Git 学习笔记 | Git 项目创建及克隆创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git 学习笔记 | Git 项目创建及克隆 创建工作目录与常用指令 工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是…

机器人中的数值优化(二十)——函数的光滑化技巧

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…