消元法实验报告8Word文档格式.docx

上传人:b****3 文档编号:16762035 上传时间:2022-11-25 格式:DOCX 页数:10 大小:32.11KB
下载 相关 举报
消元法实验报告8Word文档格式.docx_第1页
第1页 / 共10页
消元法实验报告8Word文档格式.docx_第2页
第2页 / 共10页
消元法实验报告8Word文档格式.docx_第3页
第3页 / 共10页
消元法实验报告8Word文档格式.docx_第4页
第4页 / 共10页
消元法实验报告8Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

消元法实验报告8Word文档格式.docx

《消元法实验报告8Word文档格式.docx》由会员分享,可在线阅读,更多相关《消元法实验报告8Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

消元法实验报告8Word文档格式.docx

实验内容及数据来源

用列主元消去法计算方程组

实验步骤

步骤一:

编写列主元消去法的程序。

打开Editor编辑器,输入以下语句:

functionmaintest2

clc

clearall

%num=input('

pleaseinputtheordern='

%A=zeros(num,num);

%fori=1:

num

%forj=1:

%A(i,j)=input('

'

);

%end

%end

%A

%ifdet(A)~=0

%b(i)=input('

%b=b'

A=[123;

135;

136];

%系数矩阵

b=[234]'

%常数项

num=length(b)

fork=1:

num-1

fori=k+1:

ifA(k,k)~=0

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

A(i,:

)=A(i,:

)-A(k,:

).*l;

b(i)=b(i)-b(k)*l;

end

end

A

B

%回代求x

x(num)=b(num)/A(num,num);

fori=num-1:

-1:

1

sum=0;

forj=i+1:

sum=sum+A(i,j)*x(j);

x(i)=(b(i)-sum)/A(i,i);

x

运算结果

A=

123

012

001

 

b=

2

1

x=

1-11

实验结论

高斯消元能很好的求解线性方程组,和用克莱姆法则求解方程组该算法简单而且计算次数少。

但是高斯顺序消元是有缺陷的,它并没有考虑主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。

实验2

列主元消去法计算线性方程组

高斯顺序消元法最后指出了在逐次消元过程中,如果主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。

为了使消元过程中见效舍入误差和不至于中断,我们可以不按照自然顺序进行消元。

事实上,在第

步消元的时候,我们不一定选取

作为主元,而从同列

中选择绝对值最大的作为主元素,即使

如此我们就得到了列主元消去法。

functionmaintest

n=input('

A=zeros(n,n);

fori=1:

n

forj=1:

A(i,j)=input('

ifdet(A)~=0

b(i)=input('

b=b'

zengguang=[A,b]

n-1

%%取出各列绝对值最大的放在上面作为主元

[Y,j]=max(abs(zengguang(k:

n,k)));

C=zengguang(k,:

zengguang(k,:

)=zengguang(j+k-1,:

zengguang(j+k-1,:

)=C;

%高斯消元

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

zengguang(i,k:

n+1)=zengguang(i,k:

n+1)-m*zengguang(k,k:

n+1);

b=zengguang(1:

n,n+1);

A=zengguang(1:

n,1:

n);

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

fori=n-1:

把文件以maintest.m为文件名保存。

步骤二:

解方程。

在命令窗口输入:

pleaseinputtheordern=3

并且输入系数矩阵

135

136

输入常数项为

3

4

得到增广矩阵为:

zengguang=

1232

1353

1364

运行结果得到

把向量计算得到的解向量代入原方程,可以发现符合的还是比较好的。

这说明了列主元消去法计算这一类方程的有效性。

事实上,对于普通Gauss消去法的修正,还可以有行主元消去法,全主元消去法。

但是全主元消去法相对于行、列主元消去法的工作量要大的多。

所以列主元消去法是解线性方程组实用的方法之一。

实验3

高斯全主元消去法解线性方程组

全主元消去法是对于一般的矩阵,每一步都要处理的矩阵中选取绝对值最大的元素最为主元,从而使高斯消去具有更好的数值稳定性的方法。

用高斯全主元消去法计算方程组

编写求上三角矩阵线性方程组的函数。

functionx=SolveUpTriangle(A,b)

%求上三角系数矩阵的线性方程组Ax=b的解

%线性方程组的系数矩阵:

%线性方程组中的常数向量:

b

%线性方程组的解:

N=size(A);

n=N

(1);

fori=n:

if(i<

n)

s=A(i,(i+1):

n)*x((i+1):

n,1);

else

s=0;

x(i,1)=(b(i)-s)/A(i,i);

把文件以SolveUpTriangle.m为文件名保存。

编写高斯全主元消去的算法。

%利用高斯全主元消去法求AX=b方程组的解

A=[3200;

1420;

0121;

00-11]

b=[572-2]'

n=N

(1);

index_l=0;

index_r=0;

order=1:

n;

%记录未知数顺序的向量

(n-1)

me=max(max(abs(A(i:

n,i:

n))))%选取全主元

fork=i:

forr=i:

if(abs(A(k,r))==me)

index_l=k;

index_r=r;

%保存主元所在的行和列

k=n;

break;

temp=A(i,1:

A(i,1:

n)=A(index_l,1:

A(index_l,1:

n)=temp;

bb=b(index_l);

b(index_l)=b(i);

b(i)=bb;

%交换主行

temp=A(1:

n,i);

A(1:

n,i)=A(1:

n,index_r);

n,index_r)=temp;

%交换主列

pos=order(i);

order(i)=order(index_r);

order(index_r)=pos;

%主列的交换会造成未知数顺序的变化

forj=(i+1):

if(A(i,i)==0)

disp('

对角元素为0!

return;

l=A(j,i);

m=A(i,i);

A(j,1:

n)=A(j,1:

n)-l*A(i,1:

n)/m

b(j)=b(j)-l*b(i)/m

x=SolveUpTriangle(A,b);

%调用上三角系数矩阵求线性方程组的函数

y=zeros(n,1);

if(order(j)==i)

y(i)=x(j);

end%恢复未知数原来的顺序

x=y;

XA=A;

把文件以GaussQuanzhuyuan.m为文件名保存。

运行上面这段程序得到计算结果:

4.00001.00002.00000

02.5000-1.00000

001.40001.0000

0001.7143

7.0000

1.5000

0.4000

-1.7143

1.0000

-1.0000

虽然全主元消去法的求解结果更加可靠,高斯消去具有更好的数值稳定性。

但是由于全选主元每步消耗的时间更多,而且要进行列交换,那么所求未知量x1,x2,……xn的顺序就会被打乱,因此,时间应用中一般使用列主元消去法。

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

当前位置:首页 > 初中教育 > 学科竞赛

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

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