矩阵求逆_高斯消元法

news2025/1/20 3:37:17

高斯消元法流程

首先必须要判断矩阵是不是一个方阵,其方法是对于一个矩阵 A n × n A_{n \times n} An×n,先构造一个增广矩阵 W = [ A ∣ E ] W=[A \mid E] W=[AE],其中 E E E是一个 n × n n \times n n×n的单位矩阵,这样 W W W就成了一个 n × 2 n n \times 2n n×2n的矩阵。接下来对 W W W行行变换,使之变成的形式 [ E ∣ B ] [E \mid B] [EB],这样就可以确定 A − 1 = B A^{-1}=B A1=B

举个例子,以下矩阵:

[ 1 1 1 1 2 1 1 1 − 1 2 1 1 − 3 2 1 2 ] \left[\begin{array}{cccc} 1 & 1 & 1 & 1 \\ 2 & 1 & 1 & 1 \\ -1 & 2 & 1 & 1 \\ -3 & 2 & 1 & 2 \end{array}\right] 1213112211111112

右接一个单位矩阵:

[ 1 1 1 1 1 0 0 0 2 1 1 1 0 1 0 0 − 1 2 1 1 0 0 1 0 − 3 2 1 2 0 0 0 1 ] \left[\begin{array}{cccccccc} 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \\ 2 & 1 & 1 & 1 & 0 & 1 & 0 & 0 \\ -1 & 2 & 1 & 1 & 0 & 0 & 1 & 0 \\ -3 & 2 & 1 & 2 & 0 & 0 & 0 & 1 \end{array}\right] 12131122111111121000010000100001

进行行变换,得到行阶梯矩阵:

[ 1 1 1 1 1 0 0 0 0 1 1 1 2 − 1 0 0 0 0 − 1 − 1 − 5 3 1 0 0 0 0 1 − 2 2 − 1 1 ] \left[\begin{array}{cccccccc} 1 & 1 & 1 & 1 & 1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 1 & 2 & -1 & 0 & 0 \\ 0 & 0 & -1 & -1 & -5 & 3 & 1 & 0 \\ 0 & 0 & 0 & 1 & -2 & 2 & -1 & 1 \end{array}\right] 10001100111011111252013200110001

进行单位化:

[ 1 0 0 0 − 1 1 0 0 0 1 0 0 − 3 2 1 0 0 0 1 0 7 − 5 0 − 1 0 0 0 1 − 2 2 − 1 1 ] \left[\begin{array}{cccccccc} 1 & 0 & 0 & 0 & -1 & 1 & 0 & 0 \\ 0 & 1 & 0 & 0 & -3 & 2 & 1 & 0 \\ 0 & 0 & 1 & 0 & 7 & -5 & 0 & -1 \\ 0 & 0 & 0 & 1 & -2 & 2 & -1 & 1 \end{array}\right] 10000100001000011372125201010011

利用高斯消元法求矩阵的逆如Algorithm1。

由Algorithm1看出,利用高斯消元法求矩阵的逆的时间复杂度是 2 × O ( n 3 ) 2\times O \left ( n^{3} \right ) 2×O(n3)。在 n n n越大的情况下,该方法消耗的计算成本远远小于伴随矩阵法。

高斯消元法代码实现

function B = gaussianElimination(A)
%用高斯消元法(伴随矩阵法)求矩阵的逆
%   A:原矩阵
%   B:逆矩阵
n = size(A,1);  %方阵的维度
B = eye(n);  %初始化B矩阵为单位矩阵
for i0 = 1 : n
    pe = max(abs(A(i0 : n, i0)));   %寻找主元pe,max目的是通过主元判断矩阵是否可逆
    if pe == 0      %判断主元是否为0, 若是, 则矩阵A不是满秩矩阵,不存在逆矩阵
        disp("该矩阵A不存在逆矩阵")
        return;
    end
    %消去A的第i0列除去i0行以外的各行元素
    tmp1 = A(i0, i0);
    A(i0, :) = A(i0, :) / tmp1;   %主对角线上的元素变为1
    B(i0, :) = B(i0, :) / tmp1;   %伴随矩阵做相应变换
    for i1 = 1 : n
        if i1 ~= i0
            temp = A(i1, i0);
            A(i1, :) = A(i1, :) - A(i0, :) .* temp;
            B(i1, :) = B(i1, :) - B(i0, :) .* temp;
        end
    end
end
end

clc;close;clear;
X = [8, 4, 5; 4, 8, 6; 5, 6, 8];
tic
B = gaussianElimination(X);
toc
tic
c = inv(X);
toc
disp(B);
disp(c);

输出结果:

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

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

相关文章

说说你对Event Loop(事件循环)的理解?

目录标题一、是什么二、事件循环三、宏任务和微任务微任务宏任务四、async与awaitasyncawait一、是什么 Javascript在设计之初便是单线程,即指程序运行时,只要一个线程存在,同一时间只能做一件事。 为了解决单线程运行阻塞问题,J…

【jvm系列-07】深入理解执行引擎,解释器、JIT即时编译器

JVM系列整体栏目 内容链接地址【一】初识虚拟机与java虚拟机https://blog.csdn.net/zhenghuishengq/article/details/129544460【二】jvm的类加载子系统以及jclasslib的基本使用https://blog.csdn.net/zhenghuishengq/article/details/129610963【三】运行时私有区域之虚拟机栈…

