matlab 判断两个矩阵有元素相等_matlab矩阵及其运算(三)

本文介绍了matlab中矩阵运算的基础知识,特别是如何判断两个矩阵是否有相等元素。通过讲解行列式的概念、性质和计算方法,为后续的矩阵运算打下基础。文中提到,直接计算高阶行列式较为复杂,但在matlab中可以简便实现。同时,鼓励读者尝试编程实现行列式的降阶计算,并提供了相关MATLAB代码示例。
摘要由CSDN通过智能技术生成

大家好,感谢大家对matlab爱好者公众号的厚爱!如果公众号文章对您有帮助,别忘了分享和点赞哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言,我们会第一时间改善改进!

有流量的可以直接戳视频

二狗在用matlab学习编程过程中,发现matlab中有大量矩阵运算,矩阵的知识了解不到位,在学习算法的过程中无法找到合适的解决问题的方法或者出现编程错误。好比英语发音规则都不懂,如何说一口流利的英语?地基不牢,地动山摇。这不前两天二狗做BP算法的时候涉及到矩阵求导,这可难到二狗了,非方阵矩阵的逆矩阵怎么求?方阵的导怎么写等,涉及到一系列二狗之前没有考虑过的问题,经过一番挣扎决定还是一步一个脚印和大家学习基础知识吧。

如果想matlab应用的得心应手,矩阵的基础知识是必不可少的,二狗将会连续更新关于矩阵的基本运算的知识,如果大家觉得有用请持续关注“MATLAB爱好者公众号”。

先从最基本的行列式讲起。行列式是一种特定的算式,它是我们今后学习矩阵的一个基本工具。

81aedf6f9a9cb0b72d9348482148dfc6.png

67cb922bbea396849f260ce96161bf36.png

bd9924e17efb7dbd1413d76449f80424.png

该表示方式即为二阶行列式

2a0045267bb96d7af2e0982ef8804f34.png

5539f33e8b40b153ae596ce33aadfc6e.png

b8ebcc3db199d3d924f633860225530b.png

6180a7a1f49deab67eabaf6af4b8546e.png

8b6a7f5eb5d22c0069e082e63ec23d7f.png

c40b6e3fe7cf6fdb466c10def270d22e.png

即为三阶行列式

由两个案例可知二项式和三项式是每行和每列不同数的乘积,再冠以正负号得到的一个代数和,该法则对所有的多项式都成立。

虽然多项式的运算法则说的很简单,但比如给你个10x10的行列式你就很难算出行列式的值。怎么办?可以用降阶的办法将10X10化为2X2的不就简单了3e6ebaabc0f1b2074438f4de9fb9860a.png?实际10X10化2X2也很麻烦,好比给二狗一个很复杂的加减乘除运算,二狗也很容易出错,但降阶确实是解题的思路。在此引入余子式的办法来降阶。

在行列式中划去aij所在的第i行元素和第j列元素,剩下元素按原位置顺序组成的(n-1)阶行列式就叫做aij的余子式记做Mij,称(-1)i+jMij为aij的代数余子式记做Aij。

dcce7ad80e168c60d0f1789ebcd4c9a3.png

利用代数余子式即可将n阶行列式写成(n-1)的运算比如三阶行列式即可写成:

d522c153605c83449f5636ede4619fab.png

对三阶行列式的另外六项做组合还可以写成:

dd3476e6b09522ea05e7e58b5599fae6.png

bac03df2ec102093085f1ba362f0f750.png

由行列式的定义可知,当行列式的阶数n比较大时,直接用定义计算行列式比较复杂,当然用matlab还是很简单的。但二狗还是要给大家讲行列式的一些性质,用以简化行列式的运算以及以后矩阵的运算也会用到相关知识。

(1)将行列式的各行与各列与同序号的列互换,所得到的行列式称为行列式的转置。

记:

f1cdf16a2b6ceed6269579fbc6b98c15.png

