矩阵求逆_高斯消元法

news/2024/11/14 17:21:11/

高斯消元法流程

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

举个例子,以下矩阵:

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

右接一个单位矩阵:

[1111100021110100−12110010−32120001]\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

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

[1111100001112−10000−1−1−53100001−22−11]\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

进行单位化:

[1000−11000100−321000107−50−10001−22−11]\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(n3)2\times O \left ( n^{3} \right )2×O(n3)。在nnn越大的情况下,该方法消耗的计算成本远远小于伴随矩阵法。

高斯消元法代码实现

function B = gaussianElimination(A)
%用高斯消元法(伴随矩阵法)求矩阵的逆
%   A:原矩阵
%   B:逆矩阵
n = size(A,1);  %方阵的维度
B = eye(n);  %初始化B矩阵为单位矩阵
for i0 = 1 : npe = 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;   %主对角线上的元素变为1B(i0, :) = B(i0, :) / tmp1;   %伴随矩阵做相应变换for i1 = 1 : nif i1 ~= i0temp = A(i1, i0);A(i1, :) = A(i1, :) - A(i0, :) .* temp;B(i1, :) = B(i1, :) - B(i0, :) .* temp;endend
end
endclc;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.ppmy.cn/news/44528.html

相关文章

【刷题】27. 移除元素

27. 移除元素一、题目描述二、示例三、实现计数法双指针法27. 移除元素 一、题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外…

Redis基础总结-redis简介

Redis基础Redis基础目标:1. Redis 简介1.1 NoSQL概念1.1.1 问题现象1.1.2 NoSQL的概念1.2 Redis概念1.2.1 redis概念1.2.2 redis的应用场景1.3 Redis 的下载与安装1.3.1 Redis 的下载与安装1.4 Redis服务器启动1.4.1 Redis服务器启动1.4.2 Redis客户端启动1.4.3 Red…

简单的回顾Linux

linux命令ls会显示出文件的颜色, 系统约定的默认颜色含义如下: 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 主要是使用ln命令建立的文件 红色闪烁:表示链接的…

01 |「ChatGPT」简介

前言 ChatGPT 科普。 文章目录 前言一、ChatGPT 介绍1. ChatGPT 是什么2. ChatGPT 有哪些应用二、相关文献一、ChatGPT 介绍 登录网址:https://chat.openai.com/auth/login 1. ChatGPT 是什么 ChatGPT 是一个大型语言模型,由 OpenAl 公司训练,并基于 GPT-3.5 架构构建;它可…

实验设备管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87682549 更多系统资源库…

(选专业)什么性格的人适合报考电子信息类专业?

电子信息类专业是指涉及电子技术和信息技术的学科,主要研究电子技术和信息技术的理论、原理和应用。尤其是当下我国集成电路,芯片等高科技行业迅速发展,学好了电子信息类专业,就业前景一片光明。但并不是所有人都适合这个专业&…

【redis】redis分布式锁

目录一、为什么需要分布式锁二、分布式锁的实现方案三、redis分布式锁3.1 简单实现3.2 成熟的实现一、为什么需要分布式锁 1.在java单机服务中,jvm内部有一个全局的锁监视器,只有一个线程能获取到锁,可以实现线程之间的互斥 2.当有多个java服…

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源:5、帮各位写好了十多个分类模型,直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…