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

上传人:b****2 文档编号:2313159 上传时间:2022-10-28 格式:DOCX 页数:23 大小:205.58KB
下载 相关 举报
MATLAB解线性方程组的直接方法.docx_第1页
第1页 / 共23页
MATLAB解线性方程组的直接方法.docx_第2页
第2页 / 共23页
MATLAB解线性方程组的直接方法.docx_第3页
第3页 / 共23页
MATLAB解线性方程组的直接方法.docx_第4页
第4页 / 共23页
MATLAB解线性方程组的直接方法.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

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

《MATLAB解线性方程组的直接方法.docx》由会员分享,可在线阅读,更多相关《MATLAB解线性方程组的直接方法.docx(23页珍藏版)》请在冰豆网上搜索。

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

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

 

 

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

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

3.1.3线性方程组有解的判定条件及其MATLAB?

判定线性方程组AmnX二b是否有解的MATLA醉序

end

function[RA,RB,n]=jiepb(A,b)B=[Ab];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;

if

zhica>0,

disp('请注意:

因为RA~=RB,所以此方程组无解.')

return

end

if

RA==RB

ifRA==n

disp('请注意:

因为RA=RB=n,所以此方程组有唯一解.')

else

disp('请注意:

因为RA=RB

end

解在MATLABT作窗口输入程序

>>A=[23-15;312-7;41-36;1-24-7];

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

运行后输出结果为

请注意:

因为RA=RB=n,所以此方程组有唯一解

RA=4,RB=4,n=4

在MATLABT作窗口输入

>>X=A\b,

运行后输出结果为X=(0000)'.

(2)在MATLABT作窗口输入程序

>>A=[34-57;2-33-2;411-1316;7-213];b=[0;0;0;0];

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

运行后输出结果

请注意:

因为RA=RB

RA=2,RB=2,n=4

(3)在MATLABT作窗口输入程序

>>A=[42-1;3-12;1130];b=[2;10;8];[RA,RB,n]=jiepb(A,B)

运行后输出结果

请注意:

因为RA~=RB,所以此方程组无解•

RA=2,RB=3,n=3

(4)在MATLABT作窗口输入程序

>>A=[21-11;42-21;21-1-1];

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

运行后输出结果

请注意:

因为RA=RB

RA=2,RB=2,n=3

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

3.2.2解三角形方程组的MATLAB?

解上三角形线性方程组AX二b的MATLAB^序

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

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

RB=rank(B);zhica=RB-RA;

ifzhica>0,

disp('请注意:

因为RA~=RB,所以此方程组无解.')return

end

ifRA==RB

ifRA==n

disp('请注意:

因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);X(n)=b(n)/A(n,n);

fork=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程序解方程组

馭-x2+2x3+3x4=20,

*-2X2+7X3-4X4=-7,

|6x3+5X4=4,

J3X4=6.

解在MATLABT作窗口输入程序

>>A=[5-123;0-27-4;0065;0003];

b=[20;-7;4;6];

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

运行后输出结果

请注意:

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

RA=RB=

4,4,

3.3高斯(GausS消元法和列主元消元法及其MATLA程序

3.3.1高斯消元法及其MATLAB?

用高斯消元法解线性方程组AX二b的MATLA龍序

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

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

RB=rank(B);zhica=RB-RA;

ifzhica>0,

disp('请注意:

因为RA~=RB,所以此方程组无解.')return

end

ifRA==RB

ifRA==n

disp('请注意:

因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1);

forp=1:

n-1

fork=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);

forq=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

end

end

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

阵解方程组的方法验证.

乙一x2x3—3x4=1,

-X2-X3+X4=0,2X1-2x?

-4X3'6X4=—1,

Ix1-2x2-4x3x4--1.解在MATLABT作窗口输入程序

>>A=[1-11-3;0-1-11;2-2-46;1-2-41];

b=[1;0;-1;-1];[RA,RB,n,X]=gaus(A,b)

运行后输出结果

RA=

RB=

4

n=

请注意:

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

X=

0-0.50000.5000

3.3.2列主元消元法及其MATLAB?

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

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

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

RB=rank(B);zhica=RB-RA;ifzhica>0,

disp('请注意:

因为RA~=RB,所以此方程组无解.')return

end

ifRA==RB

ifRA==n

disp('请注意:

因为RA=RB=n,所以此方程组有唯一解.')X=zeros(n,1);C=zeros(1,n+1);

forp=1:

n-1

[Y,j]=max(abs(B(p:

n,p)));C=B(p,:

);B(p,:

)=B(j+p-1,:

);B(j+p-1,:

)=C;

fork=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);

forq=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

end

end

例333用列主元消元法解线性方程组的MATLAB程序解方程组

—X2—X3+X4=0,

X1-X2+X3-3X4=1,

_2x2_4x36x4=-1,

x1_2x2_4x3x4=_1.

解在MATLABT作窗口输入程序

>>A=[0-1-11;1-11-3;2-2-46;1-2-41];

b=[0;1;-1;-1];[RA,RB,n,X]=liezhu(A,b)

运行后输出结果

请注意:

因为RA=RB=n,所以此方程组有唯一解•

RA=4,RB=4,n=4,X=[0-0.50.50]'

3.4LU分解法及其MATLA程序

3.4.1判断矩阵LU分解的充要条件及其MATLAB?

判断矩阵A能否进行LU分解的MATLAB^序

functionhl=pdLUfj(A)

[nn]=size(A);RA=rank(A);ifRA~=n

disp('请注意:

因为A的n阶行列式hl等于零,所以A不能进行LU分解.A

的秩RA如下:

'),RA,hl=det(A);return

endifRA==n

forp=1:

n,h(p)=det(A(1:

p,1:

p));,end

hl=h(1:

n);

fori=1:

n

ifh(1,i)==0

disp('请注意:

因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:

'),hl;RA,return

end

end

ifh(1,i)~=0

disp('请注意:

因为A的各阶主子式都不等于零,所以A能进行LU分

解.A的秩RA和各阶顺序主子式值hl依次如下:

')

hl;RA

end

例341

end

1

2

3、

1

2

3'

q

2

3、

1

12

7

(2)

1

2

7

;(3)

1

2

3

I4

5

6」

I4

5

6>

1

<4

5

6」

判断下列矩阵能否进行

LU分解,并求矩阵的秩

(1)

(1)在MATLA工作窗口输入程序

>>A=[123;1127;456];hl=pdLUfj(A)

运行后输出结果为

A能进行LU分解.A的秩RA和

请注意:

因为A的各阶主子式都不等于零,所以各阶顺序主子式值hl依次如下:

RA=3,hl=110-48

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

>>A=[123;127;456];hl=pdLUfj(A)

运行后输出结果为

请注意:

因为A的r阶主子式等于零,所以A不能进行LU分解.A的秩RA和各阶顺序主子式值hl依次如下:

RA=3,hl=1012

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

>>A=[123;123;456];hl=pdLUfj(A)运行后输出结果为

请注意:

因为A的n阶行列式hl等于零,所以A不能进行LU分解.A的秩RA如下

RA=2,hl=0

3.4.2直接LU分解法及其MATLA程序

将矩阵A进行直接LU分解的MATLAB^序

functionhl=zhjLU(A)

[nn]=size(A);RA=rank(A);ifRA~=n

disp('请注意:

因为A的n阶行列式hl等于零,所以A不能进行LU分解.A

的秩RA如下:

’),RA,hl=det(A);

return

endifRA==nforp=1:

n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1