基于MATLAB的逆矩阵、相似矩阵、正交矩阵(附完整代码)

Matlab求矩阵的逆,3种常用方法总结 最近在使用函数库求解逆矩阵的时候发现同一个矩阵使用不同的语言、不同的求解方法会产生不同精度的结果,特别是阶数很高的方阵,一些库中的算法为了使计算速度提升,用了非常规方法。这里整理了3种常用的矩阵求逆方法,伴随矩阵法、LU分解法和高斯消元法,并用Matlab进行了实现,一些过程参考了NET博文: 阅读详情
AI摘要

本文介绍了MATLAB中多项式与向量的相互转换,如poly2sym和sym2poly函数的使用,以及矩阵的逆矩阵计算,包括inv函数和invhilb函数的比较。同时,讨论了相似变换和正交矩阵的概念,通过示例展示了如何求解正交矩阵及其误差分析。此外,还涉及奇异矩阵的正交基矩阵计算。

一. 符号多项式与数值多项式的转换

向量P=[a_1,a_2,\ldots,a_{n+1}],可以利用MATLAB将此向量转换为多项式表示,格式如下:

f=poly2sym(P)

当然,反过来也可以将符号多项式转换为向量,格式如下:

P=sym2poly(f)

备注:注意函数字母的顺序,2代表"to"

例题1

用不同的形式表示f=s^5+2s^4+3s^3+4s^2+5s+6。

解:

MATLAB代码如下:

clc;clear;
P=[1 2 3 4 5 6]; %按照降幂的顺序,将系数表示成多项式
f=poly2sym(P) %转换成符号型多项式

P1=sym2poly(f) %从f转换成数值形式的多项式

运行结果: 
f =x^5 + 2*x^4 + 3*x^3 + 4*x^2 + 5*x + 6

P1 =1 2 3 4 5 6

二. 矩阵的逆矩阵

令A为n✖️n的非奇异方阵,则其逆矩阵C=A^{-1},且满足如下表达式:

AC=CA=I

MATLAB调用的格式,如下:

C=inv(A)

例题2

利用不同的方法计算4阶Hilbert矩阵的逆矩阵,并比较误差。

解:

MATLAB代码:

clc;clear;
format long; %有效数字16位
H=hilb(4);

%直接利用inv函数求逆矩阵
H1=inv(H)
E1=norm(H*inv(H)-eye(size(H))) %计算误差范数


%利用invhilb()函数求逆矩阵
H2=invhilb(4)
E2=norm(H*invhilb(4)-eye(size(H)))

运行结果:

H1 =

   1.0e+03 *

   0.015999999999999  -0.119999999999991   0.239999999999979  -0.139999999999986
  -0.119999999999991   1.199999999999898  -2.699999999999748   1.679999999999834
   0.239999999999979  -2.699999999999748   6.479999999999380  -4.199999999999592
  -0.139999999999986   1.679999999999835  -4.199999999999593   2.799999999999732

E1 = 4.585334383488104e-13


H2 =

          16        -120         240        -140
        -120        1200       -2700        1680
         240       -2700        6480       -4200
        -140        1680       -4200        2800


E2 = 5.684341886080801e-14

分析:

  1. invhilb()函数求出的逆矩阵,误差更小
  2. 对接近奇异矩阵,高阶次的情况不建议直接使用inv()函数,可以辅助符号工具箱

例题3

利用符号型矩阵求30阶Hilbert矩阵的逆矩阵,并求其误差。

解:

MATLAB代码:

clc;clear;
H=sym(hilb(30));
H1=inv(H) %求逆
E1=norm(double(H*H1-eye(size(H)))) %计算范数误差

运行结果:

30阶Hilb矩阵的求逆结果非常长,此处放出一部分:

E1 =0

分析:利用符号型矩阵求出的结果非常好,范数误差为0

如果对Hlbert矩阵不熟悉的小伙伴,可以参看这篇博客:

基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式_唠嗑!的博客-优快云博客

另外,奇异矩阵不存在相应的逆矩阵,利用符号工具箱求不出对应的结果。例如以下矩阵,就没有对应的逆矩阵:

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 4&14&15&1\\ \end{bmatrix}

含有变量的矩阵,也可以利用inv()函数求其逆矩阵的。

例题4

求矩阵C=\begin{bmatrix}a_1&a_2\\ a_3&a_4 \end{bmatrix}的逆矩阵。

解:

MATLAB代码如下:

clc;clear;
syms a1 a2 a3 a4;
C=[a1 a2;a3 a4];
C1=inv(C)

 运行结果:

