列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx

上传人:b****2 文档编号:14826587 上传时间:2022-10-25 格式:DOCX 页数:14 大小:353.55KB
下载 相关 举报
列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx_第1页
第1页 / 共14页
列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx_第2页
第2页 / 共14页
列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx_第3页
第3页 / 共14页
列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx_第4页
第4页 / 共14页
列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx

《列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

列主元高斯消去法和列主元三角分解法解线性方程041514Word格式文档下载.docx

1、列主元高斯消去法

设有线性方程组Ax=b,其中设A为非奇异矩阵。

方程组的增广矩阵为

第1步(kJ):

首先在A的第一列中选取绝对值最大的元素切,作为第一步

的主兀素:

然后交换(A,b)的第1行与第I行元素,再进行消元计算。

设列主元素消去法已经完成第1步到第k<

L步的按列选主元,交换两行,消元

计算得到与原方程组等价的方程组A(k)x二b(k)

第k步计算如下:

对于k=l»

2,…,n-1

(1)按列选主元:

即确定t使

(2)如果tHk,则交换[A,b]第t行与第k行元素。

(3)消元计算

%J片加=——,(i=k+1,・••,〃)

Clkk

aj%+叫,(:

j=*+1,…/)

bj叫片(j=k+l,・・・M)

(4)回代求解

2、列主元三角龙卿•法

对方程组的增广矩卩轻=[人如过k-1步分解后,可变成如下形式:

M11

W12

…5"

%

•••

…%

>

1

W22

…"

li2k

♦••

皿j

…"

2”

91.2

m

Uk-\.k

3

in

♦♦•

…%

bk

第k步分解,为了避免用绝对值很小的数5作除数,引进量

'

女-】

ukj一E—%(丿・=£

k+1,…M;

*=1,2,…/)

m-1

<

&

-1

/汝=(血一)/%(,=k+1,£

+2,・・•/;

=1,2,•••丿)

.wr-l

行与第k行元素互换,将(i,j)位置的新元素仍记为'

力或5,然后再做第k步分解,这时

%=sk(sk即交换前的耳),

lik=6Isk(j=k+l,k+2,・・・,〃)

且|Z;

J<

1(i=R+l,R+2,•••,“),

【列主元高斯消去法程序流程图】

%列主元法高斯消去法解线性方程Ax=b

%判断输入的方程组是否有误

【列主元高斯消去法Matlab主程序】

functionx=gaussl(A,b,c)if(length(A)"

=length(b))disp('

输入方程有误!

)return;

end

disp(*原方程为AX=b:

'

)%显示方程组

A

b

dispC•)n=length(A);

fork=l:

n-l%找列主元

[p,q]=max(abs(A(k:

n,k)));

%找出第k列中的最大值,其下标为[p,q]

q=q+k-l;

%q在A(k:

n,k)中的行号转换为在A中的行号

讦abs(p)<

c

disp('

列元素太小,det(A)QO'

);

break;

%列主元所在行不是当前行,将当前行与列主元所在行交换(包括b)

else讦q>