消息中间件Kafka分布式数据处理平台+ZooKeeper

目录 一.消息队列基本介绍 1.为什么需要消息队列(MQ) 2.使用消息队列的好处 2.1 解耦 2.2 可恢复性 2.3 缓冲 2.4 灵活性 & 峰值处理能力 2.5 异步通信 3.消息队列的两种模式 3.1 点对点模式 3.2 发布/订阅模式 二.Kafka基本介绍 1.Kaf…

【http】 get方法和Post方法区别;http和https

get方法和Post方法 get方法:通过url传参,回显输入的私密信息,不够私密 Post方法:通过正文传参,不会回显,一般私密性有保证。 一般如果上传的图片,音频比较大,推荐Post方法&#x…

Android中的AsyncTask

近期写了一个项目,在前台刷新界面的时候需要操作数据库,进行数据操作,在UI线程更新数据会导致ANR,程序十分卡,因此用了AsyncTask进行后台数据处理。 介绍 AsyncTask是一个用于在后台线程执行异步任务并在主线程更新U…

springboot+vue论坛管理系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的论坛管理系统。项目源码请联系风歌,文末附上联系信息 。 目前有各类成品java毕设,需要请看文末联系方式 。ja…

1.分布式电源接入对配电网影响分析

说明书 相关代码资源地址:风、光、负荷场景生成;风电出力各场景及概率;光伏出力各场景及概率;负荷各场景及概率;场景的削减;样本概率初始化;样本削减 基于多目标算法的冷热电联供型综合能源系…

Android 自定义View 之 圆环进度条

圆环进度条前言正文一、XML样式二、构造方法三、测量四、绘制① 绘制进度条背景② 绘制进度③ 绘制文字五、API方法六、使用七、源码前言 很多时候我们会使用进度条,而Android默认的进度条是长条的,从左至右。而在日常开发中,有时候UI为了让页…

亚马逊云科技为游戏全生命周期提供保障,降低游戏整体运营成本

开发一个“爆款”游戏总共需要几步?Marvel Snap可能会告诉你:第一步,专心致志把游戏做好、提高可玩性;第二步,把其他工作交给亚马逊云科技。 相关数据显示,自2022年10月18日正式发行以来,在不…

L2-044 大众情人分数 25分

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里&#xf…

【Hello Linux】信号量

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍linux中信号量的概念 信号量信号量的概念信号量的使用信号量函数二元信号量模拟互斥功能基于环形队列的生产者消费者模型空间资…

CSS快速入门-选择器和优先级

文章目录CSS简介选择器CSS样式优先级CSS简介 CSS是一种用于样式化网页的语言,全称为“层叠样式表”(Cascading Style Sheets)。 它可以控制网页中元素的外观和布局,例如颜色、字体、大小、边距、对齐等,让网页变得更…

消费回暖:别总想着“报复”,而该想想怎么“修复”

01 是报复性消费吗?「报复性消费」一词最早是在2020年武汉疫情解封之后被大家熟知。之后的三年里,各路机构总是预测“等到常态化防疫结束之后,必将迎来真正的报复性消费”,事实果真如此吗?A面:涨自去年年底…

健康体检管理系统源码 PEIS源码 体检小结自动生成

健康体检管理系统源码 PEIS源码 数据对接 体检小结自动生成,商业源码,有演示,文档齐全。自主知识产权。 文末获取联系! 一套专业的体检管理系统源码,该系统涵盖个人体检、团队体检、关爱体检等多种体检类型&#xf…

Learning Tone Curves for Local Image Enhancement

作者 LUXI ZHAO , ABDELRAHMAN ABDELHAMED , AND MICHAEL S. BROWN 论文比较清晰易懂。 就是图像分8∗8648*8648∗864个patch, 卷积网络为RGB三个通道预测 3∗643*643∗64 个 look up table, 就是每个patch 3个1D lut. 然后每个patch的中心直接用1D lut&#xf…

spring boot对敏感信息进行加解密

我们使用jasypt最新版本对敏感信息进行加解密。 1.在项目pom文件中加入如下依赖&#xff1a; <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version…

多维时序 | MATLAB实现CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-GRU-Attention多变量时间序列预测 目录多维时序 | MATLAB实现CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-GRU-Attention多变量时间序列预测&#xff0c;CNN-GRU-Attention结合注意…

Unity记录3.4-地图-柏林噪声生成 1D 地图及过渡地图

文章首发及后续更新&#xff1a;https://mwhls.top/4489.html&#xff0c;无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评&#xff0c;非常感谢&#xff01; 汇总&#xff1a;Unity 记录 摘要&#xff1a;柏林噪声生成…

超详细Redis入门教程——Redis概述

前言 本文小新为大家带来 超详细Redis入门教程——Redis概述 相关知识&#xff0c;具体内容包括Redis简介&#xff0c;Redis的用途&#xff0c;Redis的特性&#xff0c;Redis的IO模型&#xff08;包括&#xff1a;单线程模型&#xff0c;混合线程模型&#xff0c;多线程模型&am…

FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

目录1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利&#xff1a;工程代码的获取1、前言 目前网上的fpga实现udp基本生态如下&#xff1a; 1&#xff1a;verilog编写的udp收发器&#xff0c;但不带ping功能&#xff0c;这样的代码…