9 F w8 \5 [) M for i=1:n-1 2 i0 D* \" S5 j8 K6 r % 确保主对角线元素不为0 " J, a+ [8 O9 m if(a(i:n,i)==0)5 y) [) e* M" v+ x
error('方程组没有唯一解'); & G. b w1 \/ k2 z end4 @4 S# U7 l3 k b; t5 ^+ R% o" y
% 选取主对角线元素不为0的行 - n2 C a2 k4 g6 H" M: d9 k0 S for p=i:n: f) ]3 S9 ~) F) p2 u9 z
if(a(p,i)~=0) , I/ U2 b# q$ @$ [7 Y p;8 P2 X0 K7 k0 T& v
break;0 g: m' j$ G6 V2 {' X+ S
end' O' f4 B- F6 |8 s& N! b
end 7 T# i/ ?& x- Z2 A, k+ p
% 如果选取的行不是当前行,则交换两行# C9 O8 O; f }% T& X- Q% a* N. R
if(p~=i) ' x! L) r- F6 l t=a(i,; % m) a2 J+ K9 k* V# c# l a(i,=a(p,;9 ] N( [: H& f) M: N9 c) y# R
a(p,=t;! W {& |4 H( A, I1 Y
end% y- `1 @) K/ \8 L
% 高斯消元) B; I% B$ u* R6 n( X! [: u
for j=i+1:n" T. y' B5 J5 s3 ?/ ^4 S
a(j,i)=a(j,i)/a(i,i); , P+ m( s9 P4 w* J4 i a(j,=a(j,-a(j,i)*a(i,; ( k- h3 d8 T- _. d% q- P end2 k% n& v) R9 s! j1 t
end1 T+ ?) A. _" a: e/ U/ g: D
% 检查方程组是否有唯一解+ \9 i$ M/ z* |3 U
if (a(n,n)==0)8 Z( z: L* M; U C
error('方程组没有唯一解');( h) V; {5 k$ e+ g
end, m0 k3 j+ G J* s y" P
4 x8 N. T: w" X) i/ I/ j. e3 T这个部分实现了高斯消元算法。它通过迭代将增广矩阵 a 转化为上三角形式。 7 Q, t v, q7 X) o) R, o1 J! ?$ M& ^ H' [3 t# d# L
3.回代过程: 0 F2 `5 ~' K( P) k4 I! Q. K/ X! Y J1 d! b$ `- |4 e3 R+ W % 回代 9 K L/ _4 b+ B% d$ W' [/ s( y( ? x(n)=b(n)/a(n,n);; w1 z' q% w* [' ]: o+ X! M) B" j7 D
for i=n-1:-1:1, c. B6 o0 c5 O/ y5 x
sum=0;6 W- d! w1 n+ N; }
for j=i+1:n- z0 B$ ? {; n/ z' {# l: }
sum=sum+a(i,j)*x(j);8 }$ n1 _# B: L# Y' \# {& Z9 A
end1 @ G' X6 ~/ [4 q1 l- u& `0 D6 a
x(i)=(b(i)-sum)/a(i,i); - A# c8 _; z8 w" o& O* ^3 P) [ end" _, U# E5 v" P% Q+ D
$ B n: M% \1 M' H8 J2 |这个部分实现了回代过程,得到方程组的解向量 x。 : g' u0 Q; R" x3 Y) k% P & i& |# Q" n) s( a4.打印结果:, Y2 [% G3 K; { L6 L0 m/ |& m
9 Y ^; d- H ]* O+ f" v
jie=x'$ @$ q2 ]1 s/ R$ E. _. u3 n
& w+ I1 j$ u6 R; c% |/ L! l% y
最后,打印求解得到的解向量。 G; c9 v9 H; L/ U+ t在实际应用中,可以使用 MATLAB 提供的 linsolve 函数来更稳妥地解线性方程组。( i7 P+ z. x# r+ { X
) t" ~! b4 r7 C7 f' [- ]& P
& F# |# t" ~8 t* @