MATLAB解线性方程组的直接方法

  • 格式:doc
  • 大小:322.50 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法.

3.1 方程组的逆矩阵解法及其MATLAB 程序

3.1.3 线性方程组有解的判定条件及其MATLAB 程序 判定线性方程组A n m ⨯b X =是否有解的MATLAB 程序

function [RA,RB,n]=jiepb(A,b)

B=[A b];n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0,

disp('请注意:因为RA~=RB ,所以此方程组无解.') return end

if RA==RB if RA==n

disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') else

disp('请注意:因为RA=RB

例3.1.4 判断下列线性方程组解的情况.如果有唯一解,则用表 3-2方法求解.

(1) ⎪⎪⎩⎪⎪⎨⎧=-+-=+-+=-++=+-+;

0742,

0634,

0723,

05324321432143214321x x x x x x x x x x x x x x x x (2) ⎪⎪⎩⎪⎪⎨

⎧=++-=+-+=-+-=+-+;0327,01613114,02332,075434321432143214321x x x x x x x x x x x x x x x x (3) ⎪⎩

⎪⎨⎧=+=+-=-+;8311,1023,22421321321x x x x x x x x (4) ⎪⎩⎪⎨⎧=--+=+-+=+-+.

12,2224,12w z y x w z y x w z y x

解 在MATLAB 工作窗口输入程序

>> A=[2 3 -1 5;3 1 2 -7;4 1 -3 6;1 -2 4 -7]; b=[ 0; 0; 0; 0]; [RA,RB,n]=jiepb(A,b)

运行后输出结果为

请注意:因为RA=RB=n ,所以此方程组有唯一解. RA = 4,RB =4,n =4 在MATLAB 工作窗口输入

>>X=A\b,

运行后输出结果为 X =(0 0 0 0)’.

(2) 在MATLAB 工作窗口输入程序

>> A=[3 4 -5 7;2 -3 3 -2;4 11 -13 16;7 -2 1 3];b=[ 0; 0; 0; 0];

[RA,RB,n]=jiepb(A,b)

运行后输出结果

请注意:因为RA=RB

(3) 在MATLAB 工作窗口输入程序

>> A=[4 2 -1;3 -1 2;11 3 0]; b=[2;10;8]; [RA,RB,n]=jiepb(A,B)

运行后输出结果

请注意:因为RA~=RB ,所以此方程组无解. RA =2,RB =3,n =3

(4)在MATLAB 工作窗口输入程序

>> A=[2 1 -1 1;4 2 -2 1;2 1 -1 -1]; b=[1; 2; 1]; [RA,RB,n]=jiepb(A,b)

运行后输出结果

请注意:因为RA=RB

3.2 三角形方程组的解法及其MATLAB 程序

3.2.2 解三角形方程组的MATLAB 程序 解上三角形线性方程组b AX =的MATLAB 程序

function [RA,RB,n,X]=shangsan(A,b)

B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0,

disp('请注意:因为RA~=RB ,所以此方程组无解.') return end

if RA==RB if RA==n

disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') X=zeros(n,1); X(n)=b(n)/A(n,n); for k=n-1:-1:1

X(k)=(b(k)-sum(A(k,k+1:n)*X(k+1:n)))/A(k,k);

end else

disp('请注意:因为RA=RB

end end

例3.2.2 用解上三角形线性方程组的MATLAB 程序解方程组

⎪⎪

⎪⎪⎨

⎧==+-=-+-=++-.63,456,7472,203254434

324321x x x x x x x x x x . 解 在MATLAB 工作窗口输入程序

>>A=[5 -1 2 3;0 -2 7 -4;0 0 6 5;0 0 0 3]; b=[20; -7; 4;6];

[RA,RB,n,X]=shangsan(A,b)

运行后输出结果

请注意:因为RA=RB=n ,所以此方程组有唯一解. RA = RB =

4, 4, n =

4,

X =[2.4 -4.0 -1.0 2.0]’

3.3 高斯(Gauss )消元法和列主元消元法及其MATLAB 程序

3.3.1 高斯消元法及其MATLAB 程序

用高斯消元法解线性方程组b AX =的MATLAB 程序

f unction [RA,RB,n,X]=gaus(A,b)

B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0,

disp('请注意:因为RA~=RB ,所以此方程组无解.') return end

if RA==RB if RA==n

disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1

for k=p+1:n

m= B(k,p)/ B(p,p);

B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end end

b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1

X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end

else

disp('请注意:因为RA=RB

例3.3.2 用高斯消元法和MATLAB 程序求解下面的非齐次线性方程组,并且用逆矩阵解方程组的方法验证.

⎪⎪⎩⎪⎪⎨

⎧-=+---=+--=+--=-+-.

142,16422,0,13432143214324321x x x x x x x x x x x x x x x 解 在MATLAB 工作窗口输入程序

>> A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -4 1]; b=[1;0; -1;-1]; [RA,RB,n,X] =gaus (A,b)

运行后输出结果

请注意:因为RA=RB=n ,所以此方程组有唯一解. RA =

4

RB =

4

n =

4

3.3.2 列主元消元法及其MATLAB 程序

用列主元消元法解线性方程组b AX =的MATLAB 程序

function [RA,RB,n,X]=liezhu(A,b)

B=[A b]; n=length(b); RA=rank(A);

X = 0 -0.5000 0.5000 0