C1 =
[  a4/(a1*a4 - a2*a3), -a2/(a1*a4 - a2*a3)]
[ -a3/(a1*a4 - a2*a3),  a1/(a1*a4 - a2*a3)]

三. 相似变换与正交矩阵

令A为一方阵,B为非奇异矩阵,可以将X矩阵相似变换为A,如下等式:

X=B^{-1}AB

经过相似变换后,X矩阵的秩、迹、行列式和特征值是保持不变的,这些值与A矩阵式完全一致。

利用MATLAB代码,可以求矩阵A的正交矩阵,如下:

Q=orth(A)

例题5

(1)求矩阵A的正交矩阵,并分析其误差

(2)求矩阵A的相似矩阵,并验证它们的秩、迹、行列式和特征值保持一致

A=\begin{bmatrix}5&9&8&3\\0&3&2&4\\2&3&5&9\\3&4&5&8 \end{bmatrix}

解:

(1)

MATLAB代码如下:

clc;clear;
A=[5 9 8 3;0 3 2 4;2 3 5 9;3 4 5 8];
Q=orth(A) %计算正交矩阵

%计算两个范数误差
E1=norm(Q'*Q-eye(4))
E2=norm(Q*Q'-eye(4))

运行结果:


Q =

  -0.619671340140301   0.773813880904394  -0.026187274644937  -0.128583570393247
  -0.254847576927508  -0.155059655254056   0.949030283052491   0.101738575260225
  -0.519781065663075  -0.529820044088602  -0.156282788746931  -0.651685548866623
  -0.529988477724807  -0.310578978545115  -0.272454470393609   0.740554841404303


E1 =

     6.864210016106769e-16


E2 =

     5.954287625931994e-16

(2)

MATLAB代码如下:

clc;clear;
A=[5 9 8 3;0 3 2 4;2 3 5 9;3 4 5 8];
Q=orth(A); %计算正交矩阵

C=Q'*A*Q %计算相似矩阵

%比较行列式
det_A=det(A)
det_C=det(C)

%比较迹
trace_A=trace(A)
trace_C=trace(C)

%比较秩
rank_A=rank(A)
rank_C=rank(C)

%比较特征值
eig_A=eig(A)
eig_C=eig(C)

运行结果:

C =

  17.925057378000762   6.462719720294041  -4.471443805828351  -2.035430394056599
  -0.028176367934769   1.719350371804496   4.681584194604236  -5.073533409228641
   0.679969849088359  -0.938582090234548   1.067433333071010   0.663121379729752
  -0.054869356773865   0.365821867858506   0.177602682111582   0.288158917123740


det_A =1.200000000000000e+02
det_C = 1.200000000000000e+02


trace_A =21
trace_C =21.000000000000007


rank_A =4
rank_C = 4


eig_A =

 17.820526571492692 + 0.000000000000000i
  1.190811102512153 + 2.649886414907482i
  1.190811102512153 - 2.649886414907482i
  0.797851223483017 + 0.000000000000000i
eig_C =

 17.820526571492696 + 0.000000000000000i
  1.190811102512152 + 2.649886414907483i
  1.190811102512152 - 2.649886414907483i
  0.797851223483016 + 0.000000000000000i

例题6

计算矩阵A的正交基矩阵,并分析其结果和误差。

A=\begin{bmatrix}16&2&3&13\\5&11&10&8\\ 9&7&6&12\\ 4&14&15&1 \end{bmatrix}

解:

MATLAB代码如下:

clc;clear;
A=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];
Q=orth(A)
E1=norm(Q'*Q-eye(3))

运行结果:

Q =

  -0.500000000000000   0.670820393249937   0.500000000000000
  -0.500000000000000  -0.223606797749979  -0.500000000000000
  -0.500000000000000   0.223606797749979  -0.500000000000000
  -0.500000000000000  -0.670820393249937   0.500000000000000


E1 =

     5.333708524809506e-16

分析:原矩阵A是奇异矩阵,所以得到的正交矩阵Q为长方形矩阵

使用MATLAB求逆矩阵 在MATLAB中,可以使用内置的函数来计算矩阵的逆。本文将向您展示如何使用MATLAB来求解矩阵的逆,并提供相应的源代码。在MATLAB中使用inv函数可以方便地求解矩阵的逆。需要注意的是,逆矩阵只在方阵(行数等于列数)存在且可逆时才有意义。首先,我们需要创建一个矩阵。首先,我们需要创建一个矩阵,然后使用MATLAB的逆函数计算它的逆矩阵。一旦我们有了矩阵A,我们可以使用MATLAB的inv函数来计算其逆矩阵。这样,我们就成功地使用MATLAB求解了矩阵的逆。其中,A是要求逆的矩阵,B是计算得到的逆矩阵。 阅读详情

相关推荐

Matlab在线性代数中的应用(四):相似矩阵及二次型

有时我们需要精确的特征值和特征向量,就须利用 Matlab 的符号运算功能。 在 Matlab 中创建符号矩阵和创建数值矩阵的形式很相似,只不过要用到符号定义函数sym。 下面介绍使用此函数创建符号矩阵的几种形式。 1、使用 sym 函数直接创建符号矩阵 此方法和直接创建数值矩阵的方法几乎完全相同。 矩阵元素可以是符号表达式,各 符号表达式的长度可以不同,矩阵元素之间可用空格或逗号分隔。 例如: x=sym('[a+sin(d),b;1/c,d]'); y......

wenyusuran的专栏 1811

MATLAB中求矩阵的逆矩阵方法(2种)

方法一:使用inv()函数求矩阵的逆 第一步:打开matlab之后,在命令行窗口中输入a=[1 2 3;4 5 6; 7 8 9],新建一个a方矩阵,如下图所示: 第二步:在命令行窗口中输入inv(a),按回车键,可以看到得到了矩阵的逆,如下图所示: 注意:a矩阵可逆的条件是非奇异 方法二:使用a^-1格式求矩阵的逆 第一步:在命令行窗口中输入a^-1,按回车键,可以得到矩阵的逆,如下图所示: 其实,还可以给-1加括号“()”,a^(-1),如下图: 注:a必须是方针,即行数和列数相等。 ...

weixin_40857506的博客 13万+

python 对角化 特征值 特征向量

python 对角化 特征值 特征向量

jacke121的专栏 8314

Matlab求矩阵的逆(三种方法)

Matlab求矩阵的逆(三种方法)

m0_63823993的博客 8万+

MATLAB在线性代数教学中的综合应用

本文还有配套的精品资源,点击获取 简介:MATLAB作为一款强大的数学计算软件,在线性代数教学中发挥着至关重要的作用。它提供了丰富的线性代数函数库,支持求解线性方程组、分析特征值和特征向量。通过MATLAB的图形化界面和绘图功能,学生可以直观地理解线性代数概念,激发学习兴趣。此外,MATLAB还支持矩阵函数和矩阵微积分,为研究矩阵性质和解决实际问题提供了便利。本课程设计项目...

weixin_30674431的博客 1431

同济线性代数如何成为工科生的工程调试手册

线性代数是工科系统建模与数值计算的底层基础,其核心在于将抽象向量空间、线性映射和二次型等概念转化为可执行、可验证、可部署的确定性操作。理解矩阵秩、特征值、正定性等概念,关键在于掌握其数值实现原理与误差传播机制——例如行列式计算暴露浮点舍入链,顺序主子式法提供正定性鲁棒判定,高斯消元揭示缓存与稳定性关联。这些能力直接支撑状态空间建模、LQR控制器设计、传感器融合及嵌入式矩阵求解等典型工程场景。同济七版的价值,正在于它以严格符号体系和强工程耦合例题,构建了从数学定义到C代码落地的完整闭环。

weixin_33910385的博客 411

用matlab证明向量组等价,线性代数常见面试题

特征值、特征根、秩、计算行列式、线性相关性、矩阵的相似、你可以想到有几种方法证明一个矩阵满秩、奇异值分解、线性相关与线性无关、什么叫矩阵的迹、正定是什么意思、什么是线性方程组有解/无解/有唯一解的条件、正交矩阵、MATLAB解线性方程组的原理、矩阵的微分、矩阵的幂运算、矩阵的导数一. 行列式,秩,迹 ,正定矩阵1、行列式将矩阵映射为一个标量,矩阵每列代表一个边(平面),行列式表示多维空间各平面围成...

weixin_30967451的博客 1756

HighTec安装(官网免费)编译 嘎嘎详细~

安装软件最好有自己的一套安装规则,工程软件除了安装主体外还会有很多其他的东西,比如license或者还会有一些驱动,如果所有都随意安装会导致你需要卸载,或者更新软件时,有的需要将原来软件卸载干净,如果没有清晰的安装路径那真是灾难啊~请确保此目录中只有个人许可证。这样基本的配置就ok了,下面打开hightec软件检验下license是否识别到了,会让你选个工作区,建议自己建一个,要不你以后就找不到了,,,如下图拉到下面,按照要求填写信息,随便写就行,注意主要的MAC地址要填本机的物理地址,然后点击2即可。

weixin_60793044的博客 1万+

线性代数及matlab实现,线性代数及其MATLAB应用

线性代数及其MATLAB应用作者:谢彦红 主编出版时间:2014年版内容简介本书按照普通高等学校教学指导委员会制订的本科数学基础课程教学基本要求,并结合作者多年从事教学实践的经验编写而成。全书共分六章,内容包括行列式、矩阵及初等变换法、求解线性方程组理论与方法、向量的相关性理论、矩阵的特征值问题及二次型化标准形方法等。书中每章最后一节介绍了利用MATLAB软件解决相应线性代数问题的内容,为逐步培养...

weixin_31198993的博客 1135

Curve+ 5.0.2:新一代色彩校准工具如何革新印刷行业标准

Curve+ 5.0.2作为新一代色彩校准工具,通过G7+校准算法和SCTV技术革新了印刷行业的色彩管理标准。该工具显著提升色彩精准度,减少打样时间和材料浪费,支持专色处理,实现跨材质色彩一致性,为印刷企业带来效率与质量的全面提升。

weixin_29228781的博客 529

【tips】在PyCharm中安装opencv图文版详细教程

pip如下图所示,左边的蓝色图标就是终端。点开终端后,键入命令,按下回车后就开始下载了。如果你更喜欢图形化操作,可以在 PyCharm 中直接安装:。点击右上角的 +按钮(添加包)。搜索或,点击。

zhousanguhe的博客 6744

线性变换与基变换:同一数学本质的两种观察视角

线性变换是向量空间中保持加法与数乘结构的映射,其本质是几何关系的不变性;而基变换则是同一变换在不同坐标系下的数值呈现,由相似矩阵P⁻¹AP刻画。二者共同构成矩阵表示的完整语义:矩阵本身不定义变换,只定义‘在某组基下如何观测该变换’。这种统一视角具有关键工程价值——在机器人运动学、3D图形渲染、PCA降维和量子力学表象变换等场景中,脱离基谈变换会导致模型失准、控制振荡或物理意义丢失。真正鲁棒的实现,必须同步建模变换的内在规律与观测基的动态变化。

weixin_30458043的博客 381

(project generation have a problem)STM32CubeMX生成工程一直报错项目生成有问题[玄学三步解]

解决办法 第一步,检查自己是不是真的配置的不对,JAVA安装没,pack路径设置的对不对,这里有一位前辈的博文写的非常好,附加链接https://blog.youkuaiyun.com/ybhuangfugui/article/details/52225736#commentBox 第二步,如果按照前辈的博文设置的都一模一样,还是不对,想我下图这样。 那你来对地方了 方法很简单,你把你生成工程文件的路径彻底的...

展桑博客-BenjieBlog 2925

工程线性代数(matlab版),工程线性代数(MATLAB版)

第1章 线性方程组与矩阵1.1 概述1.2 二元和三元线性方程组解的几何意义1.3 高斯消元法与阶梯形方程组1.4 矩阵及矩阵的初等变换1.4.1 矩阵的概念及定第1章 线性方程组与矩阵 1.1 概述 1.2 二元和三元线性方程组解的几何意义 1.3 高斯消元法与阶梯形方程组 1.4 矩阵及矩阵的初等变换 1.4.1 矩阵的概念及定义 1.4.2 几种特...

weixin_34081553的博客 364

数据架构师必看:大数据时代的架构演进与实践

数据架构是企业数据资产的“骨架”——它决定了数据能多快被处理、多准被分析、多安全被存储。本文将聚焦从传统架构到大数据架构的关键转折点,覆盖技术选型、典型场景、落地挑战三大核心命题,帮助读者建立“演进思维”而非“固定思维”。本文将按“历史演进→核心概念→技术原理→实战案例→趋势展望”的逻辑展开,用“超市仓库升级”贯穿始终,让抽象的技术概念具象化。传统数据仓库:精但小,适合结构化、批量分析。大数据架构:大但乱,适合全类型、海量数据存储。流批一体:解决实时+批量的效率问题。湖仓一体。

AI Agent Harness Engineering 914

Android Binder——数据传递载体(二十一)

同一进程间的对象传递都是通过引用来做的,因而本质上就是传递了一个内存地址。而跨进程采用了虚拟内存机制,两个进程都有自己独立的内存地址空间,所以跨进程传递的地址值是无效的。进程间的数据传递是 Binder 机制中的重要一环,Android 系统中担负这一重任的就是 Parcel。Parcel 是一种数据的载体,用于承载希望通过 IBinder 发送的相关信息(包括数据和对象引用)。正是基于 Parcel 这种跨进程传输数据的能力,进程间的 IPC 通信才能更加平滑可靠。

小旭的专栏 576

qr分解求特征值和特征向量_MIT 18.065—机器学习中的矩阵方法12 计算特征值和奇异值...

数据分析、信号处理和机器学习中的矩阵方法第12讲 计算特征值和奇异值新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com这并不是数值线性代数课程,但我们需要探讨如何计算特征值和奇异值。你可以调用eig或svd或Python以及Julia中的等效程序,但仍需要了解相关知识。特...

weixin_42304279的博客 2547

GEE:连续变化检测 CCDC 提取断点信息(干扰时间、干扰幅度、干扰次数)

本文将介绍在 Google Earth Engine (GEE) 平台上连续变化检测与分类(Continuous Change Detection and Classification, CCDC)提取扰动时间、干扰幅度、干扰次数信息,并下载到本地的代码。

养乐多的博客 1945

gram矩阵_MIT 18.065—机器学习中的矩阵方法12 计算特征值和奇异值

数据分析、信号处理和机器学习中的矩阵方法第12讲 计算特征值和奇异值新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com这并不是数值线性代数课程,但我们需要探讨如何计算特征值和奇异值。你可以调用eig或svd或Python以及Julia中的等效程序,但仍需要了解相关知识。特...

weixin_39967120的博客 539

基于MUSIC算法的DOA估计Matlab仿真

特别需要指出的是:通道与阵元并不是一一对应,通道是由空间的一个、几个或所有阵元合成的,当然空间某个特定的阵元可包含在不同的通道内。空间谱估计侧重于研究空间多传感器阵列所构成的处理系统对感兴趣的空间信号的多种参数进行准确估计的能力,其主要目的是估计信号的空域参数或信源位置,这也是雷达、通信、声纳等许多领域的重要任务之一。从系统框图中可以清晰的看出,估计空间相当于是对目标空间的一个重构过程,这个重构的精度由众多因素决定,如环境的复杂性、空间阵元的互耦、通道不一致、频带不一致等。

FPGA/MATLAB学习教程/源码/项目合作开发 1748

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

矩阵的特征值和特征向量_MIT 18.065—机器学习中的矩阵方法04 特征值和特征向量...

数据分析、信号处理和机器学习中的矩阵方法第04讲 特征值和特征向量新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com上一节是正交矩阵Q,本节是对称矩阵S。我从任何方阵A和其特征向量开始,随后将转向对称矩阵S以及它们的特殊之处。然后,更加特殊和重要的是正定对称矩阵。对于n ...

weixin_39539764的博客 670

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

matlab求逆矩阵(分数表示)

求逆矩阵后分数表示

qq_52184734的博客 1540

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

matlab中生成随机正交矩阵

正交矩阵:AA' = A'A = I 在matlab中生成一个随机正交矩阵的

FacingTheSunCN的专栏 1万+

Matlab产生正交矩阵

产生一个K*K的正交矩阵A,即满足A^H * A = I K=3; B=rand(K,K)+i*rand(K,K); A=orth(B); Matlab检验: A'*A 查看误差是否合理 E = norm(eye(K)-A'*A,'fro')

jianti9962的博客 7270

matlab求一个矩阵的逆矩阵的命令,如何用MATLAB求逆矩阵

如何用MATLAB求逆矩阵以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何用MATLAB求逆矩阵如果英文好呢,自己看目录不好还是先看中文的教材,对matlab的框架和功能有了一定的了解后,自己也就看的懂帮助里面的内容了,以后不懂再自己查帮助求逆矩阵一般有2种方法:1、伴随矩阵法。A的逆矩阵=A的伴随矩阵/A的行列式。...

weixin_31179927的博客 1万+

MATLAB 求逆矩阵并用分数表示

A=[4 2 1 5; 8 7 2 10; 4 8 3 6; 12 6 11 20]; inv(A) 结果如下图为小数显示 17.0833 -8.9167 4.3750 -1.1250 -0.6667 0.3333 -0.0000 0.0000 9.0000 -5.0000 2.5000 -0.5000 -15.0000 8.0000 -4.0000 1.0000 使用format rat A=[4 2 1

qq_43563660的博客 7160
上一篇: 基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式
下一篇: 基于MATLAB的求解线性方程组(附完整代码和例题)
唠嗑!
唠嗑! 优质创作者: 信息安全技术领域 优质创作者: 信息安全技术领域
博客等级 码龄5年 3万+粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值