Gauss消去法实验报告.doc

上传人:李医生 文档编号:5694491 上传时间:2020-07-22 格式:DOC 页数:6 大小:120.50KB
返回 下载 相关 举报
Gauss消去法实验报告.doc_第1页
第1页 / 共6页
Gauss消去法实验报告.doc_第2页
第2页 / 共6页
Gauss消去法实验报告.doc_第3页
第3页 / 共6页
Gauss消去法实验报告.doc_第4页
第4页 / 共6页
Gauss消去法实验报告.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Gauss消去法实验报告.doc》由会员分享,可在线阅读,更多相关《Gauss消去法实验报告.doc(6页珍藏版)》请在三一文库上搜索。

1、Gauss消去法实验报告学院:教师教育学院专业:数学与应用数学(师范)实验名称使用matlab编写gauss消去法程序指导教师孙老师姓名郑碧玉年级2011学号22110631成绩实验一、gauss消去法解线性方程组一、实验目的:、学习使用matlab编写数值计算程序。、了解gauss消去法的基本原理和解法思路及相应的编程方法。、根据gauss消去法的原理编写matlab程序,并运行出相应的结果,提高matlab编程能力。二、实验原理:消元过程:设,令乘数,做(消去第i个方程组的)操作第1个方程+第i个方程(i=2,3,.n)则第i个方程变为这样消去第2,3,。,n个方程的变元后。原线性方程组变

2、为:这样就完成了第1步消元。回代过程:在最后的一方程中解出,得:再将的值代入倒数第二个方程,解出,依次往上反推,即可求出方程组的解:其通项为三、实验内容与步骤:、实验内容:依照实验原理编写gauss消去法的程序。、实验步骤:首先,在电脑上安装matlab,然后,启动matlab,新建一个M文件。程序代码程序代码说明function x=gauss(A,b) n=length(A);a=A,b;for k=1:n-1 for i=k+1:na(i,k)=a(i,k)/a(k,k);for j=k+1:na(i,j)=a(i,j)-a(i,k)*a(k,j);endb(i)=b(i)-a(i,k)

3、*b(k);endendx=zeros(n,1);x(n)=b(n)/a(n,n); for k=n-1:-1:1s=b(k);for j=k+1:ns=s-a(k,j)*x(j);endx(k)=s/a(k,k);endx调用M文件gauss. m形成增广矩阵计算乘子对k+1n项进行消元%增广矩阵第i行减去第k行的乘子倍目的是将该矩阵中的第k列中a(k,k)以下的元素全部消为零回代求解%此循环用来求a(j,k)*x(j)由k+1n项的和%输出最终的解X四、实验数据及结果:、实验送的初值为:A=0.729,0.810,0.900;1.000,1.000,1.000;1.331,1.210,1.

4、100b=0.6867;0.8338;1.0000、实验结果为:X =0.2245 0.2814 0.3279五、实验分析:1.在本次实验中要先新建M文件并存储,以便实验中多次调试,减少每次输入的麻烦2.在本次实验中,很容易把矩阵中各元素的下标写错,因为编程技术还不够熟练,所以在使用数学指令上还不够全面,这在以后的实验中是应该加强训练的。3.通过本次实验也增强了我对matlab这个软件的了解,尤其是循环语句的使用。4.输入矩阵时的分行符号是英文分号而不是中文分号,否则会出现运行错误。 实验二、列主元法解线性方程组一、实验目的:、学习使用matlab编写数值计算程序。、了解列主元消去法的基本原理

5、和解法思路及相应的编程方法。、根据列主元法的原理编写matlab程序,并运行出相应的结果,提高matlab编程能力。二、实验原理:由一般线性方程组在使用Gauss消去法求解时,从求解过程中可以清楚地看到,若,必须施以行交换的手续,才能使消去过程继续下去。有时既使,但其绝对值很小,由于舍入误差的影响,消去过程也会出现不稳定现象。因此,为使这种不稳定现象发生的可能性减至最小,在施行消去过程时每一步都要选主元素,即要寻找行,使并将第行与第行交换,以使的当前值(即的数值)远大于0。这种列主元消去法的主要步骤如下:1消元过程 对,做 1 选主元,记 若,说明方程组系数矩阵奇异,则停止计算,否则进行2。

6、2 交换(增广矩阵)的两行元素 3 计算2回代过程 对,计算三、实验内容与步骤:、实验内容:依照实验原理编写列主元消去法的程序。、实验步骤:首先,在电脑上安装matlab,然后,启动matlab,新建一个M文件。程序代码程序代码说明function x=gauss(A,b) n=length(A);a=A,b;for k=1:n-1maxa=max(abs(a(k:n,k);if maxa=0return;endfor i=k:nif abs(a(i,k)=maxay=a(i,k:n+1);a(i,k:n+1)=a(k,k:n+1);a(k,k:n+1)=y;break;endendfor i

7、=k+1:nl(i,k)=a(i,k)/a(k,k);a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1);endend%回代if a(n,n)=0returnendx(n)=a(n,n+1)/a(n,n);for i=n-1:-1:1x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)/a(i,i);endx调用M文件gauss. m形成增广矩阵%选出每列中绝对值最大的数%如果最大的数为零,则矩阵奇异,停机退出%进行行变换计算乘子对k+1n项进行消元回代求解%输出最终的解X实验程序如下:四、实验数据及结果:、实验送的初值为:A

8、=0.729,0.810,0.900;1.000,1.000,1.000;1.331,1.210,1.100b=0.6867;0.8338;1.0000实验结果为:X=0.2246 0.2812 0.3280五、实验分析:1.在本次实验中要先新建M文件并存储,以便实验中多次调试,减少每次输入的麻烦2.在本次实验中,很容易把maxa=max(abs(a(k:n,k)的多个小括号给漏掉,造成运行中的语法错误这在以后的实验中是应该加强训练的。3.通过本次实验也增强了我对matlab这个软件的了解,尤其是循环语句的使用。4.输入矩阵时的分行符号是英文分号而不是中文分号,否则会出现运行错误。5.在没有语法错误及其他提示的情况下,运行结果错误,可以进行动态定点定位查询,方便检查错误

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1