c40b6e3fe7cf6fdb466c10def270d22e.png

的转置。

  由计算很容易可知D与DT相等。涉及到的行列式性质二狗嫌证明太繁琐,大家记住二狗说的是对的就行了,二狗会用matlab进行验证行列式的各种性质的,实践是检验性质的唯一标准。

(2)对换列式的两行或两列,行列式变号。

539da49d20a8cf58eb7578d355e68c7d.png

(3)行列式中i行和j行对应的元素相等,行列式的值为零。

b8d32fa9351f0ec5e37a5a188fd37b0e.png

(4)行列式的某一行中的所有元素都乘以同一个数K,等于K乘以这个行列式。

9fb653ef13984e1ff8bfda6c29ed49ed.png

(5)如果行列式中某一行(列)的每一个元素的是两个元素的和,行列式等于把这两个元素拆分后的行列式和。

673739100ab15db0d64b07f220d475e4.png

本期行列式的内容就算讲完了,行列式的应用主要是求解方程组,

2a0045267bb96d7af2e0982ef8804f34.png

cc152168344d0ab1a0d8c459a3257a36.pngb17c5fdfbd74feffe0e185ffa99bd087.png269373e34da0cb5e507210a50a69f3d2.png

Ps:行列式必须是正阶的即ai,j(i=j)比如

6de4d4e21f9816829631cfb40f6d81b6.png

95acaf629c04a056cbcbc10a896b091a.png

就不存在。算不出具体值

编程讨论:函数det()可直接求得行列式的具体值。那么如何根据代数余子式降阶法自己设计程序来计算行列式的值。二狗期待各位对编程感兴趣的读者尝试一下,二狗也会在下期给出自编的求行列式值的程序。

行列式相关MATLAB代码

clear allsyms x1 x2 x3 y1 y2 y3 format banka=round(8*rand(3));%round:随机生成的矩阵为一3*3维的方阵,矩阵的元素为0-8之间的整数x=[x1;x2;x3];y=a*x;D=det(a);%求行列式a的值%aa=round(8*rand(3,4));det(aa)%% 求行列式的代数余子式[n,m]=size(a);for i=1:n    ni=1:n;    ni(i)=[];    for j=1:m        mj=1:m;        mj(j)=[];        A(i,j)=(-1)^(i+j)*det(a(ni,mj));    endenda(1,1)*A(1,1)+a(2,1)*A(2,1)+a(3,1)*A(3,1)-det(a)==0;a(2,1)*A(2,1)+a(2,2)*A(2,2)+a(2,3)*A(2,3)-det(a)==0;%行列式和转置行列式值相等det(a)==det(a')%对换列式的两行(列),行列式变号。b=a;c=a; c(:,1)=c(:,2);c(:,2)=a(:,1);det(c)/det(b)==-1;%行列式的某一行(列)中的所有元素都乘以同一个数K,等于K乘以这个行列式e=a;e(:,1)=3*a(:,1);det(e)/det(a);%如果行列式中某一行(列)的每一个元素的是两个元素的和,行列式等于把这两个元素拆分后的行列式和。f=[1,x1+y1,2;3,x2+y2,4;5,x2+y2,6];g=[1,x1,2;3,x2,4;5,x2,6];h=[1,y1,2;3,y2,4;5,y2,6];det(f)-det(g)-det(h)==0;

看完还想看 (点击下方文字直接访问)

神经网络连载(四)

神经网络连载(三)

科研小助手推荐 第四期

科研小助手推荐第二期

模拟退火算法优化指派问题

806d3f43078af9b25c44e373c8ec90d2.png

本文作者:过冷水

f7e65aa7b511dbfdbbccfc544b891733.png 023e30f1af1b6cf9101b25aef504cb0a.png 364ba02ce980caab4a98ebaa0798eb51.png

da1b7129efe703754e378084f70367d5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值