计算方法线性方程组实验报告.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:10 大小:62KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

计算方法线性方程组实验报告.doc

计算方法线性方程组实验报告.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

西京学院数学软件实验任务书课程名称数学软件实验班级学号姓名实验课题线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验目的熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法实验要求运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成实验内容线性方程组高斯消去法线性方程组高斯列主元消去法线性方程组高斯全主元消去法成绩教师实验1线性方程组高斯消去法高斯顺序消去法是一种古老的求解线性方程组的方法,对于线性方程组,作如下运算不会改变方程组的解:1)交换任意两个方程的顺序。2)方程中组任一方程乘上一个非零数。3)方程组中任一方程加上另一个方程的倍数。这是高斯消元的理论依据。实验内容及数据来源用列主元消去法计算方程组实验步骤步骤一:编写列主元消去法的程序。打开Editor编辑器,输入以下语句:functionmaintest2clcclearall%num=input('pleaseinputtheordern=')%A=zeros(num,num);%fori=1:num%forj=1:num%A(i,j)=input('');%end%end%A%ifdet(A)~=0%fori=1:num%b(i)=input('');%end%b=b'A=[123;135;136];%系数矩阵b=[234]'%常数项num=length(b)fork=1:num-1fori=k+1:numifA(k,k)~=0l=A(i,k)/A(k,k);A(i,:)=A(i,:)-A(k,:).*l;b(i)=b(i)-b(k)*l;endendendAB%回代求xx(num)=b(num)/A(num,num);fori=num-1:-1:1sum=0;forj=i+1:numsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endxend运算结果A=123012001b=211x=1-11实验结论高斯消元能很好的求解线性方程组,和用克莱姆法则求解方程组该算法简单而且计算次数少。但是高斯顺序消元是有缺陷的,它并没有考虑主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。实验2列主元消去法计算线性方程组高斯顺序消元法最后指出了在逐次消元过程中,如果主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。为了使消元过程中见效舍入误差和不至于中断,我们可以不按照自然顺序进行消元。事实上,在第步消元的时候,我们不一定选取作为主元,而从同列中选择绝对值最大的作为主元素,即使如此我们就得到了列主元消去法。实验内容及数据来源用列主元消去法计算方程组实验步骤步骤一:编写列主元消去法的程序。打开Editor编辑器,输入以下语句:functionmaintestclcclearalln=input('pleaseinputtheordern=')A=zeros(n,n);fori=1:nforj=1:nA(i,j)=input('');endendAifdet(A)~=0fori=1:nb(i)=input('');endb=b'zengguang=[A,b]fork=1:n-1%%取出各列绝对值最大的放在上面作为主元[Y,j]=max(abs(zengguang(k:n,k)));C=zengguang(k,:);zengguang(k,:)=zengguang(j+k-1,:);zengguang(j+k-1,:)=C;%高斯消元fori=k+1:nm=zengguang(i,k)/zengguang(k,k);zengguang(i,k:n+1)=zengguang(i,k:n+1)-m*zengguang(k,k:n+1);endendend%回代求xb=zengguang(1:n,n+1);A=zengguang(1:n,1:n);x(n)=b(n)/A(n,n);fori=n-1:-1:1sum=0;forj=i+1:nsum=sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);endxend把文件以maint