欢迎来到天天文库
浏览记录
ID:44050010
大小:77.33 KB
页数:7页
时间:2019-10-18
《数值分析解线性代数方程组的迭代法和非线性方程的求根实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、华北科技学院上机报告系(部)基础部专业.班级计算Bill姓名学号课程名称数值分析上机题目解线性代数方程组的迭代法和非线性方程的求根实验任课教师李慧指导教师奎惹成绩(优、良、中、及格、不及格)华北科技学院基础部一.实验目的1.熟悉求解线性方程组的有关理论和方法。会利用雅可比迭代和高斯一塞得尔迭代法求解线性方程组。通过实际计算,进一步了解各算法的优缺点,选择合适的数值方法。2.通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点;3.编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。实验环
2、境及要求MATLAB软件等。三.实验学时2学时四.实验内容1.1•解线性方程组的迭代法:雅可比迭代和髙斯一塞得尔迭代法;2.非线性方程的求根:二分法、牛顿法。五.实验题及结果1.用雅克比迭代法解方程组5兀+2矩+兀3=8V2%
3、+8%2_3%3=21兀一3兀2-6矩=1程序:Jacobi.m文件:functionsolution=Jacobi(Ab,epsilon)ifnargin==ldispC请输入精度epsilon*);returnendrow=size(Ab,l);col=size(Ab,2);if〜ismatrix(A
4、b)llcol-row〜=1dispC矩阵大小有误,不能使用Jacobi迭代法*)returnendA=Ab(:,l:row);b=Ab(:,col);ddet=abs(det(A));ddiag=abs(det(diag(diag(A))));ifddet5、nv*(L+U);f=Dinv*b;ifmax(abs(eig(B)))>=1disp(*迭代法不收敛!!!');returnenderror=10;start=zeros(row,1);xk=start;xknext=B*xk+f;error=norm(xk・xknext);whileerror>epsilonxk=xknext;xknext=B*xk+f;error=norm(xk-xknext);endsolution=xknext;Jacobi1.m文件:A二[5,2,1,8;2,8,・3,21;1,・3,・6,1];J6、acobi(A,0.0001)结果:»Jacobi1ans=1.00002.0000-1.0000可知结果为:Xl=1.0000,X2=2.0000,X3=-1.0000;1.用高斯•塞德尔迭代法解方程组8x1-3x2+2x3=20<4x1+11x2—^3=336x1+3x2+12x3=36程序:GaussSeidel.m函数文件:functionsolution=GaussSeidel(Ab,epsilon)讦nargin==ldispC请输入精度要求epsilon*)returnendrow=size(Ab,l);col=s7、ize(Ab,2);讦〜ismatrix(Ab)llcol-row〜=1dispC矩阵大小有误,不能使用高斯塞徳尔迭代法')returnendA=Ab(:J:row);b=Ab(:,col);ddet=abs(det(A));ddiag=abs(det(diag(diag(A))));ifddet8、g(A));G=(D-L)A(-1)*U;ifmax(abs(eig(G)))>=1dispC迭代法不收敛!!!*)returnenderror=10;n=row;start=zeros(rowj);xk=start;xknext=start;whileerror>epsilonxk=xknext;xknext(1)=1/A(1,1)*(b(1)-sum(A(l,2:n).*xk(2:n)'));fori=2:n-lSsuml=sum(A(i,l:i-l).*xk(l:i-1)*);Ssum2=sum(A(i,i4-l:n).*9、xknext(i+l:n)');xknext(i)=1/A(i,i)*(b(i)-Ssum1-Ssum2);endxknext(n)=l/A(n,n)*(b(n)-sum(A(n,l:n-l).*xknext(l:n-l)'));error=norm(xk・xk
5、nv*(L+U);f=Dinv*b;ifmax(abs(eig(B)))>=1disp(*迭代法不收敛!!!');returnenderror=10;start=zeros(row,1);xk=start;xknext=B*xk+f;error=norm(xk・xknext);whileerror>epsilonxk=xknext;xknext=B*xk+f;error=norm(xk-xknext);endsolution=xknext;Jacobi1.m文件:A二[5,2,1,8;2,8,・3,21;1,・3,・6,1];J
6、acobi(A,0.0001)结果:»Jacobi1ans=1.00002.0000-1.0000可知结果为:Xl=1.0000,X2=2.0000,X3=-1.0000;1.用高斯•塞德尔迭代法解方程组8x1-3x2+2x3=20<4x1+11x2—^3=336x1+3x2+12x3=36程序:GaussSeidel.m函数文件:functionsolution=GaussSeidel(Ab,epsilon)讦nargin==ldispC请输入精度要求epsilon*)returnendrow=size(Ab,l);col=s
7、ize(Ab,2);讦〜ismatrix(Ab)llcol-row〜=1dispC矩阵大小有误,不能使用高斯塞徳尔迭代法')returnendA=Ab(:J:row);b=Ab(:,col);ddet=abs(det(A));ddiag=abs(det(diag(diag(A))));ifddet8、g(A));G=(D-L)A(-1)*U;ifmax(abs(eig(G)))>=1dispC迭代法不收敛!!!*)returnenderror=10;n=row;start=zeros(rowj);xk=start;xknext=start;whileerror>epsilonxk=xknext;xknext(1)=1/A(1,1)*(b(1)-sum(A(l,2:n).*xk(2:n)'));fori=2:n-lSsuml=sum(A(i,l:i-l).*xk(l:i-1)*);Ssum2=sum(A(i,i4-l:n).*9、xknext(i+l:n)');xknext(i)=1/A(i,i)*(b(i)-Ssum1-Ssum2);endxknext(n)=l/A(n,n)*(b(n)-sum(A(n,l:n-l).*xknext(l:n-l)'));error=norm(xk・xk
8、g(A));G=(D-L)A(-1)*U;ifmax(abs(eig(G)))>=1dispC迭代法不收敛!!!*)returnenderror=10;n=row;start=zeros(rowj);xk=start;xknext=start;whileerror>epsilonxk=xknext;xknext(1)=1/A(1,1)*(b(1)-sum(A(l,2:n).*xk(2:n)'));fori=2:n-lSsuml=sum(A(i,l:i-l).*xk(l:i-1)*);Ssum2=sum(A(i,i4-l:n).*
9、xknext(i+l:n)');xknext(i)=1/A(i,i)*(b(i)-Ssum1-Ssum2);endxknext(n)=l/A(n,n)*(b(n)-sum(A(n,l:n-l).*xknext(l:n-l)'));error=norm(xk・xk
此文档下载收益归作者所有