matlab怎么让矩阵的行与行互换_matlab矩阵及其运算(三)

本文介绍了matlab中矩阵运算的基础知识,特别是行列式的概念和计算方法,包括行列式的转置性质、行列式值的计算与矩阵互换的影响,并探讨了如何利用代数余子式进行降阶计算。此外,提到了行列式在解方程组中的应用,并鼓励读者尝试编程实现行列式值的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

有流量的可以直接戳视频

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

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

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

bf716bf42dba7553165113020cc2acc4.png

6569884b30e1c8587384ccb6daf15dba.png

0e199b5b8634d680e9ffcf4f18750d3b.png

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

b6d44669b6072be4b89e1d6feb3c5355.png

b1ca43ff2c4198ce8c57b770ef7bea47.png

7f332e4dc537d8d56447e9eed7e86ee9.png

27d87e6d2c8d4343d251c75d48e17e53.png

57084a7ba34db2e800e52c456e2dea57.png

e87faa982b9bc0cc888bf5e202975a27.png

即为三阶行列式

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

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

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

e86862ba8f7f052ece47d8e3a91d07fe.png

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

de9a7ad6951c65d331a8e8bd2509fb5a.png

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

9409fb386b2ccb229c67a8b19b436290.png

2879a32d0f0784b166c69a20873185e1.png

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

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

记:

75f935f4e886d536da61a34c6495409d.png

e87faa982b9bc0cc888bf5e202975a27.png

的转置。

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

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

8ad8bf39f35db1ec7c7cce1d04e8ac81.png

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

d3f5a236736cf226e90c4aa4707a35a7.png

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

661b86b9badc089b8e1d5d1dd6885c0e.png

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

3ea09d9df3f67b7d6498a144b9843078.png

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

b6d44669b6072be4b89e1d6feb3c5355.png

0c120f149360bfb0495b36b8a9d59c94.pnga1cbd4fb01ae08af8bcfb19e8019c988.png24511561b54c42d0092e525568185139.png

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

1b2a4235352eb51c3ee3fbf73cd74332.png

1830a8003817df15d77241901cdcfc14.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;

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

神经网络连载(四)

神经网络连载(三)

科研小助手推荐 第四期

科研小助手推荐第二期

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

56966b67a546254560cf10851ae9b496.png

本文作者:过冷水

fbcfa2e2514384b47921235eb0170f83.png6fcdd5748017a0da8d2edfe06eefe749.png4e3d7d9b75f725afa12674a96bfd843e.png

7438683ac0791e7766540147a06e4c76.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值