找回密码
 注册
关于网站域名变更的通知
查看: 481|回复: 1
打印 上一主题 下一主题

分享一份矩阵行列式和逆的MATLAB程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-12-13 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
行列式:
/ g# w7 a$ V8 q  d$ `2 g0 ~ %Aij = (-1)^(i+j)*Mij
5 [: b7 i4 _7 r) @: g  v%D = a11*A11 + a12*A12 + a13*A13 + ... + a1n*A1n5 c/ i3 X/ H4 R" X$ p1 H; }- y
%H = [1 2 3;7 9 7;5 6 1;];det(H) = 14+ g9 I$ f. k$ f, ^
function H_Det =  Matrix_Det(H,N)  %输入矩阵 阶数  * ~- A( t  X' n  D
H_Det = 0;
. G0 Q+ a  {6 m- J& ~3 J* gif N==16 X6 _  H, }. X3 m  I
   H_Det = H(1,1);
  U' T% V) y$ k  g5 P) A% F; a   return;
/ Q- ]+ C! c9 s! y1 n) Lend
6 S5 x: \4 d) ^! Xtemp = zeros(N-1,N-1);& B+ \  u8 T- ^2 \
for i=1:N
" ]5 m9 J  t& d    for j=2:N  %第二行开始
! X9 I5 q  p7 P; D  l: H! ?# B        for k=1:N-1
! m" H) E) v  f1 i            if k>=i7 G  ?0 f  n  k, J
                cln = k+1;; S/ X1 s3 q" A0 D0 x( k
            else# B  N% a8 ~. k+ q) ?; v
                cln = k;
1 P4 Z$ @  Z$ Q$ p* e7 g            end6 i: Q, a  {7 K
            temp(j-1,k) = H(j,cln);1 e0 }7 `. Z6 D& n% z) r5 y
        end4 U0 S  m) W: o6 H' q
    end# w6 [0 W3 ?2 t+ ]  Z" B
    t = Matrix_Det(temp,N-1);  %递归4 d9 F" v+ l& z# k
    if rem(1+i,2)==0   %(-1)^(1+i)
. T$ r: Q& K1 w. n& r# h) r       H_Det = H_Det+H(1,i)*t;7 K" y9 W+ \# W/ D
    else' s% N2 n* ?/ H2 p* L& b1 l4 ^- J
       H_Det = H_Det-H(1,i)*t;
" e' _& C' b4 Z1 W8 {, K    end
' u: t3 ?  U* W( |end9 M; \7 Q& |( w/ n( W  ~: i) P5 {
1 ^9 Z& X6 e6 `1 B6 L) i
end
- c: ^( e, G2 f, [  C( `  Q1 M# b0 Q  f% k& j
伴随阵:1 N: ~. Z# f6 J/ C' o
%伴随阵A* = |Aij|(nxn)
+ w% l5 d" c0 d; T% v%Aij = (-1)^(i+j)*Mij1 A' p( J3 s- W. c7 q
%H = [1 2 3;7 9 7;5 6 1;];det(H)*inv(H) = [-33 16 -13;28 -14 14;-3 4 -5];5 [5 m6 b0 Q8 K; ?8 B8 L: Y" Q
function H_Adjoint = Matrix_Adjoint(H,N)
' R% u& U, @3 B9 R3 _/ nH_Adjoint = zeros(N,N);
6 a4 {. L$ H. ~if N==1" T/ w, c/ y/ P2 X+ ~
%    H_Adjoint = [H(2,2) H(2,1);H(1,2) H(1,1)];
- @% q+ s( d2 P/ d   H_Adjoint = 1;
) ^3 @$ J/ @: K, k7 J/ t   return;
/ |2 |; O5 f3 ?9 o0 I& xend
1 L* b2 j4 J; s& ^temp = zeros(N-1,N-1);
/ N6 a' q/ D2 w1 Q( L1 }' |, Kfor i=1:N   %逐行扫描
. c8 v! R( Y- X4 \" t    for j=1:N  %逐列扫描
: c$ m1 |) A9 e8 [8 a        for k=1:N-1  %行组合- R3 z4 Y/ U/ b4 K  P8 \3 B. R
            if k>=j1 h  R' w$ O) d# n( m
               row = k+1;
; A& E" J( A. ?1 e( ^            else
* K5 b. L. R  m) d0 v               row = k;
; a/ `3 t' Z4 n" V0 h            end! c3 e$ _- F/ o/ `; N$ Q6 }( {& p
            for t=1:N-1  %列组合            ! J7 N4 U, J" h# t& M$ n! ?, F
                if t>=i
2 f- z/ o9 i2 j' V& \                   cln = t+1;  |% c4 R( t( I# j
                else" S/ J& ~3 ^. g+ ~
                   cln = t;& P+ h9 h8 H) F; f
                end+ M3 z$ p7 x7 L4 h* G  @
                temp(k,t) = H(row,cln);
9 y. ^3 D% n2 Y% y& p- r            end; f9 _, [1 A3 v7 o
        end
9 o. E3 j% r6 A1 o, u, t        if rem(i+j,2)==05 O$ j; {' E. L5 D
            H_Adjoint(i,j) = Matrix_Det(temp,N-1);   %求代数余子式* }; r( i+ v; q# u5 {! t, h( g
        else
: C9 j% r& j- v7 K9 z# A6 y            H_Adjoint(i,j) = -Matrix_Det(temp,N-1);1 A3 l* [7 D* {# [' j
        end
- B2 e' Q; u$ A- U( l    end4 A. b2 ?4 V& O4 O/ i
end
  b( H/ x* t" {; Gend
: a3 l" K; g; x# E& M! h' q# z! K( i) b+ U$ Q9 @5 Q2 W0 M% R
逆:" u  {0 X( y/ ^7 J7 A4 c
%A^(-1) = 1/|A|*(A*)
) n% ?  Y7 M6 Y/ Q/ W%H = [1 2 3;7 9 7;5 6 1;];inv(H) = [-2.3571 1.1429 -0.9286;2.0000 -1.0000 1.0000;-0.2143 0.2857 -0.3571];
: z; ]: r5 o' {7 Y3 Kfunction H_Inv = Matrix_Inverse(H,N)  O1 }4 d/ V0 X8 U
H_Det = Matrix_Det(H,N);
* A8 [7 X$ R7 M' c4 ZH_Adjoint = Matrix_Adjoint(H,N);* y( K! K1 P! {# E' g6 o7 p
H_Inv = H_Adjoint/H_Det;
6 m4 O0 b) R$ E. V' ~) e6 Lend
0 a  e- O: O+ r& f, }1 u! ]2 S& u1 z, X2 M3 {- Q
, b* _9 e2 k9 n6 m0 O
, l& q3 r+ e2 N+ T

该用户从未签到

2#
发表于 2019-12-13 19:24 | 只看该作者
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 19:55 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表