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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
行列式:
5 ?# }' y% s) C6 x, W( l5 ] %Aij = (-1)^(i+j)*Mij3 d% `! ^0 J& G
%D = a11*A11 + a12*A12 + a13*A13 + ... + a1n*A1n+ [0 d8 `5 C: v6 I6 d$ o
%H = [1 2 3;7 9 7;5 6 1;];det(H) = 14) b( c8 I! Q, l  X/ L, H
function H_Det =  Matrix_Det(H,N)  %输入矩阵 阶数  
( y7 M! y- s! I+ K3 N$ |H_Det = 0;
; |7 Q( V9 T" i( Tif N==1( Q# l% ^. n0 _( J0 Y0 H
   H_Det = H(1,1); - D; \& M9 V$ N" ?: f4 R4 B
   return;  v2 H% _; C2 H! s5 h1 O6 u
end
3 a5 ^: P2 [5 M* n2 z5 ~1 n/ ytemp = zeros(N-1,N-1);8 X4 I2 X3 ]8 n# t; @6 z
for i=1:N
. P% q) J1 h3 u% `    for j=2:N  %第二行开始
5 E3 T& O4 S0 Y7 n; t$ ?/ h. c9 }        for k=1:N-1- s8 ^$ ^, a; s5 m0 }
            if k>=i3 M0 i4 \1 A* H. _2 \
                cln = k+1;
" k" S, V: Z; ?2 c: K            else
( Y. Z6 I, z. z6 B+ D                cln = k;- M' N: Q, O- k( H9 }- @8 e
            end  h  g% }! ~# i9 t
            temp(j-1,k) = H(j,cln);8 w4 ?$ p. k* `  ^- R5 b& ?
        end
! H9 j% S# ^; l+ C" q, n7 W# Z    end
5 d$ F( G' }. r* A" v) G    t = Matrix_Det(temp,N-1);  %递归
% {& P" |" P$ @) g  a* A$ ^    if rem(1+i,2)==0   %(-1)^(1+i)$ F0 A' F& l; g. h$ x6 g
       H_Det = H_Det+H(1,i)*t;
( Y- o0 d. r1 g& y& g; e    else( C# V1 ~% j1 A5 d0 E; c+ j# T, U. F
       H_Det = H_Det-H(1,i)*t;! {: O1 L1 P5 ], p- v& D9 M- c
    end
4 C5 x3 z. G1 b& X  W1 `- Z9 qend" @- F+ H: X0 W- _' h+ A
; }8 B1 e" ^6 a9 ?' V0 e) g
end( L* w, \4 d  v# X5 ~! _

6 |8 I: S5 a2 l* J4 D伴随阵:$ A7 u( J; q0 H
%伴随阵A* = |Aij|(nxn), G. S) G8 a( w
%Aij = (-1)^(i+j)*Mij2 M: {; j7 `4 I  T2 S6 m
%H = [1 2 3;7 9 7;5 6 1;];det(H)*inv(H) = [-33 16 -13;28 -14 14;-3 4 -5];) T. P4 o. p# i4 B4 D+ T: h- B9 d
function H_Adjoint = Matrix_Adjoint(H,N): z3 i( o) B* N) k! Q9 z2 p
H_Adjoint = zeros(N,N);7 {; t$ q4 N/ g4 ^" X
if N==1% @4 P* O  ^' @% @
%    H_Adjoint = [H(2,2) H(2,1);H(1,2) H(1,1)]; 0 e# p; D2 }- S# A3 d$ _
   H_Adjoint = 1;# A7 A5 n8 r9 _) a7 q% f
   return;& M* _4 m4 h* e; {! Y! `
end# Q" Q4 _( o  p9 m& W
temp = zeros(N-1,N-1);
$ O7 M# d1 ^4 I2 L+ ~. `for i=1:N   %逐行扫描( n5 _0 u, M6 k
    for j=1:N  %逐列扫描; m3 d7 d" P: D( A/ q; c6 M
        for k=1:N-1  %行组合) d3 P$ |8 a" g* |
            if k>=j
( o0 w: H+ s% W" P8 F               row = k+1;1 l- x3 y  R+ A: Y) ?: R; y
            else4 X4 R: ^# B. W, C1 g
               row = k;
7 n# a7 H' B6 F0 Q: I0 q8 u            end
" R) _  W( v$ ~! K1 G0 f# E            for t=1:N-1  %列组合            ' E0 P' q, x2 z
                if t>=i
& W) d* J: t2 d9 R& }                   cln = t+1;/ _+ E! R' e# f7 r1 J
                else# W; ]2 N' ]* p' m
                   cln = t;: ], J+ W1 B- S! f, n
                end% ^2 `6 `5 D/ ?" C- e
                temp(k,t) = H(row,cln);
5 `7 r$ Q$ Y  ]            end
( n. b& E* K/ c        end
9 `/ O  e2 L* K( J% W5 \  k        if rem(i+j,2)==06 X" @; H' m7 p0 }* ^
            H_Adjoint(i,j) = Matrix_Det(temp,N-1);   %求代数余子式7 r7 F+ R; X, B+ ^; \
        else4 _- l& M% l* |$ P& {
            H_Adjoint(i,j) = -Matrix_Det(temp,N-1);
& O" p9 }3 t5 L& q, E/ ]2 T0 ]. O        end
+ ?) Q: T. i' S4 `4 g6 ?    end* {* e6 @6 _- {) B# [% U6 w! h
end& I* w4 h9 K- U! f: Z: r$ N% Y
end
7 \5 M# I$ X* p* ~) I2 O. a& C% k; m' S
逆:
- ^( e5 q' h5 B2 }# N. C4 \%A^(-1) = 1/|A|*(A*)% B2 C) V' a; Q  s# C. f3 f
%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];- o- b6 \& c0 @6 J: p
function H_Inv = Matrix_Inverse(H,N)6 l: h; j! i4 N3 J
H_Det = Matrix_Det(H,N);7 c, M9 U/ }- A' R- v+ v- E9 ^* \
H_Adjoint = Matrix_Adjoint(H,N);
" ], [: K8 s/ G8 J8 n9 s5 }  H6 p0 @H_Inv = H_Adjoint/H_Det;7 K  y5 {1 Q( V2 r- X. n% C
end
& g6 Z9 q+ f6 m0 @, u: s, y/ F. O9 B2 O" M, b
% T" `7 B2 M# W, F  |% l: Q& E
& e- g1 l" Y( J$ [; M

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-30 13:59 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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