ktempl=A(k,:

A(k,:

)=A(q/:

A(q/)=templ;

temp2=b(k,:

b(k,:

)=b(q,:

b(q,:

)=temp2;

%消元

fori=k+l:

n

m(i,k)=A(i,k)/A(k,k);

%A(k,k)将A(i,k)i肖为0所乘系数

A(i/k:

n)=A(i/k:

n)-m(i,k)*A(k,k:

n);

%第i行消元处理b(i)=b(i)-m(i?

k)*b(k);

%b消元处理

dispC消元后所得到的上三角阵是J

A%显示消元后的系数矩阵

b(n)=b(n)/A(n,n);

%回代求解・

fori=n-l:

-l:

l

b(i)=(b(i)-sum(A(izi+l:

n)*b(i+l:

n)))/A(izi);

clearx;

AX=b的解x是J

x=b;

【调用函数解题】

CommandWindow

»

A=[034;

1-11:

212];

b=[l;

2;

3];

c二0・00001:

x=gaussl(Ajb,c)

原方程为AX二b:

034

1-11

212

b二

2

消元后所得到的上三角蹲是

A=

002

AS二b的斛垃是

X=

1.1667

-0.3333

0.5000

【列主元三角分解法程序流程图]

【列主元三角分解法Matlab主程序】①自己编的程序:

functionx=PLU(A,b,eps)if(length(A)"

return;

disp(■原方程为AX=b:

%定义函数列主元三角分解法函数

%显示方程组

Ab

disp(**)

n=length(A);

A二[Ab];

%将人与b合并,得到增广矩阵

forr=l:

ifr==l

fori=l:

[cd]=max(abs(A(:

l)));

%选取最大列向量,并做行交换

讦c<

=eps%最大值小于e,主元太小,程序结束

break;

else

d=d+l-l;

P=A(1,:

);

A(l,:

)=A(d,:

A(d,:

)=p;

A(l,i)=A⑴i);

A(l,2:

n)=A(lz2:

A(2:

n/l)=A(2:

n/l)/A(l,l);

%求u(lzi)

elseu(r/r)=A(r/r)-A(r,l:

r-l)*A(l:

r-lzr);

%按照方程求取u(r,i)

ifabs(u(r,r))<

=eps%如果u(r,r)小于e,则交换行P=A(r,:

A(r,:

)=A(r+l/:

A(r+l/)=p;

fori=r:

A(rzi)=A(r,i)-A(r,l:

r-l/i);

%根据公式求解,并把结果存在矩阵A中

fori=r+l:

A(i/r)=(A(i/r)-A(i/l:

r-l,r))/A(r,r);

%根据公式求解,并把结果存在矩阵A中end

y(l)=A(l,n+l);

fori=2:

h=0;

i-l

h=h+A(i,k)*y(k);

y(i)=A(i,n+l)-h;

%根据公式求解y(i)

x(n)=y(n)/A(n,n);

fork=i+l:

h=h+A(i/k)*x(k);

x(i)=(y(i)-h)/A(i,i);

%根据公式求解x(i)

AX=b的解x是'

x=x]%输出方程的解

②可直接得到P儿U并解出方程解的的程序(查阅资料得子函数PLU1,其作用是将矩阵A分解成L乘以U的形式。

PLU2为调用PLU1解题的程序,是自己编的)

(I).

function[I,u/P]=PLU1(A)%定义子函数,其功能为列主元三角分解系数矩阵A[m,n]=size(A);

%判断系数矩阵是否为方阵

errorf矩阵不是方阵J

return

ifdet(A)==O%判断系数矩阵能否被三角分解

error)'

矩阵不能被三角分解J

u=A;

p=eye(m);

l=eye(m);

%将系数矩阵三角分解,分别求出P,L,U

forj=i:

t(j)=u(j,i);

t(j)=t(j)-u(j,k)*u(k,i);

a=i;

b=abs(t(i));

forj=i+l:

ifb<

abs(t(j))

b=abs(t(j));

a=j;

讦a~=i

forj=l:

c=u(i,j);

u(i,j)=u(aj);

u(a,j)=c;

mc=P(iJ);

P(iJ)=P(aJ);

P(a,j)=c;

c=t(a);

t(a)=t(0;

t(i)=c;

endu(i,i)=t(i);

mu(j,i)=t(j)/t(i);

endforj=i+l:

mfork=l:

i-lu(ij)=u(ij)-u(izk)*u(kj);

l=tril(uz-l)+eye(m);

u二triu(u’O)

(II).

functionx=PLU2(A,b)

[Izu/P]=PLU1(A)

%定义列主元三角分解法的函数

%调用PLU分解系数矩阵A

m=length(A);

v=b;

forq=l:

%由于A左乘p,故b也要左乘p

b(q)=sum(p(q/l:

m)*v(l:

m,l));

end

b(l)=b(l)%求解方程Ly二b

l:

b(i)=(b(i)-sum(l(i,l:

i-l)

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

当前位置:首页 > 农林牧渔 > 林学

